Documentation

EconCSLib.Math.LinearAlgebra.PerronFrobenius

EconCSLib.Math.LinearAlgebra.PerronFrobenius #

Formalises Perron-Frobenius for strictly positive square matrices [MFoGT, Section 2.8, Exercise 1(2)] over as an application of the general-B Loomis theorem.

For any M : Fin nFin n with M i j > 0 for every i, j, there exist x, y ∈ Δ(Fin n) and λ > 0 such that

λ = 1/v where v is the Loomis value of (I, M) (identity vs. M).

Proof strategy (per blueprint) #

Apply Loomis.loomis_theorem with A := I (identity) and B := M. Loomis produces (x, y, v) with v · (xM)_j ≤ x_j and y_iv · (My)_i.

  1. v > 0: from any y i₀ > 0 (some such i₀ exists since y i = 1), combine with (My)_{i₀} > 0 (since M > 0 and y0 with full support… wait, just need (My)_i > 0).
  2. x > 0 strictly: x_jv · (xM)_j > 0.
  3. Tight inner product: ⟨x, y⟩ = v · ⟨x, My⟩ (sandwich is tight).
  4. y > 0 strictly: from tightness on (2) weighted by x > 0, every y_i = v · (My)_i > 0.
  5. Eigenvector: with y > 0 strict, tightness on (1) gives x_j = v · (xM)_j for all j, i.e., xM = (1/v) · x.

Blueprint #

Identity matrix and its wsum #

Perron-Frobenius theorem #

theorem EconCSLib.LinearAlgebra.perron_frobenius {n : } [NeZero n] (M : Fin nFin n) (hM_pos : ∀ (i j : Fin n), 0 < M i j) :
∃ (x : (stdSimplex (Fin n))) (y : (stdSimplex (Fin n))) (lam : ), 0 < lam (∀ (i : Fin n), 0 < x i) (∀ (i : Fin n), 0 < y i) (∀ (j : Fin n), (wsum x fun (i : Fin n) => M i j) = lam * x j) ∀ (i : Fin n), wsum y (M i) = lam * y i

Perron-Frobenius for positive matrices [MFoGT, Section 2.8, Exercise 1(2)]. A square matrix with strictly positive entries has a strictly positive eigenvalue λ > 0 with both a strictly positive left eigenvector x and a strictly positive right eigenvector y (each a probability distribution on Fin n).