Wrong calculation of eigenvalues
Show older comments
Hello all!
I'm trying to solve the generalized eigenvalue problem (A-λB)*V=0 and find the eigenvalues λ. Using qz command (or eig command for the problem (inv(B)*A-λI)*V=0) in Matlab I take the eigenvalues. In order to validate my results for a given eigenvalue λi, I calculate the det(A-λiB), which I want to be near zero. Unfortunately, I come up with a result of rank 1e80!!
Additionally, the condition number of the equivalent matrix inv(B)*A is of rank 1e9. Is this normal? I assume that I have to deal with a singular matrix, but I don't understand why Matlab doesn't warn me for that...
Please, any help would be appreciated.
Thanks, Antigoni
Accepted Answer
More Answers (1)
Matt J
on 27 Jun 2013
0 votes
I calculate the det(A-λiB), which I want to be near zero
You should really look at rcond(A-λiB) instead of the determinant.
6 Comments
As an example of why det() is unreliable, the following matrix is pretty clearly singular for numerical purposes, but has a huge determinant
>> A=diag(10*ones(90,1)); A(end)=1e-9;
>> det(A)
ans =
1.0000e+80
Matt J
on 27 Jun 2013
Antigone Commented:
Hi Matt!
Thanks for the answer. I computed rcond(A-λiB) and is equal to 6.3025e-020 for the first eigenvalue. Documentation says that if rcond(X) is near 1, then X is well-conditioned, else if is near EPS, then X is badly conditioned. I think in my case, A-λiB is badly conditioned, right? So I should try to find alternative ways to compute eigenvalues? On the other hand, if I write [V,D]=eig(A,B) and compare A*V with B*V*D (as documentation of eig says), then these two results are very close. Which conclusion is the right one? I'm a bit confused here...
Antigoni
on 27 Jun 2013
Antigoni
on 27 Jun 2013
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!