Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Perhaps this is a simple question but it keeps puzzling me. I have a large $nxn$ 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? May be 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?

share|cite|improve this question
$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? – Graphth Mar 13 '12 at 14:03
"Machine precision" is not the same as "precision of the method". – Martin Argerami Mar 13 '12 at 14:36

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.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.