Matrix similarity transformations introduce small imaginary eigenvalue components
15 views (last 30 days)
Show older comments
Anish Potnis
on 2 Oct 2018
Edited: Anish Potnis
on 2 Oct 2018
So I'm having an issue with numerical precision. To boil my problem down...
Let A = eye(3) + 1e-6*rand(3) (1)
and let eig(A) return all real eigenvalues (empirically, this happens about 80% the time when I run (1)). I then apply a unitary similarity transformation, B = QAQ*. Now, eig(B) has a small imaginary component, which is a problem for my application.
Is it preferable to symmetrize A prior to the similarity transformation, or to symmetrize B after the similarity transformation...?
I'm not familiar with any theorems that relate the real part of a matrix's eigenvalues to the eigenvalues of its symmetrized form.
Any thoughts?
Thanks!
2 Comments
David Goodmanson
on 2 Oct 2018
Edited: David Goodmanson
on 2 Oct 2018
Hi Anish, if the unitary matrix Q is known, can you just skip the eigenvalue calculation on B? The eigenvalues of A and B are identical, and if
[V_A lambda] = eig(A)
then the similar eigenvector matrix for B is
V_B = Q*V_A
(in comparing results, eig(A) and eig(B) may have eigenvalues in different order and their eigenvector matrix columns in the same different order, but that is a bookkeeping detail).
Accepted Answer
Christine Tobler
on 2 Oct 2018
If you know the matrix A is supposed to be symmetric, I'd say symmetrize A, and then symmetrize B again, because Q*A*Q' will introduce a small numerical error and not be exactly symmetrical.
Although if you can directly transform the eigenvalues as David suggest, that would probably be best. It depends on whether the matrix A is meant to be symmetric, I'd say.
0 Comments
More Answers (0)
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!