Documentation

Atlas.AnAlgorithmistsToolkit.code.CourantFischer

theorem CourantFischer.rayleigh_spectral_expansion {m : } {A : Matrix (Fin m) (Fin m) } (hA : A.IsHermitian) (x : Fin m) :
x ⬝ᵥ A.mulVec x = i : Fin m, hA.eigenvalues i * ((hA.eigenvectorBasis i).ofLp ⬝ᵥ x) ^ 2
theorem CourantFischer.parseval_eigenvectors {m : } {A : Matrix (Fin m) (Fin m) } (hA : A.IsHermitian) (x : Fin m) :
i : Fin m, ((hA.eigenvectorBasis i).ofLp ⬝ᵥ x) ^ 2 = x ⬝ᵥ x
theorem CourantFischer.eigenvalues_antitone {m : } {A : Matrix (Fin m) (Fin m) } (hA : A.IsHermitian) (i j : Fin m) (hij : i j) :
theorem CourantFischer.rayleigh_le_eigenvalue_orthogonal {m : } {A : Matrix (Fin m) (Fin m) } (hA : A.IsHermitian) (k : Fin m) (x : Fin m) (hx : x ⬝ᵥ x = 1) (horth : j < k, (hA.eigenvectorBasis j).ofLp ⬝ᵥ x = 0) :
theorem CourantFischer.rayleigh_spectral_expansion_V {V : Type u_1} [Fintype V] [DecidableEq V] {L : Matrix V V } (hL : L.IsHermitian) (x : V) :
x ⬝ᵥ L.mulVec x = i : V, hL.eigenvalues i * ((hL.eigenvectorBasis i).ofLp ⬝ᵥ x) ^ 2
theorem CourantFischer.parseval_eigenvectors_V {V : Type u_1} [Fintype V] [DecidableEq V] {L : Matrix V V } (hL : L.IsHermitian) (x : V) :
i : V, ((hL.eigenvectorBasis i).ofLp ⬝ᵥ x) ^ 2 = x ⬝ᵥ x
theorem CourantFischer.rayleighQuotient_orthogonal_isLeast {V : Type u_1} [Fintype V] [DecidableEq V] {L : Matrix V V } (hL : L.IsHermitian) (k : V) :
IsLeast {r : | ∃ (x : V), x 0 (∀ (j : V), hL.eigenvalues j < hL.eigenvalues k(hL.eigenvectorBasis j).ofLp ⬝ᵥ x = 0) x ⬝ᵥ L.mulVec x / x ⬝ᵥ x = r} (hL.eigenvalues k)
theorem CourantFischer.laplacian_quadratic_form_eq {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (x : V) :
x ⬝ᵥ (SimpleGraph.lapMatrix G).mulVec x = (∑ i : V, j : V, if G.Adj i j then (x i - x j) ^ 2 else 0) / 2
theorem CourantFischer.laplacian_edge_sum_min_characterization {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (hL : (SimpleGraph.lapMatrix G).IsHermitian) (k : V) :
IsLeast {r : | ∃ (x : V), x 0 (∀ (j : V), hL.eigenvalues j < hL.eigenvalues k(hL.eigenvectorBasis j).ofLp ⬝ᵥ x = 0) (∑ i : V, j : V, if G.Adj i j then (x i - x j) ^ 2 else 0) / 2 / x ⬝ᵥ x = r} (hL.eigenvalues k)
theorem CourantFischer.laplacian_edge_sum_max_quotient_characterization {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (hL : (SimpleGraph.lapMatrix G).IsHermitian) (i₀ : V) (hi₀ : ∀ (j : V), hL.eigenvalues j hL.eigenvalues i₀) :
IsGreatest {r : | ∃ (x : V), x 0 (∑ i : V, j : V, if G.Adj i j then (x i - x j) ^ 2 else 0) / 2 / x ⬝ᵥ x = r} (hL.eigenvalues i₀)
theorem CourantFischer.ones_ne_zero {V : Type u_1} [Nonempty V] :
(fun (x : V) => 1) 0
theorem CourantFischer.laplacian_quadform_ones_eq_zero {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] :
((fun (x : V) => 1) ⬝ᵥ (SimpleGraph.lapMatrix G).mulVec fun (x : V) => 1) = 0
theorem CourantFischer.laplacian_rayleigh_ones_eq_zero {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] :
(((fun (x : V) => 1) ⬝ᵥ (SimpleGraph.lapMatrix G).mulVec fun (x : V) => 1) / (fun (x : V) => 1) ⬝ᵥ fun (x : V) => 1) = 0
theorem CourantFischer.corollary24_rayleighQuotient {V : Type u_1} [Fintype V] [DecidableEq V] [Nonempty V] (G : SimpleGraph V) [DecidableRel G.Adj] (hL : (SimpleGraph.lapMatrix G).IsHermitian) (k : V) (hk : ∀ (x : V), (∀ (j : V), hL.eigenvalues j < hL.eigenvalues k(hL.eigenvectorBasis j).ofLp ⬝ᵥ x = 0) i : V, x i = 0) (i₀ : V) (hi₀ : ∀ (j : V), hL.eigenvalues j hL.eigenvalues i₀) :
IsLeast {r : | ∃ (x : V), x 0 x ⬝ᵥ (SimpleGraph.lapMatrix G).mulVec x / x ⬝ᵥ x = r} 0 IsLeast {r : | ∃ (x : V), x 0 i : V, x i = 0 (∑ i : V, j : V, if G.Adj i j then (x i - x j) ^ 2 else 0) / 2 / x ⬝ᵥ x = r} (hL.eigenvalues k) IsGreatest {r : | ∃ (x : V), x 0 (∑ i : V, j : V, if G.Adj i j then (x i - x j) ^ 2 else 0) / 2 / x ⬝ᵥ x = r} (hL.eigenvalues i₀)