Skip to content

Commit 7aad48b

Browse files
committed
feat(LinearAlgebra/Matrix/PosDef): trace of Hermitian matrix is sum of its eigenvalues (#28730)
Trace of Hermitian matrix is sum of its eigenvalues and trace is non-negative for positive semi-definite and positive for positive definite.
1 parent 35e8f57 commit 7aad48b

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

Mathlib/LinearAlgebra/Matrix/PosDef.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,11 @@ lemma eigenvalues_nonneg [DecidableEq n] {A : Matrix n n 𝕜}
171171
(hA : Matrix.PosSemidef A) (i : n) : 0 ≤ hA.1.eigenvalues i :=
172172
(hA.re_dotProduct_nonneg _).trans_eq (hA.1.eigenvalues_eq _).symm
173173

174+
theorem trace_nonneg {A : Matrix n n 𝕜} (hA : A.PosSemidef) : 0 ≤ A.trace := by
175+
classical
176+
simp [hA.isHermitian.trace_eq_sum_eigenvalues, ← map_sum,
177+
Finset.sum_nonneg (fun _ _ => hA.eigenvalues_nonneg _)]
178+
174179
theorem det_nonneg [DecidableEq n] {M : Matrix n n 𝕜} (hM : M.PosSemidef) :
175180
0 ≤ M.det := by
176181
rw [hM.isHermitian.det_eq_prod_eigenvalues]
@@ -528,6 +533,11 @@ lemma _root_.Matrix.IsHermitian.posDef_iff_eigenvalues_pos [DecidableEq n] {A :
528533
rw [vecMul_injective_iff_isUnit, ← unitary.val_toUnits_apply]
529534
exact Units.isUnit _
530535

536+
theorem trace_pos [Nonempty n] {A : Matrix n n 𝕜} (hA : A.PosDef) : 0 < A.trace := by
537+
classical
538+
simp [hA.isHermitian.trace_eq_sum_eigenvalues, ← map_sum,
539+
Finset.sum_pos (fun _ _ => hA.eigenvalues_pos _)]
540+
531541
theorem det_pos [DecidableEq n] {M : Matrix n n 𝕜} (hM : M.PosDef) : 0 < det M := by
532542
rw [hM.isHermitian.det_eq_prod_eigenvalues]
533543
apply Finset.prod_pos

Mathlib/LinearAlgebra/Matrix/Spectrum.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ lemma exists_eigenvector_of_ne_zero (hA : IsHermitian A) (h_ne : A ≠ 0) :
170170
obtain ⟨i, hi⟩ := Function.ne_iff.mp this
171171
exact ⟨_, _, hi, hA.eigenvectorBasis.orthonormal.ne_zero i, hA.mulVec_eigenvectorBasis i⟩
172172

173+
theorem trace_eq_sum_eigenvalues [DecidableEq n] (hA : A.IsHermitian) :
174+
A.trace = ∑ i, (hA.eigenvalues i : 𝕜) := by
175+
conv_lhs => rw [hA.spectral_theorem, trace_mul_cycle]
176+
simp
177+
173178
end IsHermitian
174179

175180
end Matrix

0 commit comments

Comments
 (0)