如何分离多项式的根

时间:2014-02-18 20:36:20

标签: algorithm math

如何分离多项式的根?

多项式的次数是n(10

在使用Newton / Raphson或其他数字众所周知的方法找到根之前,我需要分离根 我很久以前就已经知道有一些方法可以分离根,但是我已经丢失了笔记,我不记得了。

我不想要任何mathematica / maple或数学软件库解决方案,因为我必须在软件中实现它。

3 个答案:

答案 0 :(得分:4)

也许您正在考虑Sturm sequence

答案 1 :(得分:2)

解决方案是在[a,b]范围内构造Sturm chain f0(x)= f(x),f1(x),...,fs(x)并计算变化次数边界点a和b中该链中的符号:Va - Vb其中

Va =链中的符号变化f0(a)= f(a),f1(a),...,fs(a)

Vb =链中的符号变化f0(b)= f(b),f1(b),...,fs(b)

Va-Vb是范围(a,b)中该多项式的不同根的数量。您可以将您的域划分为范围,并在每个范围中应用此过程。

现在最后一个问题是如何构建这样一个链。常见的方法是使用Euclidean Algorithm的修改,即:

f0(x)= f(x) f1(x)= f'(x)

并从以下位置检索下一个字词:

f0(x)= q1(x)f1(x) - f2(x) ... fk-1(x)= qk(x)fk(x) - fk + 1(x) ... fs-1(x)= qs(x)fs(x)

这是任何范围[a,b]中的Sturm链,其中f(a)!= 0!= f(b)。或者,您可以搜索可用于构建Sturm链的Legendre polynomials。您可能还想查看Budan-Fourier定理。

答案 2 :(得分:1)

Vincent-Akritas方法通过递归确定根的连续分数扩展来封闭有理区间,从而可以证明所有真实的根。


Dedieu-Yakoubsohn发表了Bisection-Exclusion原理,该原理结合了Dandelin-Graeffe根平方迭代和根半径估计,可以可靠地定位实线或复平面上的所有根。

http://algo.inria.fr/seminars/sem92-93/yakoubsohn.ps)的排除算法的简单形式的描述(需要Postscript查看器)

Published paper关于更有效的算法形式。


Durand-Kerner(以及Aberth-Ehrlich)方法同时查找多项式的所有根,因此也不会省略任何根。此外,该方法的偏移量允许确定复平面中的根封闭磁盘。