[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!