Skip to main content
 首页 » 编程设计

python之四次方程求解器的实现不起作用

2025年05月04日20powertoolsteam

我实现的四次方程求解器出了什么问题?
这是我的代码 on GitHub .我跟着这个:http://www.1728.com/quartic2.htm
事实上,真正的实现是从第 271 行开始的,我在那里创建了 monic poly。

如果我用一个有 4 个实根的多项式尝试它,它工作正常(例如 3x^4 + 6x^3 - 123x^2 - 126x + 1,080),否则给出错误的根。

谢谢,
魔方

附言我调用函数 __quartic 因为它仍在开发中

请您参考如下方法:

如果这不是您的三次求解器的问题(如 phkahler 所建议的),那么我敢打赌这是在这些行中进行整数除法的情况:

f = float(c - (3*b**2 / 8)) 
g = float(d + (b**3/ 8) - (b*c / 2)) 
h = e - (3*b**4 / 256) + (b**2 * c / 16) - (b*d / 4) 

如果您使用的 Python 版本低于 3.0,并且没有从 __future__ 导入除法,那么您可能会在此处遇到重大问题。例如,如果 b = 3,则 (3*b**2/8) 按 int 除法等于 3,而不是正确的 float 除法值 3.375。可能纠正此问题的最佳方法是在开始计算之前将 a、b、c、d 和 e 转换为 float 。进行此更正后,在 f 和 g 的所有计算之后转换为 float 确实是不必要的,它们现在对您的帮助不大。

有关此 split 问题及其历史的更多信息,请参阅:

http://www.python.org/dev/peps/pep-0238/

http://python-history.blogspot.com/2009/03/problem-with-integer-division.html