mathlib documentation

linear_algebra.matrix.charpoly.coeff

Characteristic polynomials #

We give methods for computing coefficients of the characteristic polynomial.

Main definitions #

theorem charmatrix_apply_nat_degree {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] {M : matrix n n R} [nontrivial R] (i j : n) :
(charmatrix M i j).nat_degree = ite (i = j) 1 0
theorem charmatrix_apply_nat_degree_le {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] {M : matrix n n R} (i j : n) :
(charmatrix M i j).nat_degree ite (i = j) 1 0
theorem matrix.charpoly_sub_diagonal_degree_lt {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R) :
(M.charpoly - ∏ (i : n), (polynomial.X - polynomial.C (M i i))).degree < (fintype.card n - 1)
theorem matrix.charpoly_coeff_eq_prod_coeff_of_le {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R) {k : } (h : fintype.card n - 1 k) :
M.charpoly.coeff k = (∏ (i : n), (polynomial.X - polynomial.C (M i i))).coeff k
theorem matrix.det_of_card_zero {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (h : fintype.card n = 0) (M : matrix n n R) :
M.det = 1
theorem matrix.charpoly_degree_eq_dim {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] [nontrivial R] (M : matrix n n R) :
theorem matrix.charpoly_nat_degree_eq_dim {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] [nontrivial R] (M : matrix n n R) :
theorem matrix.charpoly_monic {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R) :
theorem matrix.trace_eq_neg_charpoly_coeff {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] [nonempty n] (M : matrix n n R) :
theorem matrix.mat_poly_equiv_eval {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R[X]) (r : R) (i j : n) :
theorem matrix.eval_det {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R[X]) (r : R) :
theorem matrix.det_eq_sign_charpoly_coeff {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R) :
M.det = ((-1) ^ fintype.card n) * M.charpoly.coeff 0
theorem mat_poly_equiv_eq_X_pow_sub_C {n : Type v} [decidable_eq n] [fintype n] {K : Type u_1} (k : ) [field K] (M : matrix n n K) :
@[simp]
theorem finite_field.matrix.charpoly_pow_card {n : Type v} [decidable_eq n] [fintype n] {K : Type u_1} [field K] [fintype K] (M : matrix n n K) :
@[simp]
theorem zmod.charpoly_pow_card {n : Type v} [decidable_eq n] [fintype n] {p : } [fact (nat.prime p)] (M : matrix n n (zmod p)) :
theorem finite_field.trace_pow_card {n : Type v} [decidable_eq n] [fintype n] {K : Type u_1} [field K] [fintype K] (M : matrix n n K) :
theorem zmod.trace_pow_card {n : Type v} [decidable_eq n] [fintype n] {p : } [fact (nat.prime p)] (M : matrix n n (zmod p)) :
(matrix.trace n (zmod p) (zmod p)) (M ^ p) = (matrix.trace n (zmod p) (zmod p)) M ^ p
theorem matrix.is_integral {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] {M : matrix n n R} :
theorem matrix.minpoly_dvd_charpoly {n : Type v} [decidable_eq n] [fintype n] {K : Type u_1} [field K] (M : matrix n n K) :
theorem matrix.aeval_eq_aeval_mod_charpoly {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R) (p : R[X]) :

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

theorem matrix.pow_eq_aeval_mod_charpoly {R : Type u} [comm_ring R] {n : Type v} [decidable_eq n] [fintype n] (M : matrix n n R) (k : ) :

Any matrix power can be computed as the sum of matrix powers less than fintype.card n.

TODO: add the statement for negative powers phrased with zpow.

theorem charpoly_left_mul_matrix {K : Type u_1} {S : Type u_2} [field K] [comm_ring S] [algebra K S] (h : power_basis K S) :

The characteristic polynomial of the map λ x, a * x is the minimal polynomial of a.

In combination with det_eq_sign_charpoly_coeff or trace_eq_neg_charpoly_coeff and a bit of rewriting, this will allow us to conclude the field norm resp. trace of x is the product resp. sum of x's conjugates.