# Computing Jordan Canonical Form

I know how to compute Jordan Canonical Form of a nilpotent matrix, but I find a little bit tedious and long my method for computing the JCF of a general triangulable matrix. I'll show you how I compute the JCF, if you think you know a faster way to do it, please tell me.

Let $A\in M_{n\times n}(\mathbb{R}$) be a triangulable matrix, and let $\text{Sp}(A)=\{\lambda_1, \ldots, \lambda_k\}$, with $k\le n$, its spectrum and $p_A(t)=(-1)^k(t-\lambda_1)^{h_1}\cdots (t-\lambda_k)^{h_k}$, with $h_1+\cdots+h_k=n$, its characteristic polynomial. By primary decomposition theorem $\mathbb{R}^n=\text{Ker}(A-\lambda_1I)^{h_1}\oplus\cdots\oplus\text{Ker}(A-\lambda_kI)^{h_k}$ and each addendum is $A$-invariant. Let $W_{\lambda_j}=\text{Ker}(A-\lambda_jI)^{h_j}$. We also know from the theory that $\dim W_{\lambda_j}=h_j$ and that the characteristic polynomial of the restriction of $A$ to $W_{\lambda_j}$ is $\pm (t-\lambda_{j})^{h_j}$.

Now, what I do when I compute JCF, is writing primary decomposition, finding a basis $B_j$ of $W_{\lambda_j}$ and computing $M_j=\mathcal{M}_{B_j}(A)-\lambda_j I\in M_{h_j\times h_j}(\mathbb{R})$. At this point $M_j$ is a nilpotent matrix and I'm happy.

• Are you working in $\;\Bbb R^4\;$ , as written there? Because if you are things could be, imo, way simpler... – DonAntonio Feb 28 '14 at 16:23
• No, it's $\mathbb{R}^n$. Sorry, I've edited. – user72870 Feb 28 '14 at 16:25
• By "computing the JCF", do you mean finding the equivalent Jordan matrix along with the appropriate change of basis, or is it enough to simply find the Jordan matrix without the change of basis? – Omnomnomnom Feb 28 '14 at 16:26
• I have to find a basis too, but I'm also interested if there is an other method in the other case. – user72870 Feb 28 '14 at 16:29

Once you have the JCF then you can calculate the basis (columns of nonsingular matrix $P$) by equating the columns of $AP$ and $PJ$ (since $P^{-1}AP=J$) - so if $P=[X_1,X_2,X_3]$ you will get a series of equations $AX_i=X_j$ for example - it is usually relatively simple to compute from here.