Professor Diomar Cesar Lobao

Universidade Federal Fluminense-Volta Redonda, RJ, Brasil

Diomar Cesar


Dept. Ciências Exatas - Exact Science Dept.

Search

power.m

% 
% Solution of Eigen-value problem using the Power Method
%

A = [2 -1 0 0;-1 2 -1 0;0 -1 2 -1; 0 0 -1 2] % coef matrix
y = [1; 0; 0; 0]                             % starting vector

fprintf('\nPower Method Demonstration\n\n');
highlow = input('Determine highest (1) or lowest (2) eigenvalue: ');

if highlow == 2  % lowest eigenvalue case: calc matrix inverse
  A = inv(A);
end;

lambda_old = 1;
error = 1;
count = 0;

while abs(error) > 0.01
  count = count + 1;

  y = A * y;          % new eigenvalue
  lambda = max(y);    % new lambda
  y = y/lambda;       % normalize

  error = (lambda - lambda_old)/lambda * 100;
  lambda_old = lambda;
  fprintf('# %i Lambda = %f Error = %f\n',count,lambda, error);
end;

if highlow == 1
  fprintf('\nHighest eigenvalue is %f\n',lambda);
else
  fprintf('\nLowest eigenvalue is %f\n',1/lambda);
end;
Skip to content