我实施四次方程求解器出了什么问题?
这是我的代码on GitHub。我跟着这个:http://www.1728.com/quartic2.htm
事实上,真正的实现从第271行开始,在那里我创建了monic poly。
如果我尝试使用具有4个实根的多项式,它可以正常工作(例如3x ^ 4 + 6x ^ 3 - 123x ^ 2 - 126x + 1,080),否则会产生错误的根。
谢谢,
魔方
P.S。我调用函数__quartic
因为它仍在开发中
答案 0 :(得分: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)
通过int除法而不是正确的浮点除法值3.375等于3。可能最好的解决方法是在开始计算之前将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
答案 1 :(得分:1)
你的立方根求解器是否有效?您应该将其缩减为仅返回单个实根以在四次解算器中使用。首先在三次解算器上运行多个测试用例,包括具有1和3个实根的方程。只有在经过验证后才能尝试调试四次解算器。
答案 2 :(得分:1)
也许我可以帮忙。我写了a program and the procedure for solving quartic equations。
我猜你不是用JavaScript编写程序的。 我愿意帮忙(如果可以的话)。