Why does adding a negligible perturbation to a matrix change the eigenvectors as returned by the EIG function in MATLAB?

10 views (last 30 days)
When a matrix is perturbed with a small value of 1e-16, the eigenvectors of the perturbed matrix changes significantly. I would expect that such a small perturbation added to a matrix will not change the solution.
The following code returns different eigenvectors for C and C1
clear all;
C=[1. 0. 0.; 0. 1. 0. ; 0. 0. 1.];
[Vc,ec]=eig(C)
C1=C;
C1(1,2)=C1(1,2)+1.e-16;
[Vc1,ec1]=eig(C1);
The eigenvectors are as follows:
Vc: [1 0 0
0 1 0
0 0 1];
Vc1: [ 1.0000 -0.4106 0
0 0.9118 0
0 0 1.0000];
The eigen vector matrix Vc1 is ill-conditioned and effectively not invertible.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 Jun 2009
Eigenvectors of matrices with multiple eigenvalues are not unique, or may not even exist. The first matrix C in this case is the identity matrix, I, which is an extreme case for nonuniqueness of eigenvectors. All the eigenvalues are equal to 1, so it has maximum multiplicity. Any vector, v, is an eigenvector, that is
I*v = 1*v
MATLAB happens to return the most natural choice for the eigenvector matrix, namely another identity matrix, but it could return any other matrix. The second matrix also has 1 as an eigenvalue of full multiplicity, but it does not have a full set of eigenvectors. Its Jordan canonical form is not diagonal.
This would have be true for any perturbation added to the original matrix and not just a small perturbation that looks like roundoff error.
The MATLAB statement,
[V,D] = eig(A)
will return matrices V and D so that A*V is close to V*D. As in the case of the perturbed matrix C1, it cannot return a non-singular or well conditioned eigenvector matrix V, if a full set of eigenvectors does not exist.

More Answers (0)

Categories

Find more on Linear Algebra in Help Center and File Exchange

Products


Release

R2007b

Community Treasure Hunt

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

Start Hunting!