多项式最小不动点的有效计算

时间:2011-09-06 17:42:27

标签: algorithm numerical-methods

设p(x)表示所讨论的多项式。 P的最小不动点(LFP)是x的最小值,使得x = P(x)。多项式具有实系数。一般不能保证存在LFP,但如果度数是奇数且≥3,则保证存在LFP。如果度数为3,我知道有效的解决方案.x = P(x)因此0 = P( x)的-x。有一个封闭形式的立方公式,求解x有点微不足道,可以硬编码。度数2和1同样容易。这是我遇到麻烦的更复杂的案例,因为我似乎无法想出任意程度的好算法。

编辑:

我只考虑真正的固定点并且在它们中间最少,不一定是具有最小绝对值的固定点。

3 个答案:

答案 0 :(得分:6)

使用您最喜欢的数值方法解决f(x) = P(x) - x。例如,您可以迭代

x_{n + 1} = x_n - P(x_n) / (P'(x_n) - 1).

您通常不会找到封闭式公式,因为there aren't any closed-form formula for quintic and higher polynomials。因此,对于五重和更高的程度,你使用某种数值方法。

答案 1 :(得分:5)

因为你想要最不固定的点,所以如果没有找到P(x) - x的所有真实根并且选择最小值,你就无法逃脱。

查找多项式的所有根是一个棘手的主题。如果您有黑盒子例程,那么一定要使用它。否则,请考虑以下技巧:

  • 形成M {(3)}的P(x) - x
  • 找到M
  • 的所有特征值

但这要求您可以访问用于查找特征值的例程(这是另一个棘手的问题,但是有很多好的库)。

否则,您可以实施companion matrix算法,这是一个非常重要的代码。

我真的不建议找到零(例如牛顿的方法)和Jenkins-Traub直到你达到一级:如果做得不好就会非常不稳定,你会失去很多准确性(并且用它来解决多个根是非常困难的)。这样做的正确方法实际上是上面提到的Jenkins-Traub算法。

答案 2 :(得分:0)

这个问题试图找到“最小”(这里我不确定你的意思是数量级,还是实际上最小的,可能是最负的)多项式的根。对于很大程度的多项式没有封闭形式的解,但是有许多数值方法可以找到根。

通常情况下,Wikipedia是开始搜索的好地方。

如果要查找最小根,则可以使用rule of signs确定存在的间隔,然后使用一些数值方法在该间隔中查找根。