complex eigenvalues
4 views (last 30 days)
Show older comments
Hi, I have a square symmetric matrix (5,5) with complex entries,the output eigenvalues when I use eig(T) are all complex .I want to determine the smallest negative eigenvalue.I don't know how ,any one can help.
2 Comments
Accepted Answer
Walter Roberson
on 5 Dec 2011
"smallest" is not defined for complex numbers. "negative" is not defined for complex numbers either.
You can compare real parts, or you can compare imaginary parts, or you can compare magnitudes.
[vals, idx] = min(real(E));
E(idx)
or
[vals, idx] = min(imag(E));
E(idx)
or
[vals, idx] = min(abs(E));
E(idx)
8 Comments
Walter Roberson
on 6 Dec 2011
hypot has been in versions since sometime in 2008 or before; I have not traced it further.
When I read Loren's blog about hypot, I see in the comments that abs() is also implemented robustly, so there would be no advantage to using hypot() over using abs(), so you might as well not bother.
http://blogs.mathworks.com/loren/2008/02/07/why-hypot/
If you are looking for the eigenvalue with the smallest magnitude (such as min(abs(E)) would find), then you could instead use
gamma = eigs(T,1,'sm');
which will find just the one eigenvalue. Smallest magnitude could be positive or negative for the real or imaginary components, though -- the eigenvalue closest to 0. There is unfortunately no way with eigs to pick out just the complex eigenvalue with the real component or imaginary component closest to negative infinity: you will have to use one of the above min() forms for that.
More Answers (0)
See Also
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!