Power Method Eigenvectors Code

5 ビュー (過去 30 日間)
Benjamin Boettcher
Benjamin Boettcher 2021 年 1 月 28 日
コメント済み: Benjamin Boettcher 2021 年 1 月 28 日
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 件のコメント
James Tursa
James Tursa 2021 年 1 月 28 日
What do you mean by "look smoother"?
Benjamin Boettcher
Benjamin Boettcher 2021 年 1 月 28 日
編集済み: Benjamin Boettcher 2021 年 1 月 28 日
It seems to work, I guess I just wanted it verified. and see if it could be made any better.

サインインしてコメントする。

回答 (1 件)

James Tursa
James Tursa 2021 年 1 月 28 日
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 件のコメント
Benjamin Boettcher
Benjamin Boettcher 2021 年 1 月 28 日
Thanks. That was an artifact from the generation of this.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMathematics についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by