MATLAB: Does adding a negligible perturbation to a matrix change the eigenvectors as returned by the EIG function in MATLAB

eigenvectoreigenvectorsMATLAB

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.

Best Answer

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.
Related Question