Physically, the rows of A are three points fixed on a movable board. These points run freely in three linear bearings which are placed on a fixed base.
The linear bearings are described in hesse normal form in the rows of matrix C. The robust motion matrix B is the transformation which transforms points on the board to points in the base. So together my constraint D = (A * B) * C means - Transform the points in A from the board to the base: A * B - Compute the distance from the linear bearings: * C - Claim that the distances are zero and solve for the motion I am aware that there are some other approaches to tackle this problem, but i was not able to get a grip on them such that i could formulate them in code. On Saturday, June 11, 2016 at 1:50:25 PM UTC+2, brombo wrote: > > Physically what are all the matrices. Do A and C also describe > rotations. Please give the actual physics problem as well as the resulting > math. > > On Sat, Jun 11, 2016 at 6:37 AM, <[email protected] <javascript:>> > wrote: > >> My description was a little compressed, so i had to clean up the code to >> match my description again ... >> The code is available here: http://pastebin.com/MMW3B88h >> I hope its readable for you. >> >> >> >> Am Donnerstag, 9. Juni 2016 20:24:35 UTC+2 schrieb Jason Moore: >>> >>> 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] <javascript:>. >> To post to this group, send email to [email protected] <javascript:> >> . >> 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/ccde273d-ee0e-46bc-a822-7d1b9ff88f7e%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sympy/ccde273d-ee0e-46bc-a822-7d1b9ff88f7e%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/5254b594-15a7-41e3-8917-6f1635e43762%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
