维基百科上的article描述了如何从牛顿方法推导出Durand-Kerner根寻找方法。这种方法很有吸引力,因为它具有良好的收敛性和简单性,正如Immo Kerner自己在ACM Algorithm 283中所证实的那样("由R. A. Vowels翻译为PL / I"):
Prrs: procedure (A, X, n, epsin) options (reorder);
declare (A(*), X(*), epsin) float, n fixed binary;
declare (i, k, j, nits) fixed binary, (xx, P, Q, eps) float;
eps = epsin*epsin;
nits = 1;
W: Q = 0;
do i = 1 to n;
xx = A(n); P = A(n);
do k = 1 to n;
xx = xx * X(i) + A(n-k);
if k ^= i then P = P * (X(i) - X(k));
end;
X(i) = X(i) - xx/P;
Q = Q + (xx/P)*(xx/P);
end;
nits = nits + 1;
if Q > eps then go to W;
end Prrs;
在某种程度上可以推导出类似的方法来同时找到n
变量中n
多项式方程组的根的所有近似值吗?
思路是:要在一个变量中找到多项式的根,可以使用牛顿方法。它简单而快速,但确切找到的根取决于最初的猜测,因此很难找到所有的根。
为了同时逼近所有根,有几种牛顿方法的概括采用所谓的Weierstrass校正,例如上面提到的Durand-Kerner或Aberth的方法。
对于n
变量中n
多元多项式方程的系统,存在另一种牛顿方法的推广,它允许人们找到根(即一组n
个值系统变为零的地方)。它使用雅可比矩阵。
所以我的问题是,是否有可能在修正中使用雅可比,而不是牛顿,有点像结合杜兰德 - 克纳和多元牛顿?纯粹运气,有没有人知道这种算法的实现?