Documentation

LeanPool.HighContrastHomogenization.Provider.Response.LoadCalibrationLoads

High-contrast homogenization: Provider.Response.LoadCalibrationLoads #

Imported from the Apache-2.0 HighContrastHomogenization development at commit 7a13dbcd8d6609264a713373f5c69ceeac870472.

The exact energy sum of the two signed loads #

The boxed display of the response-load calibration:

(L_t^-)² + (L_t^+)² = 4 eᵗ(m^{1/2}S_*^{-1}m^{1/2}) e ≤ 4√θ,

with L_t^∓ = |Ê_t^{1/2}x^∓|, Ê_t = 𝐆₀ᵗE_t𝐆₀, and the two signed profile vectors x^- = (-p, q^-), x^+ = (p, q^+), q^∓ = q ± (g₀ - h)p, p = m^{-1/2}e, q = m^{1/2}e, m = B # S_*.

The proof is the printed one, through the skew-recentered blocks and the coefficient transpose. Recentering by 𝐆₀ replaces q^∓ by q ∓ hp, so the Schur factorization gives

(L_t^-)² = ⟨Sp, p⟩ + ⟨S_*⁻¹(q + rp), q + rp⟩,
(L_t^+)² = ⟨Sp, p⟩ + ⟨S_*⁻¹(q - rp), q - rp⟩,

whose sum is 2⟨Bp, p⟩ + 2⟨S_*⁻¹q, q⟩ because the two cross terms cancel and ⟨S_*⁻¹rp, rp⟩ = ⟨rᵗS_*⁻¹r p, p⟩. The Riccati characterization of the metric geometric mean gives mS_*⁻¹m = B, so both summands equal eᵗ(m^{1/2}S_*^{-1}m^{1/2})e and the sum is four times it.

For the bound, the printed proof passes through the eigenvalues of S_*^{-1/2}mS_*^{-1/2}. The route here is the equivalent Loewner one, which needs no spectral theory: joint monotonicity and homogeneity of the geometric mean turn B ≤ θS_* into m = B # S_* ≤ (θS_*) # S_* = √θ S_*, and inverting and conjugating by m^{1/2} turns that into m^{1/2}S_*^{-1}m^{1/2} ≤ √θ I.

There are no definitions in this file.

Square roots against the matrix #

theorem HCPolySupport.HighContrast.Response.inv_smul_posDef {n : Type u_1} [Fintype n] [DecidableEq n] {A : Matrix n n ℝ} (hA : A.PosDef) {c : ℝ} (hc : 0 < c) :

The dilation of a positive definite matrix inverts scalarwise.

The two signed loads #

theorem HCPolySupport.HighContrast.Response.posDef_responseBlock {d : ℕ} {S SStar r B : Mat d} (hS : Matrix.PosDef S) (hStar : Matrix.PosDef SStar) (hB : B = S + Matrix.conjTranspose r * SStar⁻¹ * r) :

The response block B = S + rᵗS_*⁻¹r is positive definite.

theorem HCPolySupport.HighContrast.Response.load_sq_neg {d : ℕ} {S SStar K r g0 h : Mat d} {Et Ehat G0 : FullBlockMat d} {p q : Vec d} (hEt : Et = schurBlock S SStar K) (hG0 : G0 = fullBlockShear g0) (hEhat : Ehat = Matrix.conjTranspose G0 * Et * G0) (hr : r = 2⁻¹ • (K + Matrix.conjTranspose K)) (hh : h = 2⁻¹ • (K - Matrix.conjTranspose K)) :

The negative load in Schur coordinates. Recentering by 𝐆₀ replaces q^- by q - hp, and the Schur factorization then produces q + rp in the second slot.

theorem HCPolySupport.HighContrast.Response.load_sq_pos {d : ℕ} {S SStar K r g0 h : Mat d} {Et Ehat G0 : FullBlockMat d} {p q : Vec d} (hEt : Et = schurBlock S SStar K) (hG0 : G0 = fullBlockShear g0) (hEhat : Ehat = Matrix.conjTranspose G0 * Et * G0) (hr : r = 2⁻¹ • (K + Matrix.conjTranspose K)) (hh : h = 2⁻¹ • (K - Matrix.conjTranspose K)) :

The positive load in Schur coordinates, through the Riccati characterization of the matrix geometric mean.

The exact sum #

theorem HCPolySupport.HighContrast.Response.load_sum_eq {d : ℕ} {S SStar K r B m g0 h : Mat d} {Et Ehat G0 : FullBlockMat d} {e p q : Vec d} (hS : Matrix.PosDef S) (hStar : Matrix.PosDef SStar) (hEt : Et = schurBlock S SStar K) (hG0 : G0 = fullBlockShear g0) (hEhat : Ehat = Matrix.conjTranspose G0 * Et * G0) (hr : r = 2⁻¹ • (K + Matrix.conjTranspose K)) (hh : h = 2⁻¹ • (K - Matrix.conjTranspose K)) (hB : B = S + Matrix.conjTranspose r * SStar⁻¹ * r) (hmdef : m = matGeomMean B SStar) (hp : p = (matSqrt m⁻¹).mulVec e) (hq : q = (matSqrt m).mulVec e) :
Sum.elim (-p) (q + Matrix.mulVec (g0 - h) p) ⬝ᵥ Matrix.mulVec Ehat (Sum.elim (-p) (q + Matrix.mulVec (g0 - h) p)) + Sum.elim p (q + Matrix.mulVec (h - g0) p) ⬝ᵥ Matrix.mulVec Ehat (Sum.elim p (q + Matrix.mulVec (h - g0) p)) = 4 * e ⬝ᵥ (matSqrt m * SStar⁻¹ * matSqrt m).mulVec e

The exact energy sum: (L_t^-)² + (L_t^+)² = 4 eᵗ(m^{1/2}S_*^{-1}m^{1/2})e.

The bound by the response ratio #

theorem HCPolySupport.HighContrast.Response.geomMean_le_sqrt_smul {d : ℕ} {S SStar r B m : Mat d} (hS : Matrix.PosDef S) (hStar : Matrix.PosDef SStar) (hB : B = S + Matrix.conjTranspose r * SStar⁻¹ * r) (hmdef : m = matGeomMean B SStar) {theta : ℝ} (htheta : 0 < theta) (hBle : B ≤ theta • SStar) :
m ≤ √theta • SStar

m ≤ √θ S_* from B ≤ θ S_*, by joint monotonicity and homogeneity of the metric geometric mean.

theorem HCPolySupport.HighContrast.Response.normalized_le_sqrt_smul_one {d : ℕ} {SStar m : Mat d} (hStar : Matrix.PosDef SStar) (hm : Matrix.PosDef m) {theta : ℝ} (htheta : 0 < theta) (hmle : m ≤ √theta • SStar) :
matSqrt m * SStar⁻¹ * matSqrt m ≤ √theta • 1

m^{1/2}S_*^{-1}m^{1/2} ≤ √θ I.

theorem HCPolySupport.HighContrast.Response.load_sum_le {d : ℕ} {S SStar K r B m g0 h : Mat d} {Et Ehat G0 : FullBlockMat d} {e p q : Vec d} (hS : Matrix.PosDef S) (hStar : Matrix.PosDef SStar) (hEt : Et = schurBlock S SStar K) (hG0 : G0 = fullBlockShear g0) (hEhat : Ehat = Matrix.conjTranspose G0 * Et * G0) (hr : r = 2⁻¹ • (K + Matrix.conjTranspose K)) (hh : h = 2⁻¹ • (K - Matrix.conjTranspose K)) (hB : B = S + Matrix.conjTranspose r * SStar⁻¹ * r) (hmdef : m = matGeomMean B SStar) (hp : p = (matSqrt m⁻¹).mulVec e) (hq : q = (matSqrt m).mulVec e) (he : e ⬝ᵥ e = 1) {theta : ℝ} (htheta : 0 < theta) (hBle : B ≤ theta • SStar) :
Sum.elim (-p) (q + Matrix.mulVec (g0 - h) p) ⬝ᵥ Matrix.mulVec Ehat (Sum.elim (-p) (q + Matrix.mulVec (g0 - h) p)) + Sum.elim p (q + Matrix.mulVec (h - g0) p) ⬝ᵥ Matrix.mulVec Ehat (Sum.elim p (q + Matrix.mulVec (h - g0) p)) ≤ 4 * √theta

The exact sum and its bound, the boxed display: for a unit vector e the two signed loads have energy sum 4 eᵗ(m^{1/2}S_*^{-1}m^{1/2})e, and that is at most 4√θ.