Algorithm 如何分离多项式的根

Algorithm 如何分离多项式的根,algorithm,math,Algorithm,Math,如何分离多项式的根 多项式的阶数为n10

如何分离多项式的根

多项式的阶数为n10 我需要先分离根,然后再使用牛顿/拉斐逊或其他著名的数值方法来求根。 很久以前我就知道有很多方法可以把根分开,但是我的笔记丢了,我不记得了


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

也许你在想一个?

也许你在想一个?

Vincent-Akritas方法通过递归地确定根的连分数展开,通过包围有理区间找到所有可证明的实根

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

描述了排他算法的简单形式‎ 需要Postscript查看器

关于一种更有效的算法形式


Durand-Kerner和Aberth-Ehrlich方法可以同时找到多项式的所有根,因此也不会忽略任何根。此外,该方法的偏移量允许确定复平面中的根包围圆盘。

Vincent Akritas方法通过递归确定根的连分数展开,通过包围有理区间找到可证明的所有实根

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

描述了排他算法的简单形式‎ 需要Postscript查看器

关于一种更有效的算法形式


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

解决方案是构造f0x=fx,f1x,fsx在[a,b]范围内,并计算边界点a和b中该链中符号的变化次数:Va-Vb,其中

Va=登录链f0a=fa,f1a,fsa

Vb=登录链的更改f0b=fb,f1b,金融稳定委员会

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

最后一个问题是如何构建这样一条链。通常的方法是使用的修改,即:

f0x=fx f1x=f'x

下一个术语可从以下位置检索:

f0x=q1xf1x-f2x ... fk-1x=qkxfkx-fk+1x ... fs-1x=qsxfsx


这是任何范围内[a,b]的Sturm链,其中fa!=0 != fb。或者,您可以搜索可用于构造Sturm链的。你可能还想看看这个定理。

解决方案是构造f0x=fx,f1x,fsx在[a,b]范围内,并计算边界点a和b中该链中符号的变化次数:Va-Vb,其中

Va=登录链f0a=fa,f1a,fsa

Vb=登录链的更改f0b=fb,f1b,金融稳定委员会

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

最后一个问题是如何构建这样一条链。通常的方法是使用的修改,即:

f0x=fx f1x=f'x

下一个术语可从以下位置检索:

f0x=q1xf1x-f2x ... fk-1x=qkxfkx-fk+1x ... fs-1x=qsxfsx


这是任何范围内[a,b]的Sturm链,其中fa!=0 != fb。或者,您可以搜索可用于构造Sturm链的。你可能还想看看这个定理。

在这种情况下,这个网站可能更有用。这个问题与数值分析软件工程有关。它处于数学和软件工程的十字路口。是否有此域的标记?或者我可以在两个网站上交叉发布吗?永远不要交叉发布。尽管我个人认为这更多的是在数学领域。例如,对于你的学位范围,Jenkins-Traub算法将可靠而有效地找到多项式的所有根,而无需事先定位。你有任何理由怀疑数值问题吗,例如,因为解决方案的紧密簇?我不怀疑问题,我会尝试你的解决方案。在这种情况下,该网站可能更有用。该问题与数值分析软件工程有关。它处于数学和软件工程的十字路口。是否有此域的标记?或者我可以在两个网站上交叉发布吗?永远不要交叉发布。即使
虽然我个人认为这更多的是在数学领域。例如,对于你的学位范围,Jenkins-Traub算法将可靠而有效地找到多项式的所有根,而无需事先定位。你有什么理由怀疑数值问题,比如说因为解的密集簇?我不怀疑问题,我会试试你的解。