Assembling A = P J P^-1
Every complex n-by-n matrix is similar to a Jordan canonical form J: there is an invertible P with A = P J P^-1. The columns of P are a Jordan basis — the Jordan chains, written bottom-to-top, eigenvalue by eigenvalue. Read it as a change of basis: in the world of P's columns, A is just the clean block-diagonal J.
Worked example. A = [5 1 0 0;
0 5 0 0;
0 0 5 0;
0 0 0 3] (already nearly there to expose the recipe)
Eigenvalue 5: algebraic mult 3. N = A - 5I has rank 1 on that block group
-> d_1 = 3 - 1 = 2 blocks ; ranks give partition (2, 1)
Eigenvalue 3: a 1-by-1 block.
J = [5 1 0 0;
0 5 0 0;
0 0 5 0;
0 0 0 3]
Jordan basis (columns of P), chains bottom-to-top:
for 5: chain {u1, u2} with (A-5I)u2 = u1, (A-5I)u1 = 0 ; lone eigvec w
for 3: eigenvector z
P = [ u1 | u2 | w | z ] and A = P J P^-1The full recipe
With the previous guides in hand the construction is mechanical. The eigenvalues come from the characteristic polynomial, the block sizes come from rank data, and the basis comes from the chains. Here is the end-to-end loop you run for any complex matrix.
- Find eigenvalues from the characteristic polynomial; each contributes a generalized eigenspace that becomes one group of Jordan blocks.
- For each lambda, compute ranks of powers of (A - lambda I) and apply the rank-jump formula to get the block-size partition.
- Build a Jordan chain for each block (top generalized eigenvector down to an eigenvector); collect all chains as the columns of P.
- Write J block-diagonal with one J_k(lambda) per chain, ordered consistently with P. Verify A P = P J.
Why it is essentially unique
The Jordan basis P is far from unique — you can rescale and recombine chains. But J itself is unique up to the order of its blocks. The reason is the previous guide: the eigenvalues and the rank-jump partitions are similarity invariants, and they completely determine the multiset of blocks. This is the uniqueness of the Jordan form.