I'm trying to solve an equation in python using SymPy. I have a generated equation (something like function = y(8.0-(y**3.0))
which I use with SymPy to create a new equation like this: eq = sympy.Eq(function, 2)
which outputs y(8.0-(y**3.0)) == 2
. but sympy.solve(eq)
doesn't seem to work.
>>> from sympy import Eq, Symbol as sym, solve
>>> y = sym('y')
>>> eqa = Eq(y(8.0-(y**3.0)), 8)
>>> solve(eqa)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/pymodules/python2.6/sympy/solvers/solvers.py", line 332, in solve
result = tsolve(f, *symbols)
File "/usr/lib/pymodules/python2.6/sympy/solvers/solvers.py", line 716, in tsolve
raise NotImplementedError("Unable to solve the equation.")
NotImplementedError: Unable to solve the equation.
thanks for reading.
fsolve
method is, in this case, overkill. It is true that the equation of the question is non linear, but polynomial, nevertheless (As @GaryKerr said in his answer, we express3.0
as integer3
). For that reason, I would prefer the solution withsolve
of the modulesympy
, because this method is specifically tailored for polynomial equations (See Sympy reference ), while thefsolve
method is a totally generic method based on the hybrd algorithm – Blumenthal