如何分离多项式的根?
多项式的次数是n(10 在使用Newton / Raphson或其他数字众所周知的方法找到根之前,我需要分离根
我很久以前就已经知道有一些方法可以分离根,但是我已经丢失了笔记,我不记得了。 我不想要任何mathematica / maple或数学软件库解决方案,因为我必须在软件中实现它。
答案 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方法通过递归确定根的连续分数扩展来封闭有理区间,从而可以证明所有真实的根。
(http://algo.inria.fr/seminars/sem92-93/yakoubsohn.ps)的排除算法的简单形式的描述(需要Postscript查看器)
Published paper关于更有效的算法形式。
Durand-Kerner(以及Aberth-Ehrlich)方法同时查找多项式的所有根,因此也不会省略任何根。此外,该方法的偏移量允许确定复平面中的根封闭磁盘。