多根的Durand-Kerner迭代法?

问题描述 投票:0回答:1

我正在研究多项式根的 Durand-Kerner 迭代方法。它具有二次收敛速度,但是当处理具有重根的多项式时,收敛只是线性的。我一直在寻找 Durand-Kerner 的修改版本,即使对于多个根也可以保持二次收敛速度? 有推荐吗?

我已经获得了一些有关 Zeng 对 Durand-Kerner 方法进行修改的信息,该方法添加了一些错误修正,但我无法验证它的来源。

algorithm iteration
1个回答
0
投票

这是一个我认为应该可行的建议。

从一系列猜测开始

g
。然后像这样进行 3 轮迭代:

p = durand_kerner(poly, g)
q = durand_kerner(poly, p)
g = geometric(poly, g, p, q)

前两次迭代是标准的。第三个对每个索引

i
依次进行这样的工作:

s = p[i] - g[i]
t = q[i] - p[i]
if |t| < |s|:
   a = t / s
   try replacing q[i] in the i'th equation of durand_kerner
      with g[i] + s / (1 - a). Actually do so if it is better

想法是这样的。如果存在不重复的根,则几何步长不会提高。如果有重复的根并且您很接近,则几何步长将是总和

s + a*s + a^2*s + ...
,它应该接近多重根。

© www.soinside.com 2019 - 2024. All rights reserved.