Can you please share the code so we can see what you are doing?
Jason moorepants.info +01 530-601-9791 On Wed, Jun 8, 2016 at 11:58 PM, <[email protected]> wrote: > I am trying to solve a system of equations with sympy that arises from a > constraint of the form: > > (A x B) x C = D > > where > > * A, B, C and D are 3x3 matrices > * the diagonal of D should be zero > * B is a "rigid motion 2D" transformation, with elements cos(phi), > +-sin(phi), x and y > * A and C are fully filled with (supposedly known) values > * I want to solve for phi, x and y > > This gives me four equations: > > * one for each diagonal element in D > * one additional (quadratic) equation sin^2(phi) + cos^2(phi) = 1 > > When feeding those to equations directly to sympy, this takes some hours > and then breaks with an out of memory message. > > My next approach was to help sympy by guiding the solution step by step > (*). > > * First i took two of the linear equations and let sympy solve for x and y > (works great) > * Instead of having cos(phi) and sin(phi) in the B matrix, i introduced > new symbols cosphi and sinphi > * Then i took the resulting expressions for x and y, and solve with the > third linear equation for the cosphi element (works too) > * Finally i tried to solve the quadratic equation for sinphi by inserting > the just gathered cosphi expression > * The last step was not feasible without transforming the expression to a > polynom in sinphi and by replacing all coefficient expressions by new > symbols, then it worked > > The resulting expressions for x, y and phi (written as python expressions) > are about 3 MB (!) of text. > > This does not seem to be adequate to the problem, and when converting to a > theano function i get "maximum recursion depth exceeded". > When i look at the expressions they are very repetitive, so i tried CSE, > which brings it down to about 30 KB, but they are still very repetitive and > full of patterns. > > I suspect that the resulting expressions actually just perform some matrix > operations, so probably there would be an efficient way to compute the > solution if only one could get back to matrix expressions. > I tried to guess what the appropriate matrix operations are, but without > success (**). And this feels of course very wrong and backwards. > > Is there some obvious approach to such problems that i missed? Is the > problem actually that hard? > > I am aiming for a mostly automated solution process without steps like (*) > and (**), because i have a hand full of very similar problems ahead ... > Any hint appreciated! > > -- > Best regards > Janosch > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/8555837f-d87d-484c-b882-2d8f7085d3b2%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/8555837f-d87d-484c-b882-2d8f7085d3b2%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAP7f1Ag5cWgJ8Z0P0Npi7quZFasi9Y14CCAV8N-aXi5cR2fk6A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
