[matlab] Power method to solve the largest eigenvalue

1. Algorithm:

1. Input matrix A, initial vector x error limit ep, maximum number of iterations N

2. Set k = 1, m1 = 0;

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

4. Calculate y = x/norm(u)

5. If m1-m is less than the error limit, output the result, stop otherwise to6

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

2. Procedure:

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     % eigenvalue
u /norm(u) % eigenvector
[vv,ll] =eig(A); % eigenvalues ​​and eigenvectors solved by matlab
[mm,ii]=max(abs(diag(ll)));
m_matlab=mm
v_matlab = vv (:, ii)

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325236787&siteId=291194637