Tibor Djurica Potpara

How to calculate Jordan's normal form (the hard way)

June 10, 2013

  1. First thing we do is find out the spectrum of AA, that is, its eigenvalues. We shall mark them as spA={λ1,λ2,λ3,,λn}\text{sp}A=\{\lambda_1, \lambda_2, \lambda_3, \cdots, \lambda_n\}. We do this however we can, usually by finding the zeros of the characteristic polynomial, that is solving the equation det(AλI)=0\det(A-\lambda I) = 0 for λ\lambda
  2. In the next step we will be examining the sequence of generalized eigenspaces (i.e. ker(AλI)n\ker(A-\lambda I)^n for a given nn) for each λspA\lambda \in \text{sp}A.
ker(AλI)ker(AλI)2ker(AλI)3 \begin{gathered} \ker(A-\lambda I) \\ \ker(A-\lambda I)^2 \\ \ker(A-\lambda I)^3 \\ \vdots \end{gathered}

We calculate each kernel by simply solving the equation

(AλI)n[x1x2x3xn]=0 (A-\lambda I)^n \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ \vdots \\ x_n \end{bmatrix} = 0

Eventually, the two consecutive kernels in a sequence will be the same - ker(AλI)k=ker(AλI)k+1\ker(A-\lambda I)^k = \ker(A-\lambda I)^{k+1}

  1. When we have found the first such kernel, we take a look at the one that it succeeded - ker(AλI)k1\ker(A-\lambda I)^{k-1}. We must now choose such a vector x0x_0 that is in ker(AλI)k\ker(A-\lambda I)^k but not in ker(AλI)k1\ker(A-\lambda I)^{k-1}. For example if
ker(AλI)k1=L([110],[100]) \ker(A-\lambda I)^{k-1} = \mathcal{L}\left( \begin{bmatrix} 1 \\ 1 \\ 0 \end{bmatrix},\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} \right)

whereas ker(AλI)=R3\ker(A-\lambda I)=\mathbb{R}^3, we can choose

x0=[001] x_0=\begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}
  1. We now consider a sequence:
x1=(AλI)x0x2=(AλI)x1 \begin{gathered} x_1 = (A-\lambda I) x_0 \\ x_2 = (A-\lambda I) x_1 \\ \vdots \end{gathered}

Eventually one vector will be zero,

xn=0x_n = 0
  1. Concatenate the vectors up to xn1x_{n-1} together from right to left
Aλ=[xn1,xn2,,x1,x0] A_{\lambda} = \lbrack x_{n-1}, x_{n-2}, \ldots, x_1, x_0 \rbrack
  1. Repeat the above steps for every eigenvalue of AA. Then concatenate the matrices AλA_{\lambda} corresponding to each eigenvalue together.
P=[Aλ1,Aλ2,,Aλn] P = \lbrack A_{\lambda_1}, A_{\lambda_2}, \ldots, A_{\lambda_n} \rbrack

This is the so-called Jordan basis, the change-of-basis matrix we need to calculate the Jordan form. The order of AλA_{\lambda} matrices does not matter since Jordan normal form is only unique up to a permutation of Jordan blocks.

  1. We need to calculate the inverse of PP, usually by Gaussian ellimination.
  2. We calculate the Jordan form by J=P1APJ = P^{-1} A P.

Written by Tibor Djurica Potpara, a software engineer based in Dublin, Ireland. About me