牛顿迭代法在求解特征值问题中的应用

牛顿迭代法常被应用于求解非线性方程(组),通过几步简单的迭代,就能得到真解。
下面给出几个牛顿迭代法在求解矩阵特征值文中的几个算例:

  • 牛顿反迭代
% inverse_iteration
clc
clear
n = 2; F = @(z) [exp(1i*z.^2) 1; 1 1];
Fp = @(z) [2i*z*exp(1i*z.^2) 0; 0 0];
tol = 1e-8; maxit = 20; lam = 2.2 + 1e-4i;
v = [1; 1]; v = v/norm(v); u = [1; 0];
for k = 0:maxit-1
    if norm(F(lam)*v) < tol, break; end
    vt = F(lam)\Fp(lam)*v;
    lam = lam - u'*v/(u'*vt)
    v = vt/norm(vt);
end
if k < maxit, nbr_iter = k, lambda = lam, end
  • 牛顿隐式因子法
% Newton_implicit_determinant
n = 2; F = @(z) [exp(1i*z.^2) 1; 1 1];
Fp = @(z) [2i*z*exp(1i*z.^2) 0; 0 0];
tol = 1e-8; maxit = 20; b = [0; 1]; c = b; lam = 2.2 + 1e-4i;
for k = 0:maxit
    [L,U] = lu([F(lam) b; c.' 0]);
    xf = U\(L\[zeros(n,1); 1]);
    if abs(xf(n+1))/norm(F(lam),'fro') < tol, break, end
    xfp = U\(L\[-Fp(lam)*xf(1:n); 0]);
    lam = lam - xf(n+1)/xfp(n+1);
end
if k < maxit, nbr_iter = k, lambda = lam, end
  • QR分解法
% Newton_QR
n = 2; F = @(z) [exp(1i*z.^2) 1; 1 1];
Fp = @(z) [2i*z*exp(1i*z.^2) 0; 0 0];
tol = 1e-8; maxit = 20; lam = 2.2 + 1e-4i;
for k = 0:maxit
    [Q,R,P] = qr(F(lam));
    if abs(R(n,n))/norm(F(lam),'fro') < tol, break, end
    p = R(1:n-1,1:n-1)\R(1:n-1,n);
    lam = lam - R(n,n)/(Q(:,n)'*Fp(lam)*P*[-p; 1]);
end
if k < maxit, nbr_iter = k, lambda = lam, end
  • 迹方法
% Newton_trace
F  = @(z) [exp(1i*z.^2) 1; 1 1];
Fp = @(z) [2i*z*exp(1i*z.^2) 0; 0 0];
tol = 1e-8; maxit = 20; lam = 2.2 + 1e-4i;
for k = 0:maxit
    [L,U] = lu(F(lam));
    if abs(prod(diag(U)))/norm(F(lam),'fro')<tol, break, end
    corr = trace(U\(L\Fp(lam)));
    lam = lam - 1/corr;
end
if k < maxit, nbr_iter = k, lambda = lam, end

这个比较简单,就不多说什么了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐