Matrix similarity transformations introduce small imaginary eigenvalue components

17 visualizaciones (últimos 30 días)
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 comentarios
David Goodmanson
David Goodmanson el 2 de Oct. de 2018
Editada: David Goodmanson el 2 de Oct. de 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 el 2 de Oct. de 2018
Editada: Anish Potnis el 2 de Oct. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Christine Tobler
Christine Tobler el 2 de Oct. de 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.

Más respuestas (0)

Categorías

Más información sobre Linear Algebra en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by