2021-01-07 Matlab Numerical Analysis Matrix Eigenvalue and Eigenvector Calculation Improved Power Method Inverse Power Method

Matlab numerical analysis matrix eigenvalue and eigenvector calculation

1 Improved power method

function [t,y]=eigIPower(A,v0,ep)
[tv,ti]=max(abs(v0));
lam0=v0(ti);
u0=v0/lam0;
err=ep*10;             %为第一步循环做准备,此处不考虑0次循环的情况
while(err>ep)
  v1=A*u0;
  [tv,ti]=max(abs(v1));
  lam1=v1(ti);
  err=abs(lam0-lam1);
  u0=v1/lam1;
  lam0=lam1;
end
t=lam1;
y=u0;

Calling program

A=[12,6,-6;6,16,2;-6,2,16];xinit=[1;0.5;-0.5];[t,y]=eigIPower(A,xinit,1e-4)

2 Inverse power method

function [t,y]=eigIPower_inv(A,v0,ep)
[tv,ti]=max(abs(v0));
lam0=v0(ti);
u0=v0/lam0;
err=ep*10;
while(err>ep)
  v1=A\u0;

  [tv,ti]=max(abs(v1));
  lam1=v1(ti);
  err=abs(1/lam0-1/lam1);      %反幂法在误差计算时用的是特征值的倒数
  u0=v1/lam1;
  lam0=lam1;
end
t=1/lam1;

y=u0;

Calling program

​​​​​​​

A=[12,6,-6;6,16,2;-6,2,16];xinit=[1;0.5;-0.5];[t,y]=eigIPower_inv (A,xinit,1e-4)

 

Guess you like

Origin blog.csdn.net/qingfengxd1/article/details/112321922