使用sympy的求解器对具有复系数的多项式(第4度)的误差

尝试用sympy求解四次多项式方程,我遇到了一些困难。我的代码和公式我试图解决:使用sympy的求解器对具有复系数的多项式(第4度)的误差

import sympy as sym 

from sympy import I

sym.init_printing()

k = sym.Symbol('k')

t, sigma ,k0, L , V = sym.symbols('t, sigma, k0, L,V')

x4 = (-t**2 + 2*I * t/sigma**2 + 1/sigma**4)

x3 = (-2*I * t * k0/sigma**2 - 2*k0/sigma**4)

x2 = (L**2 + k0 **2/sigma **4 + t**2 * V - 2 * I * t * V/sigma**2 -V/sigma**4)

x1 = (2*I * V * k0/sigma**2 + 2*k0 * V/sigma **4)

x0 = (2*I*k0*t*V/sigma**2 - k0 **2 *V/sigma**4)

expr = x4 * k**4 + x3 * k**3 + x2 * k**2 + x1 * k + x0

expr2 = expr.subs({k0 :2 , sigma : .2 , L : 1, V:1})

sym.solvers.solve(expr2,k)

输出:

Traceback (most recent call last): 

File "<ipython-input-4-e1ce7d8c9531>", line 1, in <module>

sols = sym.solvers.solve(expr2,k)

File "/usr/local/lib/python2.7/dist-packages/sympy/solvers /solvers.py", line 1125, in solve

solution = nfloat(solution, exponent=False)

File "/usr/local/lib/python2.7/dist-packages/sympy/core/function.py", line 2465, in nfloat

return type(expr)([nfloat(a, n, exponent) for a in expr])

File "/usr/local/lib/python2.7/dist-packages/sympy/core/function.py", line 2499, in nfloat

lambda x: isinstance(x, Function)))

File "/usr/local/lib/python2.7/dist-packages/sympy/core/basic.py", line 1087, in xreplace

value, _ = self._xreplace(rule)

File "/usr/local/lib/python2.7/dist-packages/sympy/core/basic.py", line 1095, in _xreplace

return rule[self], True

File "/usr/local/lib/python2.7/dist-packages/sympy/core/rules.py", line 59, in __getitem__

return self._transform(key)

File "/usr/local/lib/python2.7/dist-packages/sympy/core/function.py", line 2498, in <lambda>

lambda x: x.func(*nfloat(x.args, n, exponent)),

File "/usr/local/lib/python2.7/dist-packages/sympy/core/function.py", line 2465, in nfloat

return type(expr)([nfloat(a, n, exponent) for a in expr])

File "/usr/local/lib/python2.7/dist-packages/sympy/core/function.py", line 2465, in nfloat

return type(expr)([nfloat(a, n, exponent) for a in expr])

TypeError: __new__() takes exactly 3 arguments (2 given)

我真的不能做任何事情出来。我不太确定是什么导致了这一点,我“测试”这个求解器以获得更紧凑的多项式,并且运行良好。

回答:

看起来您可以使用solve(expr2, k, rational=False)解决该问题。

以上是 使用sympy的求解器对具有复系数的多项式(第4度)的误差 的全部内容, 来源链接: utcz.com/qa/266727.html

回到顶部