On Nov 27, 10:03 am, Yotam Avital <yota...@gmail.com> wrote: > Hello. > > In the tutorials there is an example for numerical approximation: > > var('x y p q') > (x, y, p, q) > eq1 = p+q==9 > eq2 = q*y+p*x==-6 > eq3 = q*y^2+p*x^2==24 > solns = solve([eq1,eq2,eq3,p==1],p,q,x,y, solution_dict=True) > [[s[p].n(30), s[q].n(30), s[x].n(30), s[y].n(30)] for s in solns] > [[1.0000000, 8.0000000, -4.8830369, -0.13962039], > [1.0000000, 8.0000000, 3.5497035, -1.1937129]] > > As I far as I can understand, solution_dict tells sage that I want the > output to be in dictionary form(that is, {x:1, y:8 ...}) > I also know that the .n(30) tell sage I want the answer to have 30 > digits accuracy. I can't understand though the logic of the last > command. Can any of you explain it to me?
If you're asking about the command [[s[p].n(30), s[q].n(30), s[x].n(30), s[y].n(30)] for s in solns] then note first that "solns" is a list, and a construction like [blah for s in solns] evaluates "blah" for each entry s in solns. If you just print solns at this point, you should get [{q: 8, x: -4/3*sqrt(10) - 2/3, p: 1, y: 1/6*sqrt(2)*sqrt(5) - 2/3}, {q: 8, x: 4/3*sqrt(10) - 2/3, p: 1, y: -1/6*sqrt(2)*sqrt(5) - 2/3}] Each entry s in solns is a dictionary with keys the variables p, q, x, y. For the first entry, s[p] is 1, s[q] is 8, etc. So the command that I think you were asking about prints s[p], s[q], s[x], and s[y], each with 30 bits of precision, for each of the two solutions. -- John -- 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 URL: http://www.sagemath.org