When I'm in a hurry (such as on an exam), I let MATLAB or my TI-89 compute eigenvectors from a square matrix. This is all good and well, except for the times I want to use the eigenvectors for forming a modal matrix to do diagonalization. Sometimes, the eigenvectors that are returned from the tools form a modal matrix that is not invertible, and I end up spending a good chunk of time finding new eigenvectors that work out by hand.
Are there any kind of shortcuts or tricks I can do to the non-invertible modal matrix to quickly come up with a new one (that may be invertible)?
What Matlab gives you is the set of eigenvalues (with algebraic multiplicity) and as many linearly independent eigenvectors as it can give you.
When $A$ is not diagonalizable, there will not be enough linearly independent eigenvectors. In order to put the matrix into Jordan canonical form, you will need the necessary generalized eigenvectors.
For your example, the matrix $$ A = \begin{bmatrix} -1 & 2 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & -2 \end{bmatrix} $$ we know that $v = (1,0,0)^T$ is an eigenvalue for $-1$ with an eigenvector missing, so we find the associated generalized eigenvector by finding a solution to $(A- \lambda I) x = v$. So, in this case, we'd solve $$ \pmatrix{0&2&0\\0&0&0\\0&0&1}x = \pmatrix{1\\0\\0} $$ which has solution, for example, $x = (0,1/2,0)$. So, setting $$ M = \pmatrix{1&0&0\\0&1/2&0\\0&0&1} $$ We'll find that $$ J = M^{-1}AM = \pmatrix{-1 & 1 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & -2} $$