我正在编写的程序涉及求解许多三次多项式。使用 np.roots 后,在我看来,对于三次方,根是“近似根”。
In [5]: np.roots([1,3,3,1])
Out[5]: array([-0.99999672+5.68937417e-06j, -0.99999672-5.68937417e-06j,
-1.00000657+0.00000000e+00j])
因此,根似乎非常接近正确,因为实部非常接近 -1,而复数部分非常小,或者不存在。
对我来说重要的是整数根作为整数出现,而不是一些“非常相似”的实数/复数(粗略地说)。
欢迎任何意见,提前谢谢。
最佳答案
如果您愿意使用sympy
:
from sympy import var, Eq, solve
x = var('x')
sol = solve(Eq(x**3 + 3*x**2 + 3*x + 1, 0), x)
print(sol) # output: [-1]
factor
也可用于验证解决方案:
from sympy import factor
fact = factor(x**3 + 3*x**2 + 3*x + 1)
print(fact) # (x + 1)**3
关于python - 如何在Python中找到精确根(三次方),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973265/