Documentation

Mathlib.Analysis.InnerProductSpace.Spectrum

Spectral theory of self-adjoint operators #

This file covers the spectral theory of self-adjoint operators on an inner product space.

The first part of the file covers general properties, true without any condition on boundedness or compactness of the operator or finite-dimensionality of the underlying space, notably:

The second part of the file covers properties of self-adjoint operators in finite dimension. Letting T be a self-adjoint operator on a finite-dimensional inner product space T,

These are forms of the diagonalization theorem for self-adjoint operators on finite-dimensional inner product spaces.

TODO #

Spectral theory for compact self-adjoint operators, bounded self-adjoint operators.

Tags #

self-adjoint operator, spectral theorem, diagonalization theorem

theorem LinearMap.IsSymmetric.invariant_orthogonalComplement_eigenspace {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (ΞΌ : π•œ) (v : E) (hv : v ∈ (Module.End.eigenspace T ΞΌ).orthogonal) :
T v ∈ (Module.End.eigenspace T μ).orthogonal

A self-adjoint operator preserves orthogonal complements of its eigenspaces.

theorem LinearMap.IsSymmetric.conj_eigenvalue_eq_self {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) {ΞΌ : π•œ} (hΞΌ : Module.End.HasEigenvalue T ΞΌ) :
(starRingEnd π•œ) ΞΌ = ΞΌ

The eigenvalues of a self-adjoint operator are real.

theorem LinearMap.IsSymmetric.orthogonalFamily_eigenspaces {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) :
OrthogonalFamily π•œ (fun (ΞΌ : π•œ) => β†₯(Module.End.eigenspace T ΞΌ)) fun (ΞΌ : π•œ) => (Module.End.eigenspace T ΞΌ).subtypeβ‚—α΅’

The eigenspaces of a self-adjoint operator are mutually orthogonal.

theorem LinearMap.IsSymmetric.orthogonalFamily_eigenspaces' {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) :
OrthogonalFamily π•œ (fun (ΞΌ : Module.End.Eigenvalues T) => β†₯(Module.End.eigenspace T (↑T ΞΌ))) fun (ΞΌ : Module.End.Eigenvalues T) => (Module.End.eigenspace T (↑T ΞΌ)).subtypeβ‚—α΅’
theorem LinearMap.IsSymmetric.orthogonalComplement_iSup_eigenspaces_invariant {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) ⦃v : E⦄ (hv : v ∈ (⨆ (ΞΌ : π•œ), Module.End.eigenspace T ΞΌ).orthogonal) :
T v ∈ (⨆ (ΞΌ : π•œ), Module.End.eigenspace T ΞΌ).orthogonal

The mutual orthogonal complement of the eigenspaces of a self-adjoint operator on an inner product space is an invariant subspace of the operator.

theorem LinearMap.IsSymmetric.orthogonalComplement_iSup_eigenspaces {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (ΞΌ : π•œ) :
Module.End.eigenspace (T.restrict β‹―) ΞΌ = βŠ₯

The mutual orthogonal complement of the eigenspaces of a self-adjoint operator on an inner product space has no eigenvalues.

Finite-dimensional theory #

theorem LinearMap.IsSymmetric.orthogonalComplement_iSup_eigenspaces_eq_bot {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] :
(⨆ (ΞΌ : π•œ), Module.End.eigenspace T ΞΌ).orthogonal = βŠ₯

The mutual orthogonal complement of the eigenspaces of a self-adjoint operator on a finite-dimensional inner product space is trivial.

theorem LinearMap.IsSymmetric.orthogonalComplement_iSup_eigenspaces_eq_bot' {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] :
(⨆ (ΞΌ : Module.End.Eigenvalues T), Module.End.eigenspace T (↑T ΞΌ)).orthogonal = βŠ₯
noncomputable instance LinearMap.IsSymmetric.directSumDecomposition {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} [FiniteDimensional π•œ E] [hT : Fact T.IsSymmetric] :

The eigenspaces of a self-adjoint operator on a finite-dimensional inner product space E gives an internal direct sum decomposition of E.

Note this takes hT as a Fact to allow it to be an instance.

Equations
  • LinearMap.IsSymmetric.directSumDecomposition = β‹―.decomposition β‹―
theorem LinearMap.IsSymmetric.directSum_decompose_apply {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} [FiniteDimensional π•œ E] [_hT : Fact T.IsSymmetric] (x : E) (ΞΌ : Module.End.Eigenvalues T) :
((DirectSum.decompose fun (ΞΌ : Module.End.Eigenvalues T) => Module.End.eigenspace T (↑T ΞΌ)) x) ΞΌ = (orthogonalProjection (Module.End.eigenspace T (↑T ΞΌ))) x
theorem LinearMap.IsSymmetric.direct_sum_isInternal {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] :

The eigenspaces of a self-adjoint operator on a finite-dimensional inner product space E gives an internal direct sum decomposition of E.

noncomputable def LinearMap.IsSymmetric.diagonalization {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] :
E ≃ₗᡒ[π•œ] PiLp 2 fun (ΞΌ : Module.End.Eigenvalues T) => β†₯(Module.End.eigenspace T (↑T ΞΌ))

Isometry from an inner product space E to the direct sum of the eigenspaces of some self-adjoint operator T on E.

Equations
  • hT.diagonalization = β‹―.isometryL2OfOrthogonalFamily β‹―
Instances For
    @[simp]
    theorem LinearMap.IsSymmetric.diagonalization_symm_apply {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] (w : PiLp 2 fun (ΞΌ : Module.End.Eigenvalues T) => β†₯(Module.End.eigenspace T (↑T ΞΌ))) :
    hT.diagonalization.symm w = Finset.univ.sum fun (ΞΌ : Module.End.Eigenvalues T) => ↑(w ΞΌ)
    theorem LinearMap.IsSymmetric.diagonalization_apply_self_apply {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] (v : E) (ΞΌ : Module.End.Eigenvalues T) :
    hT.diagonalization (T v) ΞΌ = ↑T ΞΌ β€’ hT.diagonalization v ΞΌ

    Diagonalization theorem, spectral theorem; version 1: A self-adjoint operator T on a finite-dimensional inner product space E acts diagonally on the decomposition of E into the direct sum of the eigenspaces of T.

    theorem LinearMap.IsSymmetric.eigenvectorBasis_def {π•œ : Type u_3} [RCLike π•œ] {E : Type u_4} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) :
    hT.eigenvectorBasis hn = DirectSum.IsInternal.subordinateOrthonormalBasis hn β‹― β‹―
    @[irreducible]
    noncomputable def LinearMap.IsSymmetric.eigenvectorBasis {π•œ : Type u_3} [RCLike π•œ] {E : Type u_4} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) :
    OrthonormalBasis (Fin n) π•œ E

    A choice of orthonormal basis of eigenvectors for self-adjoint operator T on a finite-dimensional inner product space E.

    TODO Postcompose with a permutation so that these eigenvectors are listed in increasing order of eigenvalue.

    Equations
    Instances For
      theorem LinearMap.IsSymmetric.eigenvalues_def {π•œ : Type u_3} [RCLike π•œ] {E : Type u_4} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) (i : Fin n) :
      hT.eigenvalues hn i = RCLike.re (↑T (DirectSum.IsInternal.subordinateOrthonormalBasisIndex hn β‹― i β‹―))
      @[irreducible]
      noncomputable def LinearMap.IsSymmetric.eigenvalues {π•œ : Type u_3} [RCLike π•œ] {E : Type u_4} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) (i : Fin n) :

      The sequence of real eigenvalues associated to the standard orthonormal basis of eigenvectors for a self-adjoint operator T on E.

      TODO Postcompose with a permutation so that these eigenvalues are listed in increasing order.

      Equations
      Instances For
        theorem LinearMap.IsSymmetric.hasEigenvector_eigenvectorBasis {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) (i : Fin n) :
        Module.End.HasEigenvector T (↑(hT.eigenvalues hn i)) ((hT.eigenvectorBasis hn) i)
        theorem LinearMap.IsSymmetric.hasEigenvalue_eigenvalues {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) (i : Fin n) :
        Module.End.HasEigenvalue T ↑(hT.eigenvalues hn i)
        @[simp]
        theorem LinearMap.IsSymmetric.apply_eigenvectorBasis {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) (i : Fin n) :
        T ((hT.eigenvectorBasis hn) i) = ↑(hT.eigenvalues hn i) β€’ (hT.eigenvectorBasis hn) i
        theorem LinearMap.IsSymmetric.eigenvectorBasis_apply_self_apply {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) [FiniteDimensional π•œ E] {n : β„•} (hn : FiniteDimensional.finrank π•œ E = n) (v : E) (i : Fin n) :
        (hT.eigenvectorBasis hn).repr (T v) i = ↑(hT.eigenvalues hn i) * (hT.eigenvectorBasis hn).repr v i

        Diagonalization theorem, spectral theorem; version 2: A self-adjoint operator T on a finite-dimensional inner product space E acts diagonally on the identification of E with Euclidean space induced by an orthonormal basis of eigenvectors of T.

        @[simp]
        theorem inner_product_apply_eigenvector {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΌ : π•œ} {v : E} {T : E β†’β‚—[π•œ] E} (h : v ∈ Module.End.eigenspace T ΞΌ) :
        βŸͺv, T v⟫_π•œ = ΞΌ * ↑‖vβ€– ^ 2
        theorem eigenvalue_nonneg_of_nonneg {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΌ : ℝ} {T : E β†’β‚—[π•œ] E} (hΞΌ : Module.End.HasEigenvalue T ↑μ) (hnn : βˆ€ (x : E), 0 ≀ RCLike.re βŸͺx, T x⟫_π•œ) :
        0 ≀ ΞΌ
        theorem eigenvalue_pos_of_pos {π•œ : Type u_1} [RCLike π•œ] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π•œ E] {ΞΌ : ℝ} {T : E β†’β‚—[π•œ] E} (hΞΌ : Module.End.HasEigenvalue T ↑μ) (hnn : βˆ€ (x : E), 0 < RCLike.re βŸͺx, T x⟫_π•œ) :
        0 < ΞΌ