[sage-support] Re: numerical approximation in sage.
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.000, 8.000, -4.8830369, -0.13962039], [1.000, 8.000, 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
Re: [sage-support] Re: numerical approximation in sage.
My question is about the syntax and why does this syntax give a numerical approximation. To my understanding, solns is contracted from two arrays with p,q,x,y being the keys (because there are two solutions to the equations set). The part for s in solns is putting in s ab array, and the part s[blah].n(30) asks sage to give s[blah] in 30 bits precision. Here is what I don't understand: - Is this syntax equivalent to: for s in solns s[q].n(30) s[p].n(30) s[x].n(30) s[y].n(30) - Why does this method give a numerical solution. Thanks. On Fri, Nov 27, 2009 at 10:46 PM, John H Palmieri jhpalmier...@gmail.comwrote: 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.000, 8.000, -4.8830369, -0.13962039], [1.000, 8.000, 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 -- 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
[sage-support] Re: numerical approximation in sage.
Hi, This is an unavoidable consequence of using Maxima's solve commands, I think - with multiple equations, Maxima's solve uses things like algsys, if I'm not mistaken, and those return real solutions if they can't find symbolic ones. With one equation the (new) behavior is to not do this automatically (the to_poly_solve=True option would allow this), but I don't think there is any way to avoid the possibility of this with more than one equation. The documentation should be clear on this in the newest version of Sage - I hope! - kcrisman -- 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