Matrix similarity transformations introduce small imaginary eigenvalue components

15 views (last 30 days)
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
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).
Anish Potnis
Anish Potnis on 2 Oct 2018
Edited: Anish Potnis on 2 Oct 2018
Hey, thanks for the response. I understood that eigenvalues are preserved under similarity transformations, I just sort of boiled my problem down to help me understand conceptually what exactly the issue is with the numerical side of things. I'm doing a bunch of other kinds of transformations in my code, but I wanted to understand a simplified example first.

Sign in to comment.

Accepted Answer

Christine Tobler
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.

More Answers (0)

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!