Python 用辛方法求解复系数多项式

Python 用辛方法求解复系数多项式,python,numpy,math,sympy,polynomials,Python,Numpy,Math,Sympy,Polynomials,我对python非常陌生,所以如果这有一个简单的修复,请原谅我。我试图用辛解复系数多项式。我发现如果k“太复杂”,我会得到一个空白输出。。。我还不太确定如何定义这意味着什么。作为第一个例子,考虑具有复系数的第四阶多项式, In [424]: solve(k**4+ 2*I,k) Out[424]: [-2**(1/4)*sqrt(-sqrt(2)/4 + 1/2) - 2**(1/4)*I*sqrt(sqrt(2)/4 + 1/2), 2**(1/4)*sqrt(-sqrt(2)/4 + 1

我对python非常陌生,所以如果这有一个简单的修复,请原谅我。我试图用辛解复系数多项式。我发现如果k“太复杂”,我会得到一个空白输出。。。我还不太确定如何定义这意味着什么。作为第一个例子,考虑具有复系数的第四阶多项式,

In [424]: solve(k**4+ 2*I,k)
Out[424]: 
[-2**(1/4)*sqrt(-sqrt(2)/4 + 1/2) - 2**(1/4)*I*sqrt(sqrt(2)/4 + 1/2),
 2**(1/4)*sqrt(-sqrt(2)/4 + 1/2) + 2**(1/4)*I*sqrt(sqrt(2)/4 + 1/2),
 -2**(1/4)*sqrt(sqrt(2)/4 + 1/2) + 2**(1/4)*I*sqrt(-sqrt(2)/4 + 1/2),
 2**(1/4)*sqrt(sqrt(2)/4 + 1/2) - 2**(1/4)*I*sqrt(-sqrt(2)/4 + 1/2)]
获得输出没有问题。不过,我对解决这样的问题很感兴趣

In [427]: solve(k**6 + 3*I*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,k)
Out[427]: []
这要复杂得多,并且返回一个空列表。但是,我可以用maple解决这个问题。另外,请注意,在去除复系数时,没有任何问题

In [434]: solve(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,k)
Out[434]: 
[CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1, 0),
 CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1, 1),
 CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1, 2),
 CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1, 3),
 CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1, 4),
 CRootOf(k**6 + 3*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1, 5)]
结果阵列的元素可以进行数值计算

那么,这是一个关于复系数的问题吗?我怎样才能解[427]线上的方程

我曾尝试使用nsolve()进行求解,并一个接一个地计算出根,尽管我也没有使用过这种方法。

根据的,您可以使用:


您需要在复杂平面中工作的解算器。在实数线上工作的根查找器将查找离散点,每个根一个。复数根查找器必须在复数平面中查找曲线。这是一个更难的问题。
symphy.nroots()
能够找到相关多项式的(数值)根。这很有效,非常感谢@Stelios。我以前没有遇到过Symphy.nroots。我想CRootOf还不支持复数系数。
>>> from sympy import solve, nroots, I
>>> from sympy.abc import k
>>> solve(k**6 + 3*I*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1,k)
[]
>>> nroots(k**6 + 3*I*k**5 - 2*k**4 + 9*k**3 - 4*k**2 + k - 1)
[-2.05972684672 - 0.930178254620881*I, -0.0901851681681614 + 0.433818575087712*I, -0.0734840785305346 - 0.434217215694685*I, 0.60726931721974 - 0.0485101438937812*I, 0.745127208196241 + 0.945593905069312*I, 0.870999568002712 - 2.96650686594768*I]