[Solved] Power method, eigenvalues.
古いコメントを表示
function l = ww(A,E)
n = length(A);
y = [];
x = [];
for i = 1:n % starting vector
x(i) = A(i,1);
end;
l = 0;
blad = E; % starting value of error
while blad>=E
for i = 1:n % A*x
y(i) = 0;
for j = 1:n
y(i) = y(i) + A(i,j)*x(j);
end;
end;
blad = l;
l = 0; % Rayleigh
m = 0;
for i = 1:n
l = l + x(i)*y(i);
m = m + x(i)*x(i);
end;
l = l/m; % eigenvalue
blad = abs(l - blad); % error
x = y;
end;
end
That's how I've tried to compute eigenvalues. It works for some matrices, but for:
A =
0 -0.3333 -0.3333
-0.3333 0 0.3333
0.6000 0.2000 0
it doesn't work. How can I fix that?
7 件のコメント
Walter Roberson
2011 年 5 月 12 日
What difference do you see between what you expect and what is output?
Matt Fig
2011 年 5 月 12 日
And what is the input E??
John D'Errico
2011 年 5 月 12 日
Wow. Looks just like Fortran code to me.
Andrew Newell
2011 年 5 月 13 日
Fortran 77; 90 has vector operations.
Kamil
2011 年 5 月 13 日
Lorenzo Amabili
2017 年 3 月 17 日
編集済み: Lorenzo Amabili
2017 年 3 月 17 日
@Kamil
@Teja Muppirala
how do you set E initially? I am sorry in case this question is silly but I am still new to this field. Thank you!
karim hamza
2017 年 4 月 29 日
i have an error [not enough input argument]
採用された回答
その他の回答 (3 件)
Andrew Newell
2011 年 5 月 12 日
While we wait for more information, here is a vectorized version of whatever your algorithm is doing:
function l = ww(A,E)
x = A(:,1);
l = 0;
blad = E; % starting value of error
while blad>=E
y = A*x;
blad = l;
l = x.*y; % Rayleigh
m = x.*x;
l = l/m; % eigenvalue
blad = abs(l - blad); % error
x = y;
end;
2 件のコメント
devalaraju venkata naga amulya
2019 年 7 月 24 日
when i run the above code there is an error of input values A and E(in line function) can u help it with me im sorry im very new to the matlab
Dhruv Bhavsar
2020 年 8 月 28 日
Try calling the function in the command prompt even if you get the above mentioned error.
If it works then copy the function at the bottom of a new script and write the codes to be implemented above the function defined.
I have attached my code file for your reference.
Akankshya
2024 年 2 月 13 日
0 投票
function l = ww(A,E)
x = A(:,1);
l = 0;
blad = E; % starting value of error
while blad>=E
y = A*x;
blad = l;
l = x.*y; % Rayleigh
m = x.*x;
l = l/m; % eigenvalue
blad = abs(l - blad); % error
x = y;
end
カテゴリ
ヘルプ センター および File Exchange で Linear Algebra についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!