使用Python寻找多项式根 -- 可能存在Numpy扩展Bug

9
我正在使用Numpy获取多项式的根。Numpy提供了一个名为“polynomial”的模块。
对于方程x^2 + 5*x + 6 = 0,我的手动计算结果是x = -2和x = -3。(简单易懂)
但是我的代码给出了错误的答案:array([-0.5, -0.33333333])(相反?)
请问有谁能找到代码中的问题所在吗?或者这只是一个bug?
from numpy.polynomial import Polynomial as P
p = P([1, 5, 6])
p.roots()

flebool的说法基本正确。似乎他们在新的“polynomial”模块中颠倒了顺序。在Numpy的旧模块“poly1d”中,顺序与Matlab中的顺序相同。再次感谢flebool。 - Fake Howard
要反转新的 'polynomial' 模块的参数顺序,可以使用:p = P(np.flip([1, 5, 6])) - JeeyCi
2个回答

13

只需以另一种顺序传递它,

p = P([6, 5, 1])

-2
如果您已经确定,对于一个次数为n的多项式P,R(x)=x^nP(1/x)等于P的反转版本,那么您本可以自己意识到这一点。因此,除了0之外,R的根是P的倒数根。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接