Generalized Eigenvectors

Here is a simple example of a nonsemisimple matrix.

A ={{-1,-1,0},{1,-3,0},{-4,-1,3}};
A//MatrixForm
Eigenvalues[A]
Eigenvectors[A]

To get a basis of generalized eigenvectors we need to find g.e.v.’s for the eigenvalue -2.  We can get them by solving  (A-(-2)I)^2 v = 0.  Any vector v=(v1,v2,v3) with v1=v3 is a solution.

a2=A-(-2)*IdentityMatrix[3];
a2.a2//MatrixForm

A nice basis would be a chain of gev’s.  The simplest gev may be (0,1,0).

V2={0,1,0}
V1= a2.V2

The third basis vector will be the evect for the eigenvalue 3.  The new matrix is in Jordan form.

V3={0,0,1};
P={V1,V2,V3}//Transpose;P//MatrixForm
B= Inverse[P].A.P; B//MatrixForm

Finding Exp[tB] and then Exp[tA]

The semisimple and nilpotent parts of B can be read off from the form of the matrix. The square of the nilpotent part is zero.

SB=DiagonalMatrix[{-2,-2,3}]
NB=B-SB;
{SB//MatrixForm,NB//MatrixForm,NB.NB//MatrixForm}

First calculate Exp[t B]

etb = DiagonalMatrix[Exp[t{-2,-2,3}]].(IdentityMatrix[3]+t*NB);
etb//MatrixForm

Then we can get Exp[t A] by changing coordinates.

eta = P.etb.Inverse[P];
eta//MatrixForm

Finding A = S+N and then Exp[t A]

An alternative is to find the semisimple and nilpotent parts of A itself.  We find S by coordinate change from the diagonal matrix of eigenvalues and then N = A - S.

SA = P.DiagonalMatrix[{-2,-2,3}].Inverse[P];
NA = A-SA;
{SA//MatrixForm,NA//MatrixForm,NA.NA//MatrixForm}

ets = P.DiagonalMatrix[Exp[t*{-2,-2,3}]].Inverse[P];
etn = IdentityMatrix[3]+t*NA;
eta = ets.etn//Simplify;
{ets//MatrixForm,etn//MatrixForm,eta//MatrixForm}