# mathlibdocumentation

linear_algebra.charpoly.basic

# Characteristic polynomial #

We define the characteristic polynomial of f : M →ₗ[R] M, where M is a finite and free R-module. The proof that f.charpoly is the characteristic polynomial of the matrix of f in any basis is in linear_algebra/charpoly/to_matrix.

## Main definition #

• linear_map.charpoly f : the characteristic polynomial of f : M →ₗ[R] M.
noncomputable def linear_map.charpoly {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] (f : M →ₗ[R] M) :

The characteristic polynomial of f : M →ₗ[R] M.

Equations
theorem linear_map.charpoly_def {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] (f : M →ₗ[R] M) :
theorem linear_map.charpoly_monic {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] (f : M →ₗ[R] M) :
theorem linear_map.aeval_self_charpoly {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] (f : M →ₗ[R] M) :
= 0

The Cayley-Hamilton Theorem, that the characteristic polynomial of a linear map, applied to the linear map itself, is zero.

See matrix.aeval_self_charpoly for the equivalent statement about matrices.

theorem linear_map.is_integral {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] (f : M →ₗ[R] M) :
f
theorem linear_map.minpoly_dvd_charpoly {K : Type u} {M : Type v} [field K] [ M] [ M] (f : M →ₗ[K] M) :
theorem linear_map.aeval_eq_aeval_mod_charpoly {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] (f : M →ₗ[R] M) (p : polynomial R) :
p = (p %ₘ f.charpoly)

Any endomorphism polynomial p is equivalent under evaluation to p %ₘ f.charpoly; that is, p is equivalent to a polynomial with degree less than the dimension of the module.

theorem linear_map.pow_eq_aeval_mod_charpoly {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] (f : M →ₗ[R] M) (k : ) :
f ^ k = %ₘ f.charpoly)

Any endomorphism power can be computed as the sum of endomorphism powers less than the dimension of the module.

theorem linear_map.minpoly_coeff_zero_of_injective {R : Type u} {M : Type v} [comm_ring R] [nontrivial R] [ M] [ M] [ M] {f : M →ₗ[R] M} (hf : function.injective f) :
(minpoly R f).coeff 0 0