Python解决一个变量的等式

hah*_*hah 6 python solver sympy equations

我正在尝试使用SymPy在python中解决方程式.我有一个生成的等式(function = y(8.0-(y**3.0))我和SymPy一起用来创建一个像这样的新等式:eq = sympy.Eq(function, 2)输出y(8.0-(y**3.0)) == 2.但sympy.solve(eq)似乎不起作用.

>>> 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.
Run Code Online (Sandbox Code Playgroud)

谢谢阅读.

小智 9

你的是非线性方程式......所以你可以使用optimize.fsolve它.有关更多详细信息,请查看本教程中的函数scipy


Gar*_*err 9

(我不知道为什么你在代码中使用sympy时在你的问题中提到scipy.我会假设你正在使用sympy.)

如果为y(即y**3.0更改为y**3)指定整数幂,Sympy可以求解此等式.

以下适用于我使用Sympy 0.6.7.

from sympy import Eq, Symbol, solve

y = Symbol('y')
eqn = Eq(y*(8.0 - y**3), 8.0)

print solve(eqn)
Run Code Online (Sandbox Code Playgroud)


duf*_*ymo 0

这是一个非线性方程。您需要寻找的是 SciPy 中的求根算法。