complex eigenvalues
조회 수: 4 (최근 30일)
이전 댓글 표시
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
채택된 답변
Walter Roberson
2011년 12월 5일
"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
Walter Roberson
2011년 12월 6일
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.
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!