eig return complex values
11 次查看(过去 30 天)
显示 更早的评论
Hello,
I'm trying to find the eigenvalues and eigenvectors of an invertible matrix. The eig function returns me complex values.
But the matrix is invertible: I invert it on Pascal.
How to explain and especially how to solve this problem please?
The matrix I am trying to invert is the inv(C)*A matrix, from the attached files.
Thanks,
Michael
5 个评论
采纳的回答
Torsten
2022-1-22
编辑:Torsten
2022-1-22
Use
E = eig(A,C)
instead of
E = eig(inv(C)*A)
or
E = eig(C\A)
4 个评论
更多回答(1 个)
Matt J
2022-1-22
编辑:Matt J
2022-1-22
It turns out that B=C\A does have real eigenvalues in this particular case, but floating point errors approximations produce a small imaginary part that can be ignored.
load matrices
E=eig(C\A);
I=norm(imag(E))/norm(real(E))
So just discard the imaginary values,
E=real(E);
2 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!