Power Method Algorithm using MATLAB(m-file)
Finding eigenvalue and eigenvector
OUTPUTS:
>> power_C
Enter dimension of the matrix, n: 3
Enter the tolerance, tol: 0.00001
Enter maximum number of iterations, m: 100
Ite. Eigenvalue ............Eigenvectores............
1 3.00000000 0.60000000 0.20000000 1.00000000
2 2.20000000 0.45454545 0.45454545 1.00000000
3 2.81818182 0.48387097 0.54838710 1.00000000
4 3.12903226 0.50515464 0.50515464 1.00000000
5 3.02061856 0.50170648 0.49488055 1.00000000
6 2.98634812 0.49942857 0.49942857 1.00000000
7 2.99771429 0.49980938 0.50057186 1.00000000
8 3.00152497 0.50006351 0.50006351 1.00000000
9 3.00025403 0.50002117 0.49993650 1.00000000
10 2.99983066 0.49999294 0.49999294 1.00000000
11 2.99997177 0.49999765 0.50000706 1.00000000
12 3.00001882 0.50000078 0.50000078 1.00000000
The eigenvalue after 12 iterations is: 3.00001882
The corresponding eigenvector is:
0.50000078
0.50000078
1.00000000
MATLAB Program:
% Power Method Algorithm
n=input('Enter dimension of the matrix, n: ');
A = zeros(n,n);
x = zeros(1,n);
y = zeros(1,n);
tol = input('Enter the tolerance, tol: ');
m = input('Enter maximum number of iterations, m: ');
A=[1 2 0; -2 1 2; 1 3 1];
x=[1 1 1];
k = 1; lp = 1;
amax = abs(x(1));
for i = 2 : n
if abs(x(i)) > amax
amax = abs(x(i));
lp = i;
end
end
for i = 1 : n
x(i) = x(i)/amax;
end
fprintf('\n\n Ite. Eigenvalue ............Eigenvectores............\n');
while k <= m
for i = 1 : n
y(i) = 0;
for j = 1 : n
y(i) = y(i) + A(i,j) * x(j);
end
end
ymu = y(lp);
lp = 1;
amax = abs(y(1));
for i = 2 : n
if abs(y(i)) > amax
amax = abs(y(i));
lp = i;
end
end
if amax <= 0
fprintf('0 eigenvalue - select another ');
fprintf('initial vector and begin again\n');
else
err = 0;
for i = 1 : n
t = y(i)/y(lp);
if abs(x(i)-t) > err
err = abs(x(i)-t);
end
x(i) = t;
end
fprintf('%4d %11.8f', k, ymu);
for i = 1 : n
fprintf(' %11.8f', x(i));
end
fprintf('\n');
if err <= tol
fprintf('\n\nThe eigenvalue after %d iterations is: %11.8f \n',k, ymu);
fprintf('The corresponding eigenvector is: \n');
for i = 1 : n
fprintf(' %11.8f \n', x(i));
end
fprintf('\n');
break;
end
k = k+1;
end
end
if k > m
fprintf('Method did not converge within %d iterations\n', m);
end
>> power_C
Enter dimension of the matrix, n: 3
Enter the tolerance, tol: 0.00001
Enter maximum number of iterations, m: 100
Ite. Eigenvalue ............Eigenvectores............
1 3.00000000 0.60000000 0.20000000 1.00000000
2 2.20000000 0.45454545 0.45454545 1.00000000
3 2.81818182 0.48387097 0.54838710 1.00000000
4 3.12903226 0.50515464 0.50515464 1.00000000
5 3.02061856 0.50170648 0.49488055 1.00000000
6 2.98634812 0.49942857 0.49942857 1.00000000
7 2.99771429 0.49980938 0.50057186 1.00000000
8 3.00152497 0.50006351 0.50006351 1.00000000
9 3.00025403 0.50002117 0.49993650 1.00000000
10 2.99983066 0.49999294 0.49999294 1.00000000
11 2.99997177 0.49999765 0.50000706 1.00000000
12 3.00001882 0.50000078 0.50000078 1.00000000
The eigenvalue after 12 iterations is: 3.00001882
The corresponding eigenvector is:
0.50000078
0.50000078
1.00000000
No comments