Power Method Eigenvectors Code

10 vues (au cours des 30 derniers jours)
Benjamin Boettcher
Benjamin Boettcher le 28 Jan 2021
I am attempting to make a code for a manual computation of the Power Method.
I think I have it working properly but wanted to make sure. Any thoughts?
function [lambda,x,k] = power_method(A,x,tol,maxit);
% Initialize
n = length(A);
k = 0;
y = zeros(1,n);
tolerance = 1;
while k < maxit && (tolerance > tol)
yk = A * x; % y(k) = A* x(k)
xnext = yk / norm(yk); % X(k+1) = yk / 2norm(yk)
lambda = dot (xnext,(A * xnext)); % lambda = X(k+1) * (A * X(k+1))
k = k + 1;
tolerance = norm(yk - lambda * x);
err = tolerance;
x = xnext;
end
  2 commentaires
James Tursa
James Tursa le 28 Jan 2021
What do you mean by "look smoother"?
Benjamin Boettcher
Benjamin Boettcher le 28 Jan 2021
Modifié(e) : Benjamin Boettcher le 28 Jan 2021
It seems to work, I guess I just wanted it verified. and see if it could be made any better.

Connectez-vous pour commenter.

Réponses (1)

James Tursa
James Tursa le 28 Jan 2021
The only obvious thing I would note is that the following line doesn't accomplish anything because you don't use err in your code, so it can be removed:
err = tolerance;
  1 commentaire
Benjamin Boettcher
Benjamin Boettcher le 28 Jan 2021
Thanks. That was an artifact from the generation of this.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Mathematics dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by