Algorithm 多项式系统的同时逼近&x27;树根

Algorithm 多项式系统的同时逼近&x27;树根,algorithm,numerical-methods,polynomials,newtons-method,Algorithm,Numerical Methods,Polynomials,Newtons Method,维基百科上的描述了如何从牛顿法推导出Durand-Kerner寻根法。正如Immo Kerner本人所证明的(“R.A.元音翻译成PL/I”): 在n变量中,n多项式方程组的根的所有近似值都可以同时求出类似的方法吗 思路是:要在一个变量中找到多项式的根,可以使用牛顿方法。它简单而快速,但是要找到哪个确切的根取决于最初的猜测,因此很难找到所有的根 为了同时逼近所有根,牛顿方法有几种推广,采用所谓的Weierstrass校正,例如上述Durand-Kerner或Aberth方法 对于变量n中的n多元

维基百科上的描述了如何从牛顿法推导出Durand-Kerner寻根法。正如Immo Kerner本人所证明的(“R.A.元音翻译成PL/I”):

n
变量中,
n
多项式方程组的根的所有近似值都可以同时求出类似的方法吗

思路是:要在一个变量中找到多项式的根,可以使用牛顿方法。它简单而快速,但是要找到哪个确切的根取决于最初的猜测,因此很难找到所有的根

为了同时逼近所有根,牛顿方法有几种推广,采用所谓的Weierstrass校正,例如上述Durand-Kerner或Aberth方法

对于变量
n
中的
n
多元多项式方程组,存在牛顿方法的另一个推广,该方法允许人们找到根(即系统变为零的一组
n
值)。它使用雅可比矩阵


所以我的问题是,有没有可能在修正中使用雅可比矩阵,而不是牛顿,就像结合Durand Kerner和多元牛顿一样?非常幸运,有人知道这种算法的实现吗?

PL/I中的一个代码示例得到+1,但我认为您现在有更好的机会回答这个问题。
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;