1

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

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

谢谢,
魔方

PS我调用了这个函数__quartic,因为它还在开发中

4

3 回答 3

4

如果您的三次求解器没有问题(如 phkahler 建议的那样),那么我敢打赌,这是这些行中的 int 除法:

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)整数除法等于 3,而不是正确的浮点除法值 3.375。纠正此问题的最佳方法可能是在开始计算之前将 a、b、c、d 和 e 转换为浮点数。在您进行此更正后,您在 f 和 g 的所有计算之后转换为浮点数确实是不必要的,而且它们现在对您没有太大帮助。

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

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

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

于 2011-01-18T20:02:45.433 回答
1

你的立方根求解器有效吗?您应该将其简化为仅返回一个实根以在四次求解器中使用。首先在三次求解器上运行多个测试用例,包括具有 1 个和 3 个实根的方程。只有在验证了这一点之后,您才应该尝试调试四次求解器。

于 2011-01-18T19:51:36.140 回答
1

也许我可以帮忙。我写了一个程序和求解四次方程的程序

我猜你不是用 JavaScript 编写程序。我愿意帮忙(如果可以的话)。

于 2011-01-21T07:05:00.137 回答