我有一个五阶多项式:
y = ax 5 + bx 4 + cx 3 + dx 2 + ex + f
系数a-f是已知的,我需要计算给定y的x。我可以使用Newton-Raphson算法或类似算法,但如果可能的话,我更喜欢非迭代解决方案。
编辑:我想在发布我的问题之前我没有想到这一点。我的多项式系数是根据采样数据计算的,在这种特殊情况下只有一个根。当然,在一般情况下,当然可能有五个不同的根源。我想我也会将采样数据拟合成逆多项式,然后用它来计算y中的x。
答案 0 :(得分:8)
找到多项式的根是困难和棘手的。获得稳定可靠的算法会让您头疼。牛顿+根去除似乎是一个好主意,但正确地使这项工作真的很痛苦。
一个明显的问题是根部移除的稳定性。另一个问题是复杂的根源。另一个难题是(数字上)多个根,你会失去很多精确度。
最先进的黑匣子算法是Jenkins-Traub。但是,它很难实现,因此您必须在某处找到(或支付)实现。
然而,如果您可以访问线性alebra包,那么简单,稳健,稳定且有效的方法是计算companion matrix的特征值。这就是例如。 GSL确实。
答案 1 :(得分:2)
此外,如果这不是一个家庭作业问题,你可能不希望算法解决激进派中的问题,因为这在数字上会表现得很糟糕。
答案 2 :(得分:1)
Newton-Raphson只会给你一个解决方案。其中最多可以有5个用于五重奏。
如果你想要所有的解决方案 你需要将Newton-Raphson配对去除根或使用更健壮的东西。
一种常用方法是使用Sturm polynomials