四次方程求解器的实现不起作用
我的四次方程求解器的实现出了什么问题?
这是我的代码 GitHub 上。我按照以下步骤操作:http://www.1728.com/quartic2.htm
事实上,真正的实现从第 271 行开始,我在其中创建了单子多项式。
如果我尝试使用具有 4 个实根的多项式,则效果很好(例如 3x^4 + 6x^3 - 123x^2 - 126x + 1,080),否则给出错误的根。
谢谢,
鲁比克
我将函数命名为 __quartic
因为它仍在开发中
What's going wrong with my implementation of a quartic equation solver?
Here is my code on GitHub. I followed this: http://www.1728.com/quartic2.htm
In fact the real implementation starts at line 271, where I create the monic poly.
If I try it with a polynomial with 4 real roots it works fine (for example with 3x^4 + 6x^3 - 123x^2 - 126x + 1,080), otherwise gives wrong roots.
Thanks,
rubik
P.S. I called the function __quartic
because it is still in development
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果这不是你的三次解算器的问题(正如phkahler建议的那样),那么我打赌这是这些行中int除法的情况:
如果你使用的Python版本低于3.0并且没有导入与
__future__
相除,那么这里可能会遇到重大问题。例如,如果 b = 3,则(3*b**2/8)
通过 int 除法等于 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
If it isn't a problem with your cubic solver (as phkahler suggested), then I'm betting that it is a case of int division in these lines:
If you are using a version of Python that is less than 3.0 and not importing division from
__future__
, then you can have major problems here. For instance, if b = 3, then(3*b**2/8)
is equal to 3 by int division rather than the correct float division value of 3.375. Probably the best way to correct this is to convert a,b,c,d and e to floats before you start doing calculations. Your conversion to float after all of the calculations for f and g are really unnecessary after you've made this correction and they aren't really helping you much now.For more information about this division issue and its history see:
http://www.python.org/dev/peps/pep-0238/
http://python-history.blogspot.com/2009/03/problem-with-integer-division.html
你的立方根求解器有效吗?您应该将其减少为仅返回一个实根以在四次求解器中使用。首先在三次求解器上运行多个测试用例,包括同时具有 1 和 3 实根的方程。只有在验证之后,您才可以尝试调试四次求解器。
Does your cubic root solver work? You should have it reduced to only returning a single real root for use within the quartic solver. Run a number of test cases on the cubic solver first, including equations with both 1 and 3 real roots. Only after this is verified should you try to debug the quartic solver.
也许我可以帮忙。我编写了一个程序和求解四次方程的过程。
我猜你不是用 JavaScript 编写程序。
我愿意帮忙(如果可以的话)。
Perhaps I can help out. I wrote a program and the procedure for solving quartic equations.
I'm guessing you are not writing the program in JavaScript.
I'd be willing to help out (if I can).