Skip to content

Cayley-Hamilton theorem I

July 23, 2009

This post proves Cayley-Hamilton using invariant subspaces.

The Cayley-Hamilton theorem is one of the most basic results in linear algebra.

(Cayley-Hamilton) If A is a n \times n matrix with entries in a field F, p_A(t) = det(tI_n - A) is its characteristic polynomial, then p_A(A) = 0.


To show that p(A) = 0, it suffices to show that for any vector v \in F^n, p(A)v = 0. This prompts us to think about invariant subspaces.

Take any v \neq 0 \in F^n. Let W = \mathrm{span} \{ v, Av, \cdots \} be a subspace of F^n. If \mathrm{dim} W = k, it means that the minimal polynomial of v is of degree k.  Let this polynomial be q(t) = a_0 + a_1t + \cdots + a_{k}t^{k}.

Extend a basis of W, namely v, Av, \cdots, A^{k-1}v to a basis of V. Then the upper k \times k block B of the matrix wrt the new basis is exactly \left(\begin{array}{ccccc} 0 & 0 & \cdots & 0 & -a_0 \\ 1 & 0 & \cdots & 0 & -a_1 \\ 0 & 1 & \cdots & 0 & -a_2 \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & \cdots & 1 & -a_n \end{array}\right)

Since the characteristic polynomial is an invariant under base change, and by the product formula of determinant of block matrices, we have p_B(t) | p_A(t). It remains to show that p_B(t) = q(t) = a_0 + a_1t + \cdots + a_{k}t^{k}, which is easily checked by direct computation.

Since q(A)v = 0, we have p_A(A)v = 0. Since v is arbitrary, we have shown that p_A(A) = 0.


  1. The above proof shows that Cayley-Hamilton holds in any field F. According to the wikipedia entry, this theorem is in fact the source of Nakayama’s lemma.
No comments yet

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: