rank-jump (Weyr) formula
How do you find the Jordan form without computing eigenvectors? You count. The kernels of the powers (A - lambda*I)^k grow as k increases, then stop; the way they grow encodes exactly the block sizes. The rank-jump formula turns those dimension differences into the precise number of blocks of each size.
Let n_k = dim ker(A - lambda*I)^k (with n_0 = 0). The first differences d_k = n_k - n_{k-1} form a non-increasing sequence (this is the Weyr characteristic). Then the number of Jordan blocks of size exactly k for lambda is the second difference: (number of size-k blocks) = d_k - d_{k+1} = (n_k - n_{k-1}) - (n_{k+1} - n_k) = 2*n_k - n_{k-1} - n_{k+1}.
Read it as a story: d_1 = n_1 is the total number of blocks (the geometric multiplicity, one eigenvector each). Each later d_k counts the blocks of size at least k. So the drop from d_k to d_{k+1} is the count of blocks whose size is exactly k. Once the kernels stop growing (d_k = 0), you have all the blocks.
This is the practical heart of the subject: with only rank computations on a few matrix powers — no eigenvectors needed — you read off the entire Jordan structure of each eigenvalue. It is also what makes uniqueness obvious, since these dimensions are similarity invariants.
Nullities 2,3,3 give one size-1 block and one size-2 block — algebraic multiplicity 3, geometric multiplicity 2.
In rank form: number of size-k blocks = rank(A-lambda*I)^{k-1} - 2*rank(A-lambda*I)^k + rank(A-lambda*I)^{k+1}.