matlab数值分析 矩阵特征值与特征向量的计算
1改进乘幂法
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;
调用程序
A=[12,6,-6;6,16,2;-6,2,16];
xinit=[1;0.5;-0.5];
[t,y]=eigIPower(A,xinit,1e-4)
2 反幂法
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;
调用程序
A=[12,6,-6;6,16,2;-6,2,16];
xinit=[1;0.5;-0.5];
[t,y]=eigIPower_inv (A,xinit,1e-4)