python - 如何在Python中找到精确根(三次方)

标签 python math

我正在编写的程序涉及求解许多三次多项式。使用 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/

相关文章:

python - 如果我使用派生类,我可以 "pickle local objects"吗?

image - 需要更好的算法来找到具有最小距离的 2 组点之间的映射

java - 从方程声明自动求解/写入函数(java?)

c - 如何在 C 中将 uint 转换为 int 且结果范围损失最小

python - 为什么从 python 调用 shopt 会失败?

python - 解决 vim 插件映射冲突 - 映射已经存在\t

python - 使用 Opencv Python 调整图像大小并保持质量

python - 如何使用 python 查找数组中的元素列表

c# - 如何检查(通用)数字类型是 C# 中的整数类型还是非整数类型?

c# - 向四元数添加欧拉角