Perhaps this is a simple question but it keeps puzzling me. I have a large $n \times n$ matrix $M$ (over the complex numbers, non-Hermitian) that has $n$ different eigenvalues. (I determined the eigenvalues numerically with MatLab and checked that they are all different. Minimal difference is of the order of $10^{-2}$ while machine precision is $10^{-15}$.) The problem is that I don’t get $n$ linearly independent eigenvectors. So far I remember from my classes in Linear Algebra, this can only be the case when the matrix is defective and for a matrix to be defective, it must have less than $n$ different eigenvalues. Is this true? Maybe my problem is purely numerical. However, assume I have $n$ different eigenvalues. What is the best and numerically most stable way to construct the corresponding eigenvectors which have to be linearly independent?
-
1$\begingroup$ $n$ distinct eigenvalues implies $n$ linearly independent eigenvectors. Why don't you get a book on numerical analysis and turn to the section on eigenvalues and such? $\endgroup$– GeoffDSMar 13, 2012 at 14:03
-
$\begingroup$ "Machine precision" is not the same as "precision of the method". $\endgroup$– Martin ArgeramiMar 13, 2012 at 14:36
1 Answer
By definition, each eigenvalue has an associated eigenvector, so it is impossible that there are more eigenvalues than eigenvectors. This implies that you have in fact encountered a numerical problem, which is very common with direct eigenvalue calculations. Calculating an eigenvector for a given eigenvalue is fairly stable in most cases.
In fact, many common algorithms for the solution of eigenvector/eigenvalue problems start by finding (approximate) eigenvectors, for which the eigenvalue is then easy to calculate. If you are interested in both, just use the appropriate methods in MatLab.