Maurizio wrote: > Can you open a ticket to add this to the documentation? This certainly > deserves to be there!
http://trac.sagemath.org/sage_trac/ticket/5612 Jason > > On 25 Mar, 17:21, Jason Grout <jason-s...@creativetrax.com> wrote: >> Drini wrote: >> >>> On Mar 25, 9:22 am, kcrisman <kcris...@gmail.com> wrote: >>>> Is it possible that the cvxopt package could help out? Your problem >>>> is not convex optimization per se but maybe it would have something >>>> useful? This package uses LAPACK (also part of Sage), which "provides >>>> routines for solving systems of simultaneous linear equations". >>>> Also, is it possible (someone else will have to answer this) that >>>> using the Pynac symbolic variables could help out? But Maxima is >>>> called for solve, so perhaps that wouldn't really help... >>>> Or could you just use a big matrix and solve it that way? Maybe I am >>>> misinterpreting your question. >>>> I hope *one* of these ideas helps! >>>> - kcrisman >>> I'm going to check. Actually, what I'm trying to do is find the >>> vertices of a polytope given by some hyperplanes (therefore the linear >>> equations). I know about polymake, but it can't do symbolic >>> Like >>> ax+by = 3 >>> bx+dy=5 >>> a,b,c,d constants >>> I know I could get a matrix and use linear algebra to get a fast >>> solution without worrying about symbolics >>> but when the systems are like >>> ax+by=p >>> cx+dy=q >>> with a,b,c,d constants, the vector in Ax=b is not numeric, so I turn >>> to symbolic solving >>> (actually those are simplificatinos, I'm doing 9-variable systems) >>> Thatnks for the hints, I will check the options you meantioned >> Here it is using linear algebra: >> >> sage: var('a,b,c,d,x,y') >> (a, b, c, d, x, y) >> sage: A=matrix(2,[a,b,c,d]); A >> [a b] >> [c d] >> sage: result=vector([3,5]); result >> (3, 5) >> sage: soln=A.solve_right(result) # you could also do soln=A\result >> sage: soln >> (3/a - b*(5 - 3*c/a)/(a*(d - b*c/a)), (5 - 3*c/a)/(d - b*c/a)) >> >> Now, checking our answers: >> >> sage: (a*x+b*y).subs(x=soln[0],y=soln[1]).simplify_full() >> 3 >> sage: (c*x+d*y).subs(x=soln[0],y=soln[1]).simplify_full() >> 5 >> >> Or just checking it with matrix multiplication: >> >> sage: A*soln >> (a*(3/a - b*(5 - 3*c/a)/(a*(d - b*c/a))) + b*(5 - 3*c/a)/(d - b*c/a), >> c*(3/a - b*(5 - 3*c/a)/(a*(d - b*c/a))) + (5 - 3*c/a)*d/(d - b*c/a)) >> >> Let's simplify each entry by applying the "simplify_full" function to >> each entry: >> >> sage: (A*soln).apply_map(lambda x: x.simplify_full()) >> (3, 5) >> >> This example probably ought to go into some documentation somewhere... >> >> Jason > > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---