# unable to numerically solve an equation (basic question)

 2 Hello, I make my first steps with sage and already run into a problem I was not able to solve. When I enter the following: reset() var('x') eqn=x^2+3*x-9==0 sol=solve(eqn,x,solution_dict=true) sol[x].n(30)  I get the following error message: The error message is: ('EOF in multi-line statement', (12, 0)) TypeError Traceback (most recent call last) /home/.../sage-4.6.2/local/lib/python2.6/site-packages/sage/all_cmdline.pyc in () /home/.../sage-4.6.2/local/lib/python2.6/site-packages/sage/misc/preparser.pyc in load(filename, globals, attach)
1594 execfile(fpath, globals)
1595 elif fpath.endswith('.sage'):
-> 1596 exec(preparse_file(open(fpath).read()) + "\n", globals)
1597 elif fpath.endswith('.spyx') or fpath.endswith('.pyx'):
1598 import interpreter
/home/.../sage-4.6.2/local/lib/python2.6/site-packages/sage/all_cmdline.pyc in () /home/.../sage-4.6.2/local/lib/python2.6/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression.__index__ (sage/symbolic/expression.cpp:16771)() /home/.../sage-4.6.2/local/lib/python2.6/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression._integer_ (sage/symbolic/expression.cpp:4254)() TypeError: unable to convert x (=x) to an integer  I added the "..." manually for this post. Obviously I make a severe problem in getting the numerical solution of this simple equation. Maybe you can help me in getting a numerical solution for an equation. Btw. I get the same error message when I try the example given in the sage tutorial on page 14 ([[s[p].n(30),.....) Thanks in advance! asked Apr 02 '11 donC 21 ● 1 ● 4 kcrisman 6784 ● 14 ● 67 ● 152 Just so you know, it's possible to make things look like code by indenting them four space - no
or
needed - or by highlighting a region and clicking the button that looks like 101010. kcrisman (Apr 02 '11)

 5 It helps to go step-by-step. In this case, the error message "unable to convert x (=x) to an integer" is telling you that something is a symbolic variable (x) which you're trying to treat as something else: sage: reset() sage: var('x') x sage: eqn=x^2+3*x-9==0 sage: eqn x^2 + 3*x - 9 == 0  Looks good, now we can solve: sage: sol=solve(eqn,x,solution_dict=true) sage: sol [{x: -3/2*sqrt(5) - 3/2}, {x: 3/2*sqrt(5) - 3/2}] sage: type(sol)  and you see that sol isn't a dictionary, it's a list of dictionaries. So sol[x] can't work, because it's trying to take the "x-th" element of the list, when really you want one of the entries (0 or 1, as Python/Sage starts counting from 0 instead of 1): sage: sol[0] {x: -3/2*sqrt(5) - 3/2} sage: sol[0][x] -3/2*sqrt(5) - 3/2 sage: sol[0][x].n(100) -4.8541019662496845446137605031 sage: sol[1][x].n(100) 1.8541019662496845446137605031  Does that make sense? posted Apr 02 '11 DSM 4802 ● 12 ● 61 ● 103 Thank you vey much! After reading your response I really felt quite embarrassed. donC (Apr 02 '11) No need; it takes a while to master all the various data types Python uses, if you're not familiar with them. kcrisman (Apr 02 '11)

[hide preview]