【matlab】 幂法 求解最大特征值

一. 算法:

1.输入矩阵A,初始向量x误差限ep,最大迭代次数N

2.置 k = 1, m1 = 0;

3.求Xr-> norm(x) abs(Xr)=max[Xi] 1<=i<=n

4.计算 y = x/norm(u)

5. 若m1-m 小于误差限 输出结果,停止 否则 to6

6.若k<N k++ norm(x) = m1

二.程序:

A = [-6.9,14,0;
     -5,10.1,0;
     -1,0,-0.1];
N=100;
ep=1e-4;
n=length(A);
u=ones(n,1);
index=0;
k=0;
m1=0;
while k<=N
   v=A*u;
   m=max(abs(v));
   u=v/m
   if abs(m-m1)<ep
        index=1;
        break;
   end          
   m1=m;
   k=k+1;
end

m    %特征值
u/norm(u)  %特征向量
[vv,ll]=eig(A); %matlab求解的特征值和特征向量
[mm,ii]=max(abs(diag(ll)));
m_matlab=mm
v_matlab=vv(:,ii)

相关推荐