5.2 Semiclassical Jacobi polynomials
In this chapter
The weight \(x^a(1-x)^b(t-x)^c\) on \((0,1)\), with \(t{\gt}1\), adds a third factor to the Jacobi weight, with the extra root \(x=t\) outside the interval. The family retains sparse conversion and differentiation. Integer parameter shifts are polynomial modifications, so conversion is banded by the previous chapter. A Pearson identity \((\sigma w)'=\tau w\) makes differentiation sparse. For simultaneously raised parameters and positive orthonormal scaling, weighted differentiation is the negative transpose of the ordinary derivative matrix. The partially weighted variant has its own adjoint identity and support pattern, stated separately below. Cholesky and QR factorizations construct the parameter hierarchy, with exact finite Jacobi updates in Section 5.2.1 . These families are used in spectral methods on annuli (Chapter 5.4 ).
Definition
5.2.1
Semiclassical Jacobi weights and measures
For \(t\in (1,\infty )\) and arbitrary real \(a,b,c\), define the continuous nonnegative weight \(w_{t,a,b,c}(x)=x^a(1-x)^b(t-x)^c\) on \((0,1)\). Define \(\mu _{t,a,b,c}\) by this density on the open interval, pushed forward to \(\mathbb {R}\) by inclusion. The measure need not be finite.
Reference: [PGSO24 , Section 3] .
Lean Formalisation
def Polynomial.semiclassicalJacobiWeight (t : ↑(Set.Ioi 1)) (α β γ : ℝ) : C(↑(Set.Ioo 0 1), NNReal)
Lean definition
/-- All three power bases are positive on the typed domain. -/
noncomputable def semiclassicalJacobiWeight (t : Ioi (1 : ℝ)) (α β γ : ℝ) : C(Ioo (0 : ℝ) 1, ℝ≥0) where
toFun x := ⟨(x : ℝ) ^ α * (1 - (x : ℝ)) ^ β * ((t : ℝ) - x) ^ γ,
mul_nonneg (mul_nonneg (Real.rpow_nonneg x.property.1.le _)
(Real.rpow_nonneg (by linarith [x.property.2]) _))
(Real.rpow_nonneg (by have ht : 1 < (t : ℝ) := t.property; linarith [x.property.2]) _)⟩
continuous_toFun := by
apply Continuous.subtype_mk
apply Continuous.mul
· apply Continuous.mul
· exact continuous_subtype_val.rpow_const (fun x ↦ Or.inl x.property.1.ne')
· exact (continuous_const.sub continuous_subtype_val).rpow_const
(fun x ↦ Or.inl (by change 1 - (x : ℝ) ≠ 0; linarith [x.property.2]))
· exact (continuous_const.sub continuous_subtype_val).rpow_const
(fun x ↦ Or.inl (by change (t : ℝ) - (x : ℝ) ≠ 0; have ht : 1 < (t : ℝ) := t.property; linarith [x.property.2]))
source
1 related Lean declaration
def Polynomial.semiclassicalJacobiMeasure (t : ↑(Set.Ioi 1)) (α β γ : ℝ) : MeasureTheory.Measure ℝ
Lean definition
/-- Subtype density and inclusion define the measure, without endpoint values. -/
noncomputable def semiclassicalJacobiMeasure (t : Ioi (1 : ℝ)) (α β γ : ℝ) : Measure ℝ :=
openIntervalWeightMeasure 0 1 (semiclassicalJacobiWeight t α β γ)
source
Reference details: Semiclassical density characterisation and related results
Theorem
5.2.2
Semiclassical density characterisation
At every \(x\in (0,1)\), \(w(x)=x^\alpha (1-x)^\beta (t-x)^\gamma \), with all three power bases positive.
Lean Formalisation
theorem Polynomial.semiclassicalJacobiWeight_apply (t : ↑(Set.Ioi 1)) (α β γ : ℝ) (x : ↑(Set.Ioo 0 1)) :
↑((Polynomial.semiclassicalJacobiWeight t α β γ) x) = ↑x ^ α * (1 - ↑x) ^ β * (↑t - ↑x) ^ γ
Lean proof
/-- Characterization of the density on its classical domain. -/
theorem semiclassicalJacobiWeight_apply (t : Ioi (1 : ℝ)) (α β γ : ℝ)
(x : Ioo (0 : ℝ) 1) :
(semiclassicalJacobiWeight t α β γ x : ℝ) =
(x : ℝ) ^ α * (1 - (x : ℝ)) ^ β * ((t : ℝ) - x) ^ γ := rfl
source
Theorem
5.2.3
Semiclassical integral characterisation
A real function \(f\) is \(\mu _{t,\alpha ,\beta ,\gamma }\)-integrable if and only if \(x\mapsto w(x)f(x)\) is Lebesgue-integrable on \((0,1)\). When these equivalent integrability conditions hold,
\[ \int f\, d\mu _{t,\alpha ,\beta ,\gamma }=\int _{x\in (0,1)}w(x)f(x)\, dx. \]
Lean Formalisation
theorem Polynomial.integrable_semiclassicalJacobiMeasure_iff (t : ↑(Set.Ioi 1)) (α β γ : ℝ) (f : ℝ → ℝ) :
MeasureTheory.Integrable f (Polynomial.semiclassicalJacobiMeasure t α β γ) ↔
MeasureTheory.Integrable (fun x => ↑((Polynomial.semiclassicalJacobiWeight t α β γ) x) * f ↑x) MeasureTheory.volume
Lean proof
/-- Characterization of integrability, including every convergent endpoint singularity. -/
theorem integrable_semiclassicalJacobiMeasure_iff (t : Ioi (1 : ℝ)) (α β γ : ℝ)
(f : ℝ → ℝ) :
Integrable f (semiclassicalJacobiMeasure t α β γ) ↔
Integrable (fun x : Ioo (0 : ℝ) 1 ↦
(semiclassicalJacobiWeight t α β γ x : ℝ) * f x) volume :=
integrable_openIntervalWeightMeasure_iff _ _ _ _
source
1 related Lean declaration
theorem Polynomial.integral_semiclassicalJacobiMeasure (t : ↑(Set.Ioi 1)) (α β γ : ℝ)
(f : MeasureTheory.IntegrableInput (Polynomial.semiclassicalJacobiMeasure t α β γ)) :
∫ (x : ℝ), ↑f x ∂Polynomial.semiclassicalJacobiMeasure t α β γ =
∫ (x : ↑(Set.Ioo 0 1)), ↑((Polynomial.semiclassicalJacobiWeight t α β γ) x) * ↑f ↑x
Lean proof
/-- The weighted integral formula for bundled integrable inputs. -/
theorem integral_semiclassicalJacobiMeasure (t : Ioi (1 : ℝ)) (α β γ : ℝ)
(f : IntegrableInput (semiclassicalJacobiMeasure t α β γ)) :
∫ x, f.val x ∂semiclassicalJacobiMeasure t α β γ =
∫ x : Ioo (0 : ℝ) 1, (semiclassicalJacobiWeight t α β γ x : ℝ) * f.val x :=
integral_openIntervalWeightMeasure _ _ _ _
source
Theorem
5.2.4
Semiclassical Jacobi measure foundation
For \(t\in (1,\infty )\), \(\alpha ,\beta {\gt}-1\) and \(\gamma \in \mathbb {R}\), the classical density is integrable on \((0,1)\). Every real-valued function continuous on \([0,1]\) is integrable for its measure. The measure has finite mass and all polynomial moments, and the polynomial pairing is positive definite. There exists an orthogonal polynomial sequence of exact degrees. No normalization is fixed by this existence assertion. Reference: [PGSO24 , Section 3] .
Lean Formalisation
theorem Polynomial.integrable_semiclassicalJacobiWeight (t : ↑(Set.Ioi 1)) {α β γ : ℝ} (hα : -1 < α) (hβ : -1 < β) :
MeasureTheory.Integrable (fun x => ↑((Polynomial.semiclassicalJacobiWeight t α β γ) x)) MeasureTheory.volume
Lean proof
/-- The density has a finite integral under precisely the stated admissible exponents. -/
theorem integrable_semiclassicalJacobiWeight (t : Ioi (1 : ℝ))
{α β γ : ℝ} (hα : -1 < α) (hβ : -1 < β) :
Integrable (fun x : Ioo (0 : ℝ) 1 ↦ (semiclassicalJacobiWeight t α β γ x : ℝ)) volume := by
have := (semiclassicalJacobiMeasure_foundation t (γ := γ) hα hβ).1
simpa using (integrable_semiclassicalJacobiMeasure_iff t α β γ
(fun _ ↦ 1)).1 (integrable_const 1)
source
2 related Lean declarations
theorem Polynomial.integrable_semiclassicalJacobiMeasure {t α β γ : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) {f : ℝ → ℝ}
(hf : ContinuousOn f (Set.Icc 0 1)) : MeasureTheory.Integrable f (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ)
Lean proof
/-- Continuous functions on the closed interval are integrable for the semiclassical Jacobi measure
(Papadopoulos–Gutleb–Slevinsky–Olver, Section 3). -/
theorem integrable_semiclassicalJacobiMeasure {t α β γ : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β)
{f : ℝ → ℝ} (hf : ContinuousOn f (Icc 0 1)) :
Integrable f (semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ) := by
let P : ℝ → ℝ → ℝ := fun a x ↦ if 0 < x then x ^ a else 0
have hp (a : ℝ) (ha : -1 < a) : IntervalIntegrable (P a) volume 0 (1/2) := by
rw [intervalIntegrable_iff_integrableOn_Ioo_of_le (by norm_num : (0 : ℝ) ≤ 1/2)]
have hr : IntegrableOn (fun x : ℝ ↦ x^a) (Ioo (0 : ℝ) (1/2)) := by
have h := (integrableOn_iff_comap_subtypeVal (f := fun x : ℝ ↦ x^a)
measurableSet_Ioo).mpr (Real.integrable_rpow_openInterval ⟨a, ha⟩ 0 (1/2))
simpa using h
apply hr.congr_fun
· intro x hx
simp [P, hx.1]
· exact measurableSet_Ioo
have hab : IntervalIntegrable (fun x : ℝ ↦ P α x * P β (1-x)) volume 0 1 := by
apply IntervalIntegrable.trans (b := 1/2)
· have hreg : ContinuousOn (fun x : ℝ ↦ (1-x)^β) (uIcc 0 (1/2)) := by
apply continuousOn_of_forall_continuousAt
intro x hx
rw [uIcc_of_le (by norm_num : (0 : ℝ) ≤ 1/2)] at hx
exact (continuousAt_const.sub continuousAt_id).rpow_const
(Or.inl (by change 1-x ≠ 0; linarith [hx.2]))
apply ((hp α hα).mul_continuousOn hreg).congr
intro x hx
rw [uIoc_of_le (by norm_num : (0 : ℝ) ≤ 1/2)] at hx
simp [P, show 0 < 1-x by linarith [hx.2]]
· have hr : IntervalIntegrable (fun x : ℝ ↦ P β (1-x)) volume (1/2) 1 := by
convert ((hp β hβ).comp_sub_left 1).symm using 1 <;> norm_num
have hreg : ContinuousOn (fun x : ℝ ↦ x^α) (uIcc (1/2) 1) := by
apply continuousOn_of_forall_continuousAt
intro x hx
rw [uIcc_of_le (by norm_num : (1/2 : ℝ) ≤ 1)] at hx
exact continuousAt_id.rpow_const (Or.inl (by change x ≠ 0; linarith [hx.1]))
apply (hr.continuousOn_mul hreg).congr
intro x hx
rw [uIoc_of_le (by norm_num : (1/2 : ℝ) ≤ 1)] at hx
simp [P, show 0 < x by linarith [hx.1]]
have hi := (hab.mul_continuousOn (by
simpa only [uIcc_of_le (by norm_num : (0 : ℝ) ≤ 1)] using
continuousOn_semiclassicalJacobi_factor ht γ)).mul_continuousOn (by
simpa only [uIcc_of_le (by norm_num : (0 : ℝ) ≤ 1)] using hf)
rw [integrable_semiclassicalJacobiMeasure_iff]
rw [intervalIntegrable_iff_integrableOn_Ioo_of_le (by norm_num : (0 : ℝ) ≤ 1),
integrableOn_iff_comap_subtypeVal measurableSet_Ioo] at hi
apply hi.congr
filter_upwards [] with x
simp only [Function.comp_apply, semiclassicalJacobiWeight_apply, P,
ite_eq_left x.property.1, ite_eq_left (show 0 < 1-(x : ℝ) by linarith [x.property.2])]
source
theorem Polynomial.semiclassicalJacobiMeasure_foundation (t : ↑(Set.Ioi 1)) {α β γ : ℝ} (hα : -1 < α) (hβ : -1 < β) :
MeasureTheory.IsFiniteMeasure (Polynomial.semiclassicalJacobiMeasure t α β γ) ∧
Polynomial.HasFiniteMoments (Polynomial.semiclassicalJacobiMeasure t α β γ) ∧
Polynomial.HasPositiveDefiniteIntegral (Polynomial.semiclassicalJacobiMeasure t α β γ) ∧
∃ P, P.IsOrthogonal (Polynomial.semiclassicalJacobiMeasure t α β γ)
Lean proof
/-- Finite mass, all moments, strict positivity and orthogonal sequences in the
full classical parameter range of PGSO Section 3. -/
theorem semiclassicalJacobiMeasure_foundation (t : Ioi (1 : ℝ))
{α β γ : ℝ} (hα : -1 < α) (hβ : -1 < β) :
IsFiniteMeasure (semiclassicalJacobiMeasure t α β γ) ∧
HasFiniteMoments (semiclassicalJacobiMeasure t α β γ) ∧
HasPositiveDefiniteIntegral (semiclassicalJacobiMeasure t α β γ) ∧
∃ P : Sequence ℝ, P.IsOrthogonal (semiclassicalJacobiMeasure t α β γ) := by
exact ⟨isFiniteMeasure_semiclassicalJacobiMeasure t.property hα hβ,
hasFiniteMoments_semiclassicalJacobiMeasure t.property hα hβ,
hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure t.property hα hβ,
exists_isOrthogonal_semiclassicalJacobiMeasure t.property hα hβ⟩
source
Definition
5.2.5
Positive orthonormal semiclassical Jacobi coordinates
For \(t{\gt}1\), \(\alpha ,\beta {\gt}-1\) and arbitrary real \(\gamma \), let \((Q_n)\) be a degree-indexed polynomial sequence chosen to be orthonormal for \(x^\alpha (1-x)^\beta (t-x)^\gamma \, dx\) on \((0,1)\), with positive leading coefficients; such a sequence exists by Theorem 5.2.4 .
Reference: [PGSO24 , Section 3] .
Lean Formalisation
def Polynomial.semiclassicalJacobiSequence {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) :
Polynomial.Sequence ℝ
Lean definition
/-- The positive-leading orthonormal semiclassical Jacobi family. -/
noncomputable def semiclassicalJacobiSequence {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) : Sequence ℝ :=
(exists_positive_orthonormal_sequence (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ)
(hasFiniteMoments_semiclassicalJacobiMeasure ht hα hβ)
(hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure ht hα hβ)).choose
source
Theorem
5.2.6
Positive orthonormal semiclassical Jacobi sequence
For \(t{\gt}1\), \(\alpha ,\beta {\gt}-1\) and \(\gamma \in \mathbb {R}\), the chosen sequence \((Q_n)\) is orthogonal for the semiclassical Jacobi measure, has positive leading coefficients, and satisfies \(\int Q_n^2\, d\mu =1\) for every \(n\).
Reference: [PGSO24 , Section 3] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobiSequence_spec {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) :
(Polynomial.semiclassicalJacobiSequence ht hα hβ γ).IsOrthogonal
(Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ) ∧
(∀ (n : ℕ), 0 < (↑(Polynomial.semiclassicalJacobiSequence ht hα hβ γ) n).leadingCoeff) ∧
∀ (n : ℕ),
∫ (x : ℝ),
Polynomial.eval x (↑(Polynomial.semiclassicalJacobiSequence ht hα hβ γ) n) ^
2 ∂Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ =
1
Lean proof
/-- Orthogonality, positive leading coefficients and squared norms characterize the scaling. -/
theorem semiclassicalJacobiSequence_spec {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) :
(semiclassicalJacobiSequence ht hα hβ γ).IsOrthogonal (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) ∧
(∀ n, 0 < (semiclassicalJacobiSequence ht hα hβ γ n).leadingCoeff) ∧
(∀ n, ∫ x, (semiclassicalJacobiSequence ht hα hβ γ n).eval x ^ 2
∂semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ = 1) :=
(exists_positive_orthonormal_sequence (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ)
(hasFiniteMoments_semiclassicalJacobiMeasure ht hα hβ)
(hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure ht hα hβ)).choose_spec
source
Reference details: Semiclassical Jacobi polynomial basis and related results
Definition
5.2.7
Semiclassical Jacobi polynomial basis
For \(t{\gt}1\), \(\alpha ,\beta {\gt}-1\) and \(\gamma \in \mathbb {R}\), let \(B\) be the polynomial basis whose \(n\)th member is \(Q_n\).
Reference: [PGSO24 , Section 3] .
Lean Formalisation
def Polynomial.semiclassicalJacobiBasis {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) :
Module.Basis ℕ ℝ (Polynomial ℝ)
Lean definition
/-- The positive orthonormal semiclassical sequence as a polynomial basis. -/
noncomputable def semiclassicalJacobiBasis {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) : Basis ℕ ℝ ℝ[X] :=
(semiclassicalJacobiSequence ht hα hβ γ).basis (fun n ↦
isUnit_iff_ne_zero.mpr ((semiclassicalJacobiSequence_spec ht hα hβ γ).2.1 n).ne')
source
Theorem
5.2.8
Orthonormality and coordinates
The sequence \((Q_n)\) is orthogonal for the semiclassical Jacobi measure, its members have positive leading coefficients, and each has unit squared norm. The \(n\)th coordinate of a polynomial \(p\) in the basis \(B\) is the pairing \(\langle p,Q_n\rangle \) for this measure.
Reference: [PGSO24 , Section 3] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobiBasis_repr {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (p : Polynomial ℝ)
(n : ℕ) :
((Polynomial.semiclassicalJacobiBasis ht hα hβ γ).repr p) n =
Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ)
(Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ) p
(↑(Polynomial.semiclassicalJacobiSequence ht hα hβ γ) n) ⋯)
Lean proof
/-- Coefficient coordinates are integral projections, since the basis is normalized. -/
theorem semiclassicalJacobiBasis_repr {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (p : ℝ[X]) (n : ℕ) :
(semiclassicalJacobiBasis ht hα hβ γ).repr p n =
integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) p (semiclassicalJacobiSequence ht hα hβ γ n)) := by
rw [semiclassicalJacobiBasis,
(semiclassicalJacobiSequence_spec ht hα hβ γ).1.basis_repr_eq_integralInner_div
(hasFiniteMoments_semiclassicalJacobiMeasure ht hα hβ)
(hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure ht hα hβ)]
rw [integralInner_self, (semiclassicalJacobiSequence_spec ht hα hβ γ).2.2 n, div_one]
source
Theorem
5.2.9
Semiclassical Jacobi parameter raising
For \(t{\gt}1\) and nonnegative integers \(k,l,m\), increasing \((a,b,c)\) by \((k,l,m)\) is exactly multiplication of the measure by \(x^k(1-x)^l(t-x)^m\). No integrability restrictions on the exponents are needed for this measure identity.
Reference: [PGSO24 , Section 3] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobiWeight_add_nat (t : ↑(Set.Ioi 1)) (α β γ : ℝ) (k l m : ℕ) (x : ↑(Set.Ioo 0 1)) :
↑((Polynomial.semiclassicalJacobiWeight t (α + ↑k) (β + ↑l) (γ + ↑m)) x) =
↑x ^ k * (1 - ↑x) ^ l * (↑t - ↑x) ^ m * ↑((Polynomial.semiclassicalJacobiWeight t α β γ) x)
Lean proof
/-- Integer weight shifts on the classical open domain. -/
theorem semiclassicalJacobiWeight_add_nat (t : Ioi (1 : ℝ)) (α β γ : ℝ)
(k l m : ℕ) (x : Ioo (0 : ℝ) 1) :
(semiclassicalJacobiWeight t (α + k) (β + l) (γ + m) x : ℝ) =
((x : ℝ) ^ k * (1 - (x : ℝ)) ^ l * ((t : ℝ) - x) ^ m) *
(semiclassicalJacobiWeight t α β γ x : ℝ) := by
simp only [semiclassicalJacobiWeight_apply]
exact semiclassicalJacobiWeight_add_nat_rpow t α β γ t.property k l m x.property
source
2 related Lean declarations
theorem Polynomial.semiclassicalJacobiMeasure_add_nat (t α β γ : ℝ) (ht : 1 < t) (k l m : ℕ) :
Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ (α + ↑k) (β + ↑l) (γ + ↑m) =
MeasureTheory.openIntervalWeightMeasure 0 1
(Polynomial.semiclassicalJacobiWeight ⟨t, ht⟩ α β γ * Polynomial.semiclassicalJacobiWeight ⟨t, ht⟩ ↑k ↑l ↑m)
Lean proof
/-- Integer parameter raising is multiplication of classical domain-typed weights. -/
theorem semiclassicalJacobiMeasure_add_nat (t α β γ : ℝ) (ht : 1 < t)
(k l m : ℕ) :
semiclassicalJacobiMeasure ⟨t, by assumption⟩ (α + k) (β + l) (γ + m) =
openIntervalWeightMeasure 0 1
(semiclassicalJacobiWeight ⟨t, ht⟩ α β γ *
semiclassicalJacobiWeight ⟨t, ht⟩ k l m) := by
change openIntervalWeightMeasure 0 1 _ = _
congr 1
ext x
rw [ContinuousMap.mul_apply, NNReal.coe_mul, semiclassicalJacobiWeight_add_nat]
simp only [semiclassicalJacobiWeight_apply, Real.rpow_natCast]
ring
source
theorem Polynomial.semiclassicalJacobiWeight_add_one (t : ↑(Set.Ioi 1)) (α β γ : ℝ) (x : ↑(Set.Ioo 0 1)) :
↑((Polynomial.semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1)) x) =
↑x * (1 - ↑x) * (↑t - ↑x) * ↑((Polynomial.semiclassicalJacobiWeight t α β γ) x)
Lean proof
/-- The simultaneous unit shift on the classical domain. -/
theorem semiclassicalJacobiWeight_add_one (t : Ioi (1 : ℝ)) (α β γ : ℝ)
(x : Ioo (0 : ℝ) 1) :
(semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1) x : ℝ) =
(x : ℝ) * (1 - (x : ℝ)) * ((t : ℝ) - x) *
(semiclassicalJacobiWeight t α β γ x : ℝ) := by
simp only [semiclassicalJacobiWeight_apply]
exact semiclassicalJacobiWeight_add_one_rpow t α β γ t.property x.property
source
Theorem
5.2.10
Semiclassical integer conversion and Gram factors
Raising \((\alpha ,\beta ,\gamma )\) by nonnegative integers \((a,b,c)\) gives an upper connection of bandwidth at most \(a+b+c\). Its leading finite sections have positive diagonal and factor the target-measure Gram matrix as \(R^{\mathsf T}R\). All coefficients are coordinates in the actual normalized polynomial bases.
References: [PGSO24 , Theorem 3.2] ; [GOS25 , Lemma 2.8] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobiConnection_eq_zero {t α β γ : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (a b c : ℕ)
(hαa : -1 < α + ↑a) (hβb : -1 < β + ↑b) (n m : ℕ) (hgap : n < m ∨ m + (a + b + c) < n) :
Polynomial.semiclassicalJacobiConnection ht hα hβ γ hαa hβb (γ + ↑c) m n = 0
Lean proof
/-- Raising by (a,b,c) gives an upper connection of bandwidth at most a+b+c. -/
theorem semiclassicalJacobiConnection_eq_zero {t α β γ : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (a b c : ℕ)
(hαa : -1 < α+a) (hβb : -1 < β+b) (n m : ℕ)
(hgap : n < m ∨ m+(a+b+c) < n) :
semiclassicalJacobiConnection ht hα hβ γ hαa hβb (γ+c) m n = 0 := by
rw [semiclassicalJacobiConnection, Basis.toMatrix_apply, semiclassicalJacobiBasis_apply,
semiclassicalJacobiBasis_repr]
have hQ := (semiclassicalJacobiSequence_spec ht hαa hβb (γ+c)).1
have hP := (semiclassicalJacobiSequence_spec ht hα hβ γ).1
have hM := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ) ht hα hβ
have hT := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ+c) ht hαa hβb
rcases hgap with hgap | hgap
· exact hQ.integralInner_eq_zero_of_degree_lt hT
(by simpa only [Sequence.degree_eq, Nat.cast_lt] using hgap)
· rw [integralInner_comm]
have he := (integral_semiclassicalJacobi_shift_integrable ht α β γ a b c
⟨_, hT.integrable_mul (semiclassicalJacobiSequence ht hαa hβb (γ+c) m)
(semiclassicalJacobiSequence ht hα hβ γ n)⟩).2
simp only [integralInner] at ⊢
erw [he]
have hd : (semiclassicalJacobiShiftDensity t a b c *
semiclassicalJacobiSequence ht hαa hβb (γ+c) m).natDegree < n :=
natDegree_mul_le.trans_lt (by
rw [Sequence.natDegree_eq]
have := natDegree_semiclassicalJacobiShiftDensity_le t a b c
omega)
have hz := hP.integralInner_eq_zero_of_degree_lt hM
(degree_le_natDegree.trans_lt (by exact_mod_cast hd))
simpa only [integralInner, eval_mul, mul_assoc] using hz
source
4 related Lean declarations
def Polynomial.semiclassicalJacobiConnection {t α β α' β' : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) : Matrix ℕ ℕ ℝ
Lean definition
/-- The connection matrix between two positive orthonormal semiclassical bases. -/
noncomputable def semiclassicalJacobiConnection {t α β α' β' : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) : Matrix ℕ ℕ ℝ :=
(semiclassicalJacobiBasis ht hα' hβ' γ').toMatrix (semiclassicalJacobiBasis ht hα hβ γ)
source
theorem Polynomial.semiclassicalJacobiConnection_upperTriangular {t α β α' β' : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(γ : ℝ) (hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) (N : ℕ) :
(Matrix.of fun i j => Polynomial.semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' ↑i ↑j).IsUpperTriangular
Lean proof
/-- Every leading connection section is upper triangular in degree order. -/
theorem semiclassicalJacobiConnection_upperTriangular {t α β α' β' : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) (N : ℕ) :
(Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' i j)).IsUpperTriangular := by
simpa only [semiclassicalJacobiConnection, Basis.toMatrix_apply, semiclassicalJacobiBasis_apply,
semiclassicalJacobiBasis, Sequence.basis_eq_self] using
(semiclassicalJacobiSequence_spec ht hα' hβ' γ').1.connection_upperTriangular
(hasFiniteMoments_semiclassicalJacobiMeasure ht hα' hβ')
(hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure ht hα' hβ')
(fun n ↦ isUnit_iff_ne_zero.mpr ((semiclassicalJacobiSequence_spec ht hα' hβ' γ').2.1 n).ne')
(semiclassicalJacobiSequence ht hα hβ γ) N
source
theorem Polynomial.semiclassicalJacobiConnection_diag_pos {t α β α' β' : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) (n : ℕ) :
0 < Polynomial.semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' n n
Lean proof
/-- Positive normalization makes each connection diagonal entry positive. -/
theorem semiclassicalJacobiConnection_diag_pos {t α β α' β' : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) (n : ℕ) :
0 < semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' n n := by
simpa only [semiclassicalJacobiConnection, Basis.toMatrix_apply, semiclassicalJacobiBasis_apply,
semiclassicalJacobiBasis, Sequence.basis_eq_self] using
(semiclassicalJacobiSequence_spec ht hα' hβ' γ').1.connection_diag_pos
(hasFiniteMoments_semiclassicalJacobiMeasure ht hα' hβ')
(hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure ht hα' hβ')
(fun n ↦ isUnit_iff_ne_zero.mpr ((semiclassicalJacobiSequence_spec ht hα' hβ' γ').2.1 n).ne')
(semiclassicalJacobiSequence ht hα hβ γ)
(semiclassicalJacobiSequence_spec ht hα hβ γ).2.1
(semiclassicalJacobiSequence_spec ht hα' hβ' γ').2.1 n
source
theorem Polynomial.semiclassicalJacobiConnection_gram {t α β α' β' : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) (N : ℕ) :
(Matrix.of fun i j =>
Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α' β' γ')
(Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α' β' γ')
(↑(Polynomial.semiclassicalJacobiSequence ht hα hβ γ) ↑i)
(↑(Polynomial.semiclassicalJacobiSequence ht hα hβ γ) ↑j) ⋯)) =
(Matrix.of fun i j => Polynomial.semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' ↑i ↑j).transpose *
Matrix.of fun i j => Polynomial.semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' ↑i ↑j
Lean proof
/-- Every leading section is the transpose-product factor of the target Gram matrix. -/
theorem semiclassicalJacobiConnection_gram {t α β α' β' : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα' : -1 < α') (hβ' : -1 < β') (γ' : ℝ) (N : ℕ) :
Matrix.of (fun i j : Fin N ↦ integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α' β' γ') (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α' β' γ') (semiclassicalJacobiSequence ht hα hβ γ i) (semiclassicalJacobiSequence ht hα hβ γ j))) =
(Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' i j)).transpose *
Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiConnection ht hα hβ γ hα' hβ' γ' i j) := by
simpa only [semiclassicalJacobiConnection, Basis.toMatrix_apply, semiclassicalJacobiBasis_apply,
semiclassicalJacobiBasis, Sequence.basis_eq_self] using
(semiclassicalJacobiSequence_spec ht hα' hβ' γ').1.connection_gram
(hasFiniteMoments_semiclassicalJacobiMeasure ht hα' hβ')
(hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure ht hα' hβ')
(fun n ↦ isUnit_iff_ne_zero.mpr ((semiclassicalJacobiSequence_spec ht hα' hβ' γ').2.1 n).ne')
(semiclassicalJacobiSequence ht hα hβ γ)
(fun n ↦ by simpa only [integralInner_self] using
(semiclassicalJacobiSequence_spec ht hα' hβ' γ').2.2 n) N
source
Theorem
5.2.11
Semiclassical Jacobi Pearson identity
Set \(\sigma =x(1-x)(t-x)\) and \(\tau =(a+1)(1-x)(t-x)-(b+1)x(t-x)-(c+1)x(1-x)\). On \((0,1)\), \((\sigma w)'=\tau w\). For \(t{\gt}1\), \(a,b{\gt}-1\), \(c\in \mathbb {R}\), the raised weight extends continuously to \([0,1]\), with value zero at both endpoints. For the one-sided limit at zero only \(a{\gt}-1\) is needed, while for the limit at one only \(b{\gt}-1\) is needed (always with \(t{\gt}1\)). Consequently every polynomial \(p\) satisfies \(\int (\sigma p'+\tau p)\, d\mu _{t,a,b,c}=0\). These polynomials form a Pearson pair.
Lean Formalisation
theorem Polynomial.hasDerivAt_semiclassicalJacobiWeight_add_one (t : ↑(Set.Ioi 1)) (α β γ : ℝ) (x : ↑(Set.Ioo 0 1)) :
HasDerivAtOnOpen { carrier := Set.Ioo 0 1, is_open' := ⋯ }
(fun y => ↑((Polynomial.semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1)) y))
(((α + 1) * (1 - ↑x) * (↑t - ↑x) - (β + 1) * ↑x * (↑t - ↑x) - (γ + 1) * ↑x * (1 - ↑x)) *
↑((Polynomial.semiclassicalJacobiWeight t α β γ) x))
x
Lean proof
/-- Pearson differentiation asserted on the actual open domain. -/
theorem hasDerivAt_semiclassicalJacobiWeight_add_one (t : Ioi (1 : ℝ)) (α β γ : ℝ)
(x : Ioo (0 : ℝ) 1) :
HasDerivAtOnOpen ⟨Ioo (0 : ℝ) 1, isOpen_Ioo⟩
(fun y ↦ (semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1) y : ℝ))
(((α + 1) * (1 - (x : ℝ)) * ((t : ℝ) - x) -
(β + 1) * (x : ℝ) * ((t : ℝ) - x) - (γ + 1) * (x : ℝ) * (1 - (x : ℝ))) *
(semiclassicalJacobiWeight t α β γ x : ℝ)) x := by
classical
let F : ℝ → ℝ := fun y ↦ if h : y ∈ Ioo (0 : ℝ) 1 then
(semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1) ⟨y, h⟩ : ℝ) else 0
refine ⟨F, fun y ↦ by
have hy : (y : ℝ) ∈ Ioo (0 : ℝ) 1 := y.property
simp only [F, dite_eq_left hy]
rfl, ?_⟩
have hev : F =ᶠ[𝓝 (x : ℝ)]
(fun y ↦ y ^ (α + 1) * (1 - y) ^ (β + 1) * ((t : ℝ) - y) ^ (γ + 1)) := by
filter_upwards [isOpen_Ioo.mem_nhds x.property] with y hy
simp only [F, dite_eq_left hy, semiclassicalJacobiWeight_apply]
exact (hasDerivAt_semiclassicalJacobiWeight_add_one_rpow t α β γ t.property
x.property).congr_of_eventuallyEq hev
source
6 related Lean declarations
def Polynomial.semiclassicalJacobiSigma (t : ℝ) : Polynomial ℝ
Lean definition
/-- The cubic multiplier in the semiclassical Jacobi Pearson equation. -/
noncomputable def semiclassicalJacobiSigma (t : ℝ) : ℝ[X] := X * (1 - X) * (C t - X)
source
def Polynomial.semiclassicalJacobiTau (t α β γ : ℝ) : Polynomial ℝ
Lean definition
/-- The quadratic coefficient in the semiclassical Jacobi Pearson equation. -/
noncomputable def semiclassicalJacobiTau (t α β γ : ℝ) : ℝ[X] :=
C (α + 1) * (1 - X) * (C t - X) - C (β + 1) * X * (C t - X) -
C (γ + 1) * X * (1 - X)
source
theorem Polynomial.exists_continuous_semiclassicalJacobiWeight_add_one (t : ↑(Set.Ioi 1)) {α β γ : ℝ} (hα : -1 < α)
(hβ : -1 < β) :
∃ F,
(∀ (x : ↑(Set.Ioo 0 1)), F ⟨↑x, ⋯⟩ = ↑((Polynomial.semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1)) x)) ∧
F ⟨0, Polynomial.exists_continuous_semiclassicalJacobiWeight_add_one._proof_1⟩ = 0 ∧
F ⟨1, Polynomial.exists_continuous_semiclassicalJacobiWeight_add_one._proof_2⟩ = 0
Lean proof
/-- In the integrable endpoint range the shifted weight has a continuous
closed-interval extension with both endpoint values zero. -/
theorem exists_continuous_semiclassicalJacobiWeight_add_one (t : Ioi (1 : ℝ))
{α β γ : ℝ} (hα : -1 < α) (hβ : -1 < β) :
∃ F : C(Icc (0 : ℝ) 1, ℝ),
(∀ x : Ioo (0 : ℝ) 1, F ⟨x, x.property.1.le, x.property.2.le⟩ =
(semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1) x : ℝ)) ∧
F ⟨0, by constructor <;> norm_num⟩ = 0 ∧ F ⟨1, by constructor <;> norm_num⟩ = 0 := by
let F : C(Icc (0 : ℝ) 1, ℝ) := ⟨fun x ↦
(x : ℝ) ^ (α + 1) * (1 - (x : ℝ)) ^ (β + 1) * ((t : ℝ) - x) ^ (γ + 1),
((continuous_subtype_val.rpow_const (fun _ ↦ Or.inr (by linarith : 0 ≤ α + 1))).mul
((continuous_const.sub continuous_subtype_val).rpow_const
(fun _ ↦ Or.inr (by linarith : 0 ≤ β + 1)))).mul
((continuous_const.sub continuous_subtype_val).rpow_const
(fun x ↦ Or.inl (by change (t : ℝ) - x ≠ 0; have ht : 1 < (t : ℝ) := t.property; linarith [x.property.2])))⟩
refine ⟨F, fun _ ↦ rfl, ?_, ?_⟩
· change (0 : ℝ)^(α+1) * (1-0)^(β+1) * ((t : ℝ)-0)^(γ+1) = 0
simp [Real.zero_rpow (by linarith : α+1 ≠ 0)]
· change (1 : ℝ)^(α+1) * (1-1)^(β+1) * ((t : ℝ)-1)^(γ+1) = 0
simp [Real.zero_rpow (by linarith : β+1 ≠ 0)]
source
theorem Polynomial.tendsto_semiclassicalJacobiWeight_add_one_zero (t : ↑(Set.Ioi 1)) (β γ : ℝ) {α : ℝ} (hα : -1 < α) :
Filter.Tendsto (fun x => ↑((Polynomial.semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1)) x))
(Filter.comap Subtype.val (nhds 0)) (nhds 0)
Lean proof
/-- The left endpoint is a limit; no restriction on the opposite exponent is needed. -/
theorem tendsto_semiclassicalJacobiWeight_add_one_zero (t : Ioi (1 : ℝ)) (β γ : ℝ)
{α : ℝ} (hα : -1 < α) :
Tendsto (fun x : Ioo (0 : ℝ) 1 ↦
(semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1) x : ℝ))
(Filter.comap Subtype.val (𝓝 (0 : ℝ))) (𝓝 0) := by
have hval : Tendsto (Subtype.val : Ioo (0 : ℝ) 1 → ℝ)
(Filter.comap Subtype.val (𝓝 0)) (𝓝 0) := Filter.tendsto_comap
let u : Ioo (0 : ℝ) 1 → ℝ≥0 := fun x ↦ ⟨x, x.property.1.le⟩
have hu : Tendsto u (Filter.comap Subtype.val (𝓝 0)) (𝓝 0) :=
NNReal.tendsto_coe.mp hval
have h1 : Tendsto (fun x : Ioo (0 : ℝ) 1 ↦ (x : ℝ) ^ (α + 1))
(Filter.comap Subtype.val (𝓝 0)) (𝓝 0) := by
have h := ((NNReal.continuous_rpow_const (by linarith : (0 : ℝ) ≤ α + 1)).tendsto 0).comp hu
rw [NNReal.zero_rpow (by linarith : α + 1 ≠ 0)] at h
exact NNReal.tendsto_coe.mpr h
have h2 : Tendsto (fun x : Ioo (0 : ℝ) 1 ↦ (1 - (x : ℝ)) ^ (β + 1))
(Filter.comap Subtype.val (𝓝 0)) (𝓝 ((1 - 0 : ℝ) ^ (β + 1))) :=
((continuousAt_const.sub continuousAt_id).rpow_const (Or.inl (by norm_num))).tendsto.comp hval
have h3 : Tendsto (fun x : Ioo (0 : ℝ) 1 ↦ ((t : ℝ) - x) ^ (γ + 1))
(Filter.comap Subtype.val (𝓝 0)) (𝓝 (((t : ℝ) - 0) ^ (γ + 1))) :=
((continuousAt_const.sub continuousAt_id).rpow_const
(Or.inl (by have ht : 1 < (t : ℝ) := t.property; dsimp; linarith))).tendsto.comp hval
simpa only [semiclassicalJacobiWeight_apply, zero_mul] using (h1.mul h2).mul h3
source
theorem Polynomial.tendsto_semiclassicalJacobiWeight_add_one_one (t : ↑(Set.Ioi 1)) (α γ : ℝ) {β : ℝ} (hβ : -1 < β) :
Filter.Tendsto (fun x => ↑((Polynomial.semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1)) x))
(Filter.comap Subtype.val (nhds 1)) (nhds 0)
Lean proof
/-- The right endpoint is a limit; the left exponent can be arbitrary. -/
theorem tendsto_semiclassicalJacobiWeight_add_one_one (t : Ioi (1 : ℝ)) (α γ : ℝ)
{β : ℝ} (hβ : -1 < β) :
Tendsto (fun x : Ioo (0 : ℝ) 1 ↦
(semiclassicalJacobiWeight t (α + 1) (β + 1) (γ + 1) x : ℝ))
(Filter.comap Subtype.val (𝓝 (1 : ℝ))) (𝓝 0) := by
have hval : Tendsto (Subtype.val : Ioo (0 : ℝ) 1 → ℝ)
(Filter.comap Subtype.val (𝓝 1)) (𝓝 1) := Filter.tendsto_comap
let u : Ioo (0 : ℝ) 1 → ℝ≥0 := fun x ↦ ⟨1 - (x : ℝ), by linarith [x.property.2]⟩
have hu : Tendsto u (Filter.comap Subtype.val (𝓝 1)) (𝓝 0) := by
rw [← NNReal.tendsto_coe]
have h := (tendsto_const_nhds (x := (1 : ℝ))).sub hval
rw [sub_self] at h
exact h
have h1 : Tendsto (fun x : Ioo (0 : ℝ) 1 ↦ (x : ℝ) ^ (α + 1))
(Filter.comap Subtype.val (𝓝 1)) (𝓝 ((1 : ℝ) ^ (α + 1))) :=
(continuousAt_id.rpow_const (Or.inl (by norm_num))).tendsto.comp hval
have h2 : Tendsto (fun x : Ioo (0 : ℝ) 1 ↦ (1 - (x : ℝ)) ^ (β + 1))
(Filter.comap Subtype.val (𝓝 1)) (𝓝 0) := by
have h := ((NNReal.continuous_rpow_const (by linarith : (0 : ℝ) ≤ β + 1)).tendsto 0).comp hu
rw [NNReal.zero_rpow (by linarith : β + 1 ≠ 0)] at h
exact NNReal.tendsto_coe.mpr h
have h3 : Tendsto (fun x : Ioo (0 : ℝ) 1 ↦ ((t : ℝ) - x) ^ (γ + 1))
(Filter.comap Subtype.val (𝓝 1)) (𝓝 (((t : ℝ) - 1) ^ (γ + 1))) :=
((continuousAt_const.sub continuousAt_id).rpow_const
(Or.inl (by have ht : 1 < (t : ℝ) := t.property; dsimp; linarith))).tendsto.comp hval
simpa only [semiclassicalJacobiWeight_apply, mul_zero, zero_mul] using (h1.mul h2).mul h3
source
theorem Polynomial.integral_semiclassicalJacobi_pearson {t α β γ : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(p : Polynomial ℝ) :
∫ (x : ℝ),
Polynomial.eval x
(Polynomial.semiclassicalJacobiSigma t * Polynomial.derivative p +
Polynomial.semiclassicalJacobiTau t α β γ * p) ∂Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ =
0
Lean proof
/-- The Pearson identity tested against any polynomial, with zero endpoint terms. -/
theorem integral_semiclassicalJacobi_pearson {t α β γ : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (p : ℝ[X]) :
∫ x, (semiclassicalJacobiSigma t * p.derivative + semiclassicalJacobiTau t α β γ * p).eval x
∂semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ = 0 := by
let q := semiclassicalJacobiSigma t * p.derivative + semiclassicalJacobiTau t α β γ * p
obtain ⟨F, hF, h0, h1⟩ := exists_continuous_semiclassicalJacobiWeight_add_one
(γ := γ) ⟨t, ht⟩ hα hβ
let P : C(Icc (0 : ℝ) 1, ℝ) := ⟨fun x ↦ F x * p.eval (x : ℝ),
F.continuous.mul (p.continuous.comp continuous_subtype_val)⟩
have hq := integrable_semiclassicalJacobiMeasure (γ := γ) ht hα hβ q.continuous.continuousOn
have hg := (integrable_semiclassicalJacobiMeasure_iff ⟨t, ht⟩ α β γ _).mp hq
have hd (x : Ioo (0 : ℝ) 1) :
HasDerivAtOnOpen ⟨Ioo (0 : ℝ) 1, isOpen_Ioo⟩
(fun y ↦ P ⟨y, ⟨y.property.1.le, y.property.2.le⟩⟩)
((semiclassicalJacobiWeight ⟨t, ht⟩ α β γ x : ℝ) * q.eval (x : ℝ)) x := by
have he : (fun y : Ioo (0 : ℝ) 1 ↦ P ⟨y, ⟨y.property.1.le, y.property.2.le⟩⟩) =
fun y ↦ (semiclassicalJacobiWeight ⟨t, ht⟩ (α+1) (β+1) (γ+1) y : ℝ) * p.eval (y : ℝ) := by
funext y
exact congrArg (fun r ↦ r * p.eval (y : ℝ)) (hF y)
erw [he]
convert ((hasDerivAt_semiclassicalJacobiWeight_add_one ⟨t, ht⟩ α β γ x).mul
⟨_, fun _ ↦ rfl, p.hasDerivAt (x : ℝ)⟩) using 1
rw [semiclassicalJacobiWeight_add_one]
simp only [q, semiclassicalJacobiSigma, semiclassicalJacobiTau, eval_add, eval_mul,
eval_sub, eval_one, eval_X, eval_C]
ring
have hi := intervalIntegral.integral_eq_sub_of_hasDerivAtOnOpen
(show (0 : ℝ) < 1 by norm_num) P ⟨_, hg⟩ hd
change (∫ x : Ioo (0 : ℝ) 1,
(semiclassicalJacobiWeight ⟨t, ht⟩ α β γ x : ℝ) * q.eval (x : ℝ)) =
F ⟨1, by norm_num⟩ * p.eval 1 - F ⟨0, by norm_num⟩ * p.eval 0 at hi
rw [h0, h1, zero_mul, zero_mul, sub_self] at hi
exact (integral_semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ ⟨_, hq⟩).trans hi
source
This is a Pearson pair; no claim of minimal semiclassical class is made.
Theorem
5.2.12
Sparse semiclassical differentiation
Differentiation from parameters \((\alpha ,\beta ,\gamma )\) to \((\alpha +1,\beta +1,\gamma +1)\) has entries only when \(j{\lt}n\le j+2\), for row \(j\) and column \(n\). Its action on finitely supported coefficients reconstructs the ordinary polynomial derivative exactly. The underlying adjoint identity is
\[ \langle p',q\rangle _{\mu _+} =-\langle p,\sigma q'+\tau q\rangle _\mu . \]
No endpoint regularity beyond \(\alpha ,\beta {\gt}-1\) is imposed.
Reference: [PGSO24 , Theorem 3.4] .
Lean Formalisation
theorem Polynomial.integralInner_semiclassicalJacobi_derivative {t α β γ : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(p q : Polynomial ℝ) :
Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ (α + 1) (β + 1) (γ + 1))
(Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ (α + 1) (β + 1) (γ + 1))
(Polynomial.derivative p) q ⋯) =
-Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ)
(Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β γ) p
(Polynomial.semiclassicalJacobiSigma t * Polynomial.derivative q +
Polynomial.semiclassicalJacobiTau t α β γ * q)
⋯)
Lean proof
/-- Derivative adjoint identity with the shifted measure, with endpoint terms already discharged. -/
theorem integralInner_semiclassicalJacobi_derivative {t α β γ : ℝ}
(ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (p q : ℝ[X]) :
integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ (α+1) (β+1) (γ+1)) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ (α+1) (β+1) (γ+1)) p.derivative q (h :=
(hasFiniteMoments_semiclassicalJacobiMeasure ht (by linarith) (by linarith)).integrable_mul _ _)) =
- integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) p (semiclassicalJacobiSigma t*q.derivative + semiclassicalJacobiTau t α β γ*q)) := by
have hM := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ) ht hα hβ
have he := integral_semiclassicalJacobi_pearson (γ := γ) ht hα hβ (p*q)
have hp : semiclassicalJacobiSigma t*(p*q).derivative + semiclassicalJacobiTau t α β γ*(p*q) =
(semiclassicalJacobiSigma t*p.derivative)*q +
p*(semiclassicalJacobiSigma t*q.derivative + semiclassicalJacobiTau t α β γ*q) := by
rw [derivative_mul]
ring
rw [hp] at he
simp only [eval_add, eval_mul] at he
have ha := integral_add (hM.integrable_mul (semiclassicalJacobiSigma t*p.derivative) q)
(hM.integrable_mul p (semiclassicalJacobiSigma t*q.derivative + semiclassicalJacobiTau t α β γ*q))
simp only [eval_add, eval_mul] at ha
rw [ha] at he
rw [integralInner_semiclassicalJacobi_add_one ht p.derivative q (hi := hM.integrable_mul _ _)]
simp only [integralInner, eval_mul, eval_add]
linarith
source
4 related Lean declarations
def Polynomial.semiclassicalJacobiDerivative {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (hα1 : -1 < α + 1)
(hβ1 : -1 < β + 1) : Matrix ℕ ℕ ℝ
Lean definition
/-- The derivative matrix from the original to the simultaneously raised family. -/
noncomputable def semiclassicalJacobiDerivative {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α+1) (hβ1 : -1 < β+1) : Matrix ℕ ℕ ℝ :=
(semiclassicalJacobiBasis ht hα1 hβ1 (γ+1)).toMatrix
(fun n ↦ (semiclassicalJacobiSequence ht hα hβ γ n).derivative)
source
theorem Polynomial.semiclassicalJacobiDerivative_eq_zero {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) (n j : ℕ) (hgap : n ≤ j ∨ j + 2 < n) :
Polynomial.semiclassicalJacobiDerivative ht hα hβ γ hα1 hβ1 j n = 0
Lean proof
/-- Column n of the actual derivative matrix is supported only at n-1 and n-2. -/
theorem semiclassicalJacobiDerivative_eq_zero {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α+1) (hβ1 : -1 < β+1) (n j : ℕ)
(hgap : n ≤ j ∨ j+2 < n) :
semiclassicalJacobiDerivative ht hα hβ γ hα1 hβ1 j n = 0 := by
rw [semiclassicalJacobiDerivative, Basis.toMatrix_apply, semiclassicalJacobiBasis_repr]
exact integralInner_semiclassicalJacobi_derivative_eq_zero ht hα hβ hα1 hβ1 n j hgap
source
theorem Polynomial.semiclassicalJacobi_derivative_coefficientMap_exact {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(γ : ℝ) (hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) (v : ℕ →₀ ℝ) :
(Polynomial.semiclassicalJacobiBasis ht hα1 hβ1 (γ + 1)).repr.symm
(((Polynomial.semiclassicalJacobiBasis ht hα hβ γ).coefficientMap
(Polynomial.semiclassicalJacobiBasis ht hα1 hβ1 (γ + 1)) Polynomial.derivative)
v) =
Polynomial.derivative ((Polynomial.semiclassicalJacobiBasis ht hα hβ γ).repr.symm v)
Lean proof
/-- The coefficient operator differentiates every finite polynomial expansion exactly. -/
theorem semiclassicalJacobi_derivative_coefficientMap_exact {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α+1) (hβ1 : -1 < β+1) (v : ℕ →₀ ℝ) :
(semiclassicalJacobiBasis ht hα1 hβ1 (γ+1)).repr.symm
((semiclassicalJacobiBasis ht hα hβ γ).coefficientMap
(semiclassicalJacobiBasis ht hα1 hβ1 (γ+1)) derivative v) =
((semiclassicalJacobiBasis ht hα hβ γ).repr.symm v).derivative :=
Basis.repr_symm_coefficientMap _ _ _ _
source
theorem Polynomial.semiclassicalJacobi_derivative_coefficientMap_apply {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(γ : ℝ) (hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) (v : ℕ →₀ ℝ) (i : ℕ) :
(((Polynomial.semiclassicalJacobiBasis ht hα hβ γ).coefficientMap
(Polynomial.semiclassicalJacobiBasis ht hα1 hβ1 (γ + 1)) Polynomial.derivative)
v)
i =
v.sum fun j a => Polynomial.semiclassicalJacobiDerivative ht hα hβ γ hα1 hβ1 i j * a
Lean proof
/-- The sparse matrix acts by a finite sum over input coefficients. -/
theorem semiclassicalJacobi_derivative_coefficientMap_apply {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α+1) (hβ1 : -1 < β+1) (v : ℕ →₀ ℝ) (i : ℕ) :
(semiclassicalJacobiBasis ht hα hβ γ).coefficientMap
(semiclassicalJacobiBasis ht hα1 hβ1 (γ+1)) derivative v i =
v.sum (fun j a ↦ semiclassicalJacobiDerivative ht hα hβ γ hα1 hβ1 i j * a) := by
rw [Basis.coefficientMap_apply]
simp only [semiclassicalJacobiDerivative, semiclassicalJacobiBasis_apply]
source
Theorem
5.2.13
Weighted semiclassical differentiation
For \(t{\gt}1\), \(\alpha ,\beta {\gt}-1\), \(\gamma \in \mathbb R\), weighted differentiation from the simultaneously raised family to the original family is the polynomial map \(q\mapsto \sigma q'+\tau q\). With the positive orthonormal scaling, its matrix is \(-D^{\mathsf T}\), where \(D\) is the unweighted derivative matrix. Column \(j\) is supported only in rows \(j+1,j+2\). Its coefficient action is exact on all finite expansions.
Reference: [PGSO24 , Section 3.4] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobiWeightedDerivative_eq_neg_transpose {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(γ : ℝ) (hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) :
Polynomial.semiclassicalJacobiWeightedDerivative ht hα hβ γ hα1 hβ1 =
-(Polynomial.semiclassicalJacobiDerivative ht hα hβ γ hα1 hβ1).transpose
Lean proof
/-- The two differentiation matrices are negative transposes with these orthonormal scalings. -/
theorem semiclassicalJacobiWeightedDerivative_eq_neg_transpose {t α β : ℝ} (ht : 1<t)
(hα : -1<α) (hβ : -1<β) (γ : ℝ) (hα1 : -1<α+1) (hβ1 : -1<β+1) :
semiclassicalJacobiWeightedDerivative ht hα hβ γ hα1 hβ1 =
-(semiclassicalJacobiDerivative ht hα hβ γ hα1 hβ1).transpose := by
ext n j
simp only [semiclassicalJacobiWeightedDerivative, semiclassicalJacobiDerivative,
Basis.toMatrix_apply, semiclassicalJacobiBasis_repr, Matrix.neg_apply, Matrix.transpose_apply]
rw [integralInner_semiclassicalJacobi_derivative ht hα hβ, neg_neg, integralInner_comm]
rfl
source
4 related Lean declarations
def Polynomial.semiclassicalJacobiWeightedDerivativeMap (t α β γ : ℝ) : Polynomial ℝ →ₗ[ℝ] Polynomial ℝ
Lean definition
/-- The exact polynomial action of weighted differentiation. -/
noncomputable def semiclassicalJacobiWeightedDerivativeMap (t α β γ : ℝ) : ℝ[X] →ₗ[ℝ] ℝ[X] :=
(LinearMap.mulLeft ℝ (semiclassicalJacobiSigma t)).comp derivative +
LinearMap.mulLeft ℝ (semiclassicalJacobiTau t α β γ)
source
def Polynomial.semiclassicalJacobiWeightedDerivative {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) : Matrix ℕ ℕ ℝ
Lean definition
/-- The weighted derivative matrix from the raised family back to the original family. -/
noncomputable def semiclassicalJacobiWeightedDerivative {t α β : ℝ} (ht : 1<t)
(hα : -1<α) (hβ : -1<β) (γ : ℝ) (hα1 : -1<α+1) (hβ1 : -1<β+1) : Matrix ℕ ℕ ℝ :=
(semiclassicalJacobiBasis ht hα hβ γ).toMatrix (fun j ↦
semiclassicalJacobiWeightedDerivativeMap t α β γ
(semiclassicalJacobiSequence ht hα1 hβ1 (γ+1) j))
source
theorem Polynomial.semiclassicalJacobiWeightedDerivative_eq_zero {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) (n j : ℕ) (hgap : n ≤ j ∨ j + 2 < n) :
Polynomial.semiclassicalJacobiWeightedDerivative ht hα hβ γ hα1 hβ1 n j = 0
Lean proof
/-- Column j of weighted differentiation has support only at j+1 and j+2. -/
theorem semiclassicalJacobiWeightedDerivative_eq_zero {t α β : ℝ} (ht : 1<t)
(hα : -1<α) (hβ : -1<β) (γ : ℝ) (hα1 : -1<α+1) (hβ1 : -1<β+1)
(n j : ℕ) (hgap : n≤j ∨ j+2<n) :
semiclassicalJacobiWeightedDerivative ht hα hβ γ hα1 hβ1 n j=0 := by
rw [semiclassicalJacobiWeightedDerivative_eq_neg_transpose]
simp only [Matrix.neg_apply, Matrix.transpose_apply,
semiclassicalJacobiDerivative_eq_zero ht hα hβ γ hα1 hβ1 n j hgap, neg_zero]
source
theorem Polynomial.semiclassicalJacobi_weightedDerivative_coefficientMap_exact {t α β : ℝ} (ht : 1 < t) (hα : -1 < α)
(hβ : -1 < β) (γ : ℝ) (hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) (v : ℕ →₀ ℝ) :
(Polynomial.semiclassicalJacobiBasis ht hα hβ γ).repr.symm
(((Polynomial.semiclassicalJacobiBasis ht hα1 hβ1 (γ + 1)).coefficientMap
(Polynomial.semiclassicalJacobiBasis ht hα hβ γ)
(Polynomial.semiclassicalJacobiWeightedDerivativeMap t α β γ))
v) =
(Polynomial.semiclassicalJacobiWeightedDerivativeMap t α β γ)
((Polynomial.semiclassicalJacobiBasis ht hα1 hβ1 (γ + 1)).repr.symm v)
Lean proof
/-- Weighted differentiation acts exactly on every finite expansion. -/
theorem semiclassicalJacobi_weightedDerivative_coefficientMap_exact {t α β : ℝ} (ht : 1<t)
(hα : -1<α) (hβ : -1<β) (γ : ℝ) (hα1 : -1<α+1) (hβ1 : -1<β+1) (v : ℕ →₀ ℝ) :
(semiclassicalJacobiBasis ht hα hβ γ).repr.symm
((semiclassicalJacobiBasis ht hα1 hβ1 (γ+1)).coefficientMap
(semiclassicalJacobiBasis ht hα hβ γ) (semiclassicalJacobiWeightedDerivativeMap t α β γ) v) =
semiclassicalJacobiWeightedDerivativeMap t α β γ
((semiclassicalJacobiBasis ht hα1 hβ1 (γ+1)).repr.symm v) :=
Basis.repr_symm_coefficientMap _ _ _ _
source
Reference details: Partial weighted semiclassical differentiation
Theorem
5.2.14
Partial weighted semiclassical differentiation
For \(t{\gt}1\), \(a,b{\gt}-1\), and real \(\gamma \), the map \(D_c p=(t-x)p'-(\gamma +1)p\) from parameters \((a,b,\gamma +1)\) to \((a+1,b+1,\gamma )\) has support only in rows \(n-1,n\) of column \(n\). Its coefficient action is exact on finite polynomial expansions. Its adjoint identity is
\[ \langle D_cp,z\rangle _{a+1,b+1,\gamma } =-\langle p,x(1-x)z'+[(a+1)(1-x)-(b+1)x]z\rangle _{a,b,\gamma +1}. \]
Reference: [PGSO24 , Section 3.4] .
Lean Formalisation
theorem Polynomial.integralInner_semiclassicalJacobi_cWeightedDerivative {t α β γ : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(p q : Polynomial ℝ) :
Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ (α + 1) (β + 1) γ)
(Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ (α + 1) (β + 1) γ)
((Polynomial.semiclassicalJacobiCWeightedDerivativeMap t γ) p) q ⋯) =
-Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β (γ + 1))
(Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ α β (γ + 1)) p
(Polynomial.X * (1 - Polynomial.X) * Polynomial.derivative q +
(Polynomial.C (α + 1) * (1 - Polynomial.X) - Polynomial.C (β + 1) * Polynomial.X) * q)
⋯)
Lean proof
/-- Partial weighted differentiation has a quadratic/linear polynomial adjoint. -/
theorem integralInner_semiclassicalJacobi_cWeightedDerivative {t α β γ : ℝ}
(ht : 1<t) (hα : -1<α) (hβ : -1<β) (p q : ℝ[X]) :
integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ (α+1) (β+1) γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ (α+1) (β+1) γ) (semiclassicalJacobiCWeightedDerivativeMap t γ p) q (h := (hasFiniteMoments_semiclassicalJacobiMeasure ht (by linarith) (by linarith)).integrable_mul _ _)) =
-integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β (γ+1)) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β (γ+1)) p (X*(1-X)*q.derivative+(C (α+1)*(1-X)-C (β+1)*X)*q)) := by
have hM := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ) ht hα hβ
have hT := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ) ht
(show -1<α+1 by linarith) (show -1<β+1 by linarith)
change integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ (α+1) (β+1) γ) (hT.pair ((C t-X)*p.derivative-C (γ+1)*p) q) = _
have hMg := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ+1) ht hα hβ
have hTg := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ+1) ht
(show -1<α+1 by linarith) (show -1<β+1 by linarith)
rw [integralInner_sub_left hT,
← integralInner_semiclassicalJacobi_gamma_add_one (α := α+1) (β := β+1) (γ := γ)
ht p.derivative q (hi := hTg.integrable_mul _ _) (hj := hT.integrable_mul _ _),
integralInner_semiclassicalJacobi_derivative ht hα hβ,
integralInner_semiclassicalJacobi_ab_add_one (α := α) (β := β) (γ := γ)
ht (C (γ+1)*p) q (hi := hT.integrable_mul _ _) (hj := hM.integrable_mul _ _),
integralInner_semiclassicalJacobi_gamma_add_one (α := α) (β := β) (γ := γ)
ht p _ (hi := hMg.integrable_mul _ _) (hj := hM.integrable_mul _ _)]
have he : integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) p (semiclassicalJacobiSigma t*q.derivative+semiclassicalJacobiTau t α β γ*q) (h := hM.integrable_mul _ _)) +
integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) (X*(1-X)*(C (γ+1)*p)) q (h := hM.integrable_mul _ _)) =
integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ α β γ) ((C t-X)*p) (X*(1-X)*q.derivative+(C (α+1)*(1-X)-C (β+1)*X)*q) (h := hM.integrable_mul _ _)) := by
rw [integralInner, integralInner, integralInner, ← integral_add
(hM.integrable_mul p _) (hM.integrable_mul _ q)]
apply integral_congr_ae
filter_upwards [] with x
simp only [eval_add, eval_sub, eval_mul, eval_X, eval_C, eval_one,
semiclassicalJacobiSigma, semiclassicalJacobiTau]
ring
linarith
source
4 related Lean declarations
def Polynomial.semiclassicalJacobiCWeightedDerivativeMap (t γ : ℝ) : Polynomial ℝ →ₗ[ℝ] Polynomial ℝ
Lean definition
/-- The polynomial action of differentiation weighted at the third singularity. -/
noncomputable def semiclassicalJacobiCWeightedDerivativeMap (t γ : ℝ) : ℝ[X] →ₗ[ℝ] ℝ[X] :=
(LinearMap.mulLeft ℝ (C t-X)).comp derivative - LinearMap.mulLeft ℝ (C (γ+1))
source
def Polynomial.semiclassicalJacobiCWeightedDerivative {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) : Matrix ℕ ℕ ℝ
Lean definition
/-- The derivative matrix from the original to the endpoint-raised family. -/
noncomputable def semiclassicalJacobiCWeightedDerivative {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α+1) (hβ1 : -1 < β+1) : Matrix ℕ ℕ ℝ :=
(semiclassicalJacobiBasis ht hα1 hβ1 γ).toMatrix
(fun n ↦ semiclassicalJacobiCWeightedDerivativeMap t γ
(semiclassicalJacobiSequence ht hα hβ (γ+1) n))
source
theorem Polynomial.semiclassicalJacobiCWeightedDerivative_eq_zero {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) (n j : ℕ) (hgap : n < j ∨ j + 1 < n) :
Polynomial.semiclassicalJacobiCWeightedDerivative ht hα hβ γ hα1 hβ1 j n = 0
Lean proof
/-- Column n of the actual derivative matrix is supported only at n-1 and n-2. -/
theorem semiclassicalJacobiCWeightedDerivative_eq_zero {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α+1) (hβ1 : -1 < β+1) (n j : ℕ)
(hgap : n < j ∨ j+1 < n) :
semiclassicalJacobiCWeightedDerivative ht hα hβ γ hα1 hβ1 j n = 0 := by
rw [semiclassicalJacobiCWeightedDerivative, Basis.toMatrix_apply, semiclassicalJacobiBasis_repr]
exact integralInner_semiclassicalJacobi_cWeightedDerivative_eq_zero ht hα hβ hα1 hβ1 n j hgap
source
theorem Polynomial.semiclassicalJacobi_cWeightedDerivative_coefficientMap_exact {t α β : ℝ} (ht : 1 < t) (hα : -1 < α)
(hβ : -1 < β) (γ : ℝ) (hα1 : -1 < α + 1) (hβ1 : -1 < β + 1) (v : ℕ →₀ ℝ) :
(Polynomial.semiclassicalJacobiBasis ht hα1 hβ1 γ).repr.symm
(((Polynomial.semiclassicalJacobiBasis ht hα hβ (γ + 1)).coefficientMap
(Polynomial.semiclassicalJacobiBasis ht hα1 hβ1 γ) (Polynomial.semiclassicalJacobiCWeightedDerivativeMap t γ))
v) =
(Polynomial.semiclassicalJacobiCWeightedDerivativeMap t γ)
((Polynomial.semiclassicalJacobiBasis ht hα hβ (γ + 1)).repr.symm v)
Lean proof
/-- The coefficient operator acts on every finite polynomial expansion exactly. -/
theorem semiclassicalJacobi_cWeightedDerivative_coefficientMap_exact {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(hα1 : -1 < α+1) (hβ1 : -1 < β+1) (v : ℕ →₀ ℝ) :
(semiclassicalJacobiBasis ht hα1 hβ1 γ).repr.symm
((semiclassicalJacobiBasis ht hα hβ (γ+1)).coefficientMap
(semiclassicalJacobiBasis ht hα1 hβ1 γ) (semiclassicalJacobiCWeightedDerivativeMap t γ) v) =
semiclassicalJacobiCWeightedDerivativeMap t γ
((semiclassicalJacobiBasis ht hα hβ (γ+1)).repr.symm v) :=
Basis.repr_symm_coefficientMap _ _ _ _
source
One-dimensional families also give separated bases in several variables. The next chapter treats product domains, triangles and disks. On the annulus, the radial factor will be a semiclassical Jacobi polynomial.
5.2.1 Constructing the parameter hierarchy
Fix \(t{\gt}1\), \(\alpha ,\beta {\gt}-1\) and \(\gamma \in \mathbb {R}\). Write \(p_j^{(\gamma )}\) for the positive-leading orthonormal semiclassical Jacobi polynomial with these parameters. Changing \(\gamma \) gives two ways to construct the next family: Cholesky for a unit shift and QR for a two-step shift. The finite formulas below include the extra mode produced by multiplication by \(x\).
Definition
5.2.15
Jacobi matrices and raising sections
Let \(X^{(\gamma )}_{ij}=[p_i^{(\gamma )}](x p_j^{(\gamma )})\). For \(c,N\in \mathbb {N}\), let \(R_{c,N}\) be the leading \(N\times N\) section of the connection from \(p^{(\gamma )}\) to \(p^{(\gamma +c)}\): \((R_{c,N})_{ij}=[p_i^{(\gamma +c)}]p_j^{(\gamma )}\), \(0\le i,j{\lt}N\). Here \([p_i]q\) denotes the coordinate of \(q\) in the indicated polynomial basis.
Lean Formalisation
def Polynomial.semiclassicalJacobiMatrix {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) : Matrix ℕ ℕ ℝ
Lean definition
/-- Multiplication by the coordinate in the positive orthonormal semiclassical basis. -/
noncomputable def semiclassicalJacobiMatrix {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) : Matrix ℕ ℕ ℝ :=
(semiclassicalJacobiBasis ht hα hβ γ).toMatrix
(fun j ↦ X * semiclassicalJacobiSequence ht hα hβ γ j)
source
1 related Lean declaration
def Polynomial.semiclassicalJacobiRaisingSection {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (c N : ℕ) :
Matrix (Fin N) (Fin N) ℝ
Lean definition
/-- A leading section of the connection raising the third parameter by an integer. -/
noncomputable def semiclassicalJacobiRaisingSection {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (c N : ℕ) :
Matrix (Fin N) (Fin N) ℝ :=
fun i j ↦ semiclassicalJacobiConnection ht hα hβ γ hα hβ (γ+c) i j
source
Structure and Gram identities
Theorem
5.2.16
Structure of the hierarchy matrices
\(X^{(\gamma )}\) is symmetric and tridiagonal. Each \(R_{c,N}\) is upper triangular, with positive diagonal, and invertible. Moreover,
\[ [\, [p_i^{(\gamma )}]((t-x)^c p_j^{(\gamma )})\, ]_{i,j{\lt}N} =R_{c,N}^{\mathsf T}R_{c,N}. \]
The multiplication on the left is performed on polynomials before taking the section.
Lean Formalisation
theorem Polynomial.semiclassicalJacobiMatrix_isBanded {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) :
(Polynomial.semiclassicalJacobiMatrix ht hα hβ γ).IsBanded 1 1
Lean proof
/-- The orthonormal Jacobi matrix is tridiagonal. -/
theorem semiclassicalJacobiMatrix_isBanded {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) :
(semiclassicalJacobiMatrix ht hα hβ γ).IsBanded 1 1 :=
(semiclassicalJacobiSequence_spec ht hα hβ γ).1.mul_matrix_isBanded
(hasFiniteMoments_semiclassicalJacobiMeasure ht hα hβ)
(hasPositiveDefiniteIntegral_semiclassicalJacobiMeasure ht hα hβ) _
source
4 related Lean declarations
theorem Polynomial.semiclassicalJacobiMatrix_symmetric {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (i j : ℕ) :
Polynomial.semiclassicalJacobiMatrix ht hα hβ γ i j = Polynomial.semiclassicalJacobiMatrix ht hα hβ γ j i
Lean proof
/-- Positive orthonormal coordinates make multiplication symmetric. -/
theorem semiclassicalJacobiMatrix_symmetric {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (i j : ℕ) :
semiclassicalJacobiMatrix ht hα hβ γ i j =
semiclassicalJacobiMatrix ht hα hβ γ j i := by
simp only [semiclassicalJacobiMatrix, Basis.toMatrix_apply,
semiclassicalJacobiBasis_repr, integralInner]
apply integral_congr_ae
filter_upwards [] with x
simp only [eval_mul]
ring
source
theorem Polynomial.semiclassicalJacobiRaisingSection_triangular {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(c N : ℕ) :
(Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ c N).IsUpperTriangular ∧
∀ (i : Fin N), 0 < Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ c N i i
Lean proof
/-- Every raising section has positive diagonal and is upper triangular. -/
theorem semiclassicalJacobiRaisingSection_triangular {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (c N : ℕ) :
(semiclassicalJacobiRaisingSection ht hα hβ γ c N).IsUpperTriangular ∧
∀ i, 0 < semiclassicalJacobiRaisingSection ht hα hβ γ c N i i :=
⟨semiclassicalJacobiConnection_upperTriangular ht hα hβ γ hα hβ (γ+c) N,
fun i ↦ semiclassicalJacobiConnection_diag_pos ht hα hβ γ hα hβ (γ+c) i⟩
source
theorem Polynomial.semiclassicalJacobiRaisingSection_isUnit {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(c N : ℕ) : IsUnit (Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ c N)
Lean proof
/-- Finite raising sections are invertible, including the empty section. -/
theorem semiclassicalJacobiRaisingSection_isUnit {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (c N : ℕ) :
IsUnit (semiclassicalJacobiRaisingSection ht hα hβ γ c N) := by
rw [Matrix.isUnit_iff_isUnit_det, isUnit_iff_ne_zero]
exact (semiclassicalJacobiRaisingSection_triangular ht hα hβ γ c N).1.det_ne_zero_iff.mpr
(fun i ↦ (semiclassicalJacobiRaisingSection_triangular ht hα hβ γ c N).2 i |>.ne')
source
theorem Polynomial.semiclassicalJacobiRaisingSection_gram {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(c N : ℕ) :
(Matrix.of fun i j =>
((Polynomial.semiclassicalJacobiBasis ht hα hβ γ).repr
((Polynomial.C t - Polynomial.X) ^ c * ↑(Polynomial.semiclassicalJacobiSequence ht hα hβ γ) ↑j))
↑i) =
(Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ c N).transpose *
Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ c N
Lean proof
/-- Polynomial multiplication for an integer shift is factored by its connection. -/
theorem semiclassicalJacobiRaisingSection_gram {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (c N : ℕ) :
(Matrix.of (fun i j : Fin N ↦ (semiclassicalJacobiBasis ht hα hβ γ).repr
((C t-X)^c * semiclassicalJacobiSequence ht hα hβ γ j) i)) =
(semiclassicalJacobiRaisingSection ht hα hβ γ c N).transpose *
semiclassicalJacobiRaisingSection ht hα hβ γ c N := by
refine Eq.trans ?_ (semiclassicalJacobiConnection_gram ht hα hβ γ hα hβ (γ+c) N)
ext i j
simp only [Matrix.of_apply]
rw [semiclassicalJacobiBasis_repr]
simp only [integralInner]
have hi := (hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ+c) ht hα hβ).integrable_mul
(semiclassicalJacobiSequence ht hα hβ γ i) (semiclassicalJacobiSequence ht hα hβ γ j)
have he := (integral_semiclassicalJacobi_shift_integrable ht α β γ 0 0 c
⟨_, by simpa only [Nat.cast_zero, add_zero] using hi⟩).2
simp only [Nat.cast_zero, add_zero, semiclassicalJacobiShiftDensity, pow_zero, one_mul] at he
erw [he]
apply integral_congr_ae
filter_upwards [] with x
simp only [eval_mul]
ring
source
Theorem
5.2.17
Cholesky construction of a unit shift
For every \(N\in \mathbb {N}\),
\[ tI_N-X^{(\gamma )}_N=R_{1,N}^{\mathsf T}R_{1,N}. \]
Thus \(R_{1,N}\) is the unique upper triangular factor with positive diagonal. Reference: [PGSO24 , Section 3.1] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobiRaisingSection_cholesky {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(N : ℕ) :
(t • 1 - Matrix.of fun i j => Polynomial.semiclassicalJacobiMatrix ht hα hβ γ ↑i ↑j) =
(Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ 1 N).transpose *
Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ 1 N
Lean proof
/-- A unit parameter shift is the Cholesky factorization of `t I - X`. -/
theorem semiclassicalJacobiRaisingSection_cholesky {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (N : ℕ) :
t • (1 : Matrix (Fin N) (Fin N) ℝ) -
(Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiMatrix ht hα hβ γ i j)) =
(semiclassicalJacobiRaisingSection ht hα hβ γ 1 N).transpose *
semiclassicalJacobiRaisingSection ht hα hβ γ 1 N := by
rw [← semiclassicalJacobiRaisingSection_gram]
ext i j
simp only [Matrix.of_apply, pow_one, sub_mul, C_mul', map_sub, map_smul, Finsupp.sub_apply,
Finsupp.smul_apply, smul_eq_mul, Matrix.sub_apply, Matrix.smul_apply,
semiclassicalJacobiMatrix, Basis.toMatrix_apply]
rw [← semiclassicalJacobiBasis_apply ht hα hβ γ j, Basis.repr_self]
simp [Matrix.one_apply, Finsupp.single_apply, Fin.ext_iff, eq_comm]
source
1 related Lean declaration
theorem Polynomial.semiclassicalJacobiRaisingSection_cholesky_unique {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β)
(γ : ℝ) (N : ℕ) (R : Matrix (Fin N) (Fin N) ℝ) (hR : R.IsUpperTriangular) (hdiag : ∀ (i : Fin N), 0 < R i i)
(hgram : R.transpose * R = t • 1 - Matrix.of fun i j => Polynomial.semiclassicalJacobiMatrix ht hα hβ γ ↑i ↑j) :
R = Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ 1 N
Lean proof
/-- The unit-shift connection is the unique positive upper triangular Cholesky factor. -/
theorem semiclassicalJacobiRaisingSection_cholesky_unique {t α β : ℝ} (ht : 1 < t)
(hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (N : ℕ)
(R : Matrix (Fin N) (Fin N) ℝ) (hR : R.IsUpperTriangular)
(hdiag : ∀ i, 0 < R i i)
(hgram : R.transpose * R = t • (1 : Matrix (Fin N) (Fin N) ℝ) -
Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiMatrix ht hα hβ γ i j)) :
R = semiclassicalJacobiRaisingSection ht hα hβ γ 1 N :=
Matrix.eq_of_pos_upperTriangular_gram_eq hR
(semiclassicalJacobiRaisingSection_triangular ht hα hβ γ 1 N).1 hdiag
(semiclassicalJacobiRaisingSection_triangular ht hα hβ γ 1 N).2
(hgram.trans (semiclassicalJacobiRaisingSection_cholesky ht hα hβ γ N))
source
Theorem
5.2.18
Padded Jacobi update
For any other real parameter \(\gamma '\), write \(R\) for the connection from \(p^{(\gamma )}\) to \(p^{(\gamma ')}\). With indices starting at zero,
\[ R_{[0,N),[0,N+1)}X^{(\gamma )}_{[0,N+1),[0,N)} =X^{(\gamma ')}_N R_{[0,N),[0,N)}. \]
In particular, when \(\gamma '=\gamma +c\), \(c\in \mathbb {N}\), there is a matrix \(S\) with \(R_{c,N}S=SR_{c,N}=I_N\), and
\[ X^{(\gamma +c)}_N= R_{[0,N),[0,N+1)}X^{(\gamma )}_{[0,N+1),[0,N)}S. \]
Reference: [PGSO24 , Sections 3.2 and 3.5] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobi_padded_intertwining {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ γ' : ℝ)
(N : ℕ) :
((Matrix.of fun i k => Polynomial.semiclassicalJacobiConnection ht hα hβ γ hα hβ γ' ↑i ↑k) *
Matrix.of fun k j => Polynomial.semiclassicalJacobiMatrix ht hα hβ γ ↑k ↑j) =
(Matrix.of fun i j => Polynomial.semiclassicalJacobiMatrix ht hα hβ γ' ↑i ↑j) *
Matrix.of fun i j => Polynomial.semiclassicalJacobiConnection ht hα hβ γ hα hβ γ' ↑i ↑j
Lean proof
/-- The connection intertwines multiplication, with one extra intermediate mode.
The right product needs no extra mode because conversion does not raise degree. -/
theorem semiclassicalJacobi_padded_intertwining (γ γ' : ℝ) (N : ℕ) :
(Matrix.of (fun i : Fin N ↦ fun k : Fin (N+1) ↦
semiclassicalJacobiConnection ht hα hβ γ hα hβ γ' i k)) *
(Matrix.of (fun k : Fin (N+1) ↦ fun j : Fin N ↦ semiclassicalJacobiMatrix ht hα hβ γ k j)) =
(Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiMatrix ht hα hβ γ' i j)) *
(Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiConnection ht hα hβ γ hα hβ γ' i j)) := by
ext i j
simp only [Matrix.mul_apply, Matrix.of_apply, semiclassicalJacobiConnection, semiclassicalJacobiMatrix,
Basis.toMatrix_apply, semiclassicalJacobiBasis_apply]
have hleft := semiclassicalJacobi_repr_map_sum ht hα hβ γ
(semiclassicalJacobiBasis ht hα hβ γ') LinearMap.id
(X * semiclassicalJacobiSequence ht hα hβ γ j) (N+1)
(by have := natDegree_mul_le (p := (X : ℝ[X])) (q := semiclassicalJacobiSequence ht hα hβ γ j)
simp only [natDegree_X, Sequence.natDegree_eq] at this
omega) i
have hright := semiclassicalJacobi_repr_map_sum ht hα hβ γ'
(semiclassicalJacobiBasis ht hα hβ γ') (LinearMap.mulLeft ℝ X)
(semiclassicalJacobiSequence ht hα hβ γ j) N (by simp) i
simp only [LinearMap.id_apply, LinearMap.mulLeft_apply] at hleft hright
exact hleft.symm.trans hright
source
1 related Lean declaration
theorem Polynomial.semiclassicalJacobi_padded_update {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (c N : ℕ) :
∃ S,
Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ c N * S = 1 ∧
S * Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ c N = 1 ∧
(Matrix.of fun i j => Polynomial.semiclassicalJacobiMatrix ht hα hβ (γ + ↑c) ↑i ↑j) =
((Matrix.of fun i k => Polynomial.semiclassicalJacobiConnection ht hα hβ γ hα hβ (γ + ↑c) ↑i ↑k) *
Matrix.of fun k j => Polynomial.semiclassicalJacobiMatrix ht hα hβ γ ↑k ↑j) *
S
Lean proof
/-- The padded intertwining identity gives the Jacobi update using a genuine
finite inverse. The inverse is specified by both inverse equations. -/
theorem semiclassicalJacobi_padded_update (γ : ℝ) (c N : ℕ) :
∃ S : Matrix (Fin N) (Fin N) ℝ,
semiclassicalJacobiRaisingSection ht hα hβ γ c N * S = 1 ∧
S * semiclassicalJacobiRaisingSection ht hα hβ γ c N = 1 ∧
Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiMatrix ht hα hβ (γ+c) i j) =
(Matrix.of (fun i : Fin N ↦ fun k : Fin (N+1) ↦
semiclassicalJacobiConnection ht hα hβ γ hα hβ (γ+c) i k)) *
(Matrix.of (fun k : Fin (N+1) ↦ fun j : Fin N ↦
semiclassicalJacobiMatrix ht hα hβ γ k j)) * S := by
obtain ⟨u, hu⟩ := semiclassicalJacobiRaisingSection_isUnit ht hα hβ γ c N
refine ⟨↑u⁻¹, ?_, ?_, ?_⟩
· rw [← hu]; exact u.mul_inv
· rw [← hu]; exact u.inv_mul
· rw [semiclassicalJacobi_padded_intertwining]
change _ = _ * semiclassicalJacobiRaisingSection ht hα hβ γ c N * _
rw [← hu, Units.mul_inv_cancel_right]
source
Definition
5.2.19
Rectangular factors for a two-step shift
For \(0\le i{\lt}N+1\) and \(0\le j{\lt}N\), define
\[ (A_N)_{ij}=[p_i^{(\gamma )}]((t-x)p_j^{(\gamma )}),\qquad (Q_N)_{ij}=[p_i^{(\gamma )}]((t-x)p_j^{(\gamma +2)}). \]
Lean Formalisation
def Polynomial.semiclassicalJacobiQRSection {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (N : ℕ) :
Matrix (Fin (N + 1)) (Fin N) ℝ
Lean definition
/-- The orthogonal factor's columns are `(t-X)` times the twice-raised basis. -/
noncomputable def semiclassicalJacobiQRSection (γ : ℝ) (N : ℕ) :
Matrix (Fin (N+1)) (Fin N) ℝ := fun i j ↦
(semiclassicalJacobiBasis ht hα hβ γ).repr
((C t-X) * semiclassicalJacobiSequence ht hα hβ (γ+2) j) i
source
1 related Lean declaration
def Polynomial.semiclassicalJacobiShiftSection {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (N : ℕ) :
Matrix (Fin (N + 1)) (Fin N) ℝ
Lean definition
/-- Multiplication by `t-X`, with one extra output mode. -/
noncomputable def semiclassicalJacobiShiftSection (γ : ℝ) (N : ℕ) :
Matrix (Fin (N+1)) (Fin N) ℝ := fun i j ↦
(semiclassicalJacobiBasis ht hα hβ γ).repr
((C t-X) * semiclassicalJacobiSequence ht hα hβ γ j) i
source
Theorem
5.2.20
Semiclassical Jacobi hierarchy construction
The two-step raising section is the positive-diagonal triangular factor in the rectangular QR factorization
\[ A_N=Q_NR_{2,N},\qquad Q_N^{\mathsf T}Q_N=I_N. \]
The twice-raised Jacobi matrix is obtained by the exact padded compression
\[ X^{(\gamma +2)}_N=Q_N^{\mathsf T}X^{(\gamma )}_{N+1}Q_N. \]
Together with the unit-shift Cholesky factorization, these identities construct successive levels of the semiclassical Jacobi parameter hierarchy. Reference: [PGSO24 , Sections 3.1, 3.2 and 3.5] .
Lean Formalisation
theorem Polynomial.semiclassicalJacobiShiftSection_eq_QR {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (N : ℕ) :
Polynomial.semiclassicalJacobiShiftSection ht hα hβ γ N =
Polynomial.semiclassicalJacobiQRSection ht hα hβ γ N * Polynomial.semiclassicalJacobiRaisingSection ht hα hβ γ 2 N
Lean proof
/-- The rectangular multiplication section is exactly Q times the two-step connection. -/
theorem semiclassicalJacobiShiftSection_eq_QR (γ : ℝ) (N : ℕ) :
semiclassicalJacobiShiftSection ht hα hβ γ N =
semiclassicalJacobiQRSection ht hα hβ γ N *
semiclassicalJacobiRaisingSection ht hα hβ γ 2 N := by
ext i j
simpa only [semiclassicalJacobiShiftSection, semiclassicalJacobiQRSection,
semiclassicalJacobiRaisingSection, semiclassicalJacobiConnection,
Matrix.mul_apply, Basis.toMatrix_apply, semiclassicalJacobiBasis_apply,
Nat.cast_ofNat, LinearMap.mulLeft_apply] using
semiclassicalJacobi_repr_map_sum ht hα hβ (γ+2)
(semiclassicalJacobiBasis ht hα hβ γ) (LinearMap.mulLeft ℝ (C t-X))
(semiclassicalJacobiSequence ht hα hβ γ j) N (by simp) i
source
2 related Lean declarations
theorem Polynomial.semiclassicalJacobiQRSection_orthogonal {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
(N : ℕ) :
(Polynomial.semiclassicalJacobiQRSection ht hα hβ γ N).transpose *
Polynomial.semiclassicalJacobiQRSection ht hα hβ γ N =
1
Lean proof
/-- The rectangular Q has orthonormal columns. -/
theorem semiclassicalJacobiQRSection_orthogonal (γ : ℝ) (N : ℕ) :
(semiclassicalJacobiQRSection ht hα hβ γ N).transpose *
semiclassicalJacobiQRSection ht hα hβ γ N = 1 := by
ext i j
simp only [Matrix.mul_apply, Matrix.transpose_apply, semiclassicalJacobiQRSection]
rw [← semiclassicalJacobi_integralInner_eq_sum ht hα hβ γ _ _ (N+1)
(by have hd := natDegree_mul_le (p := C t-X) (q := semiclassicalJacobiSequence ht hα hβ (γ+2) i)
have htdeg : (C t-X).natDegree ≤ 1 := by compute_degree
simp only [Sequence.natDegree_eq] at hd
omega), semiclassicalJacobi_integralInner_shift_two ht hα hβ]
rw [← semiclassicalJacobiBasis_repr ht hα hβ, ← semiclassicalJacobiBasis_apply ht hα hβ (γ+2) i,
Basis.repr_self]
simp [Matrix.one_apply, Finsupp.single_apply, Fin.ext_iff]
source
theorem Polynomial.semiclassicalJacobiQRSection_update {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ) (N : ℕ) :
((Polynomial.semiclassicalJacobiQRSection ht hα hβ γ N).transpose *
Matrix.of fun i j => Polynomial.semiclassicalJacobiMatrix ht hα hβ γ ↑i ↑j) *
Polynomial.semiclassicalJacobiQRSection ht hα hβ γ N =
Matrix.of fun i j => Polynomial.semiclassicalJacobiMatrix ht hα hβ (γ + 2) ↑i ↑j
Lean proof
/-- The twice-raised Jacobi section is the compression by the rectangular Q.
All entries are exact; the old Jacobi section has one extra row and column. -/
theorem semiclassicalJacobiQRSection_update (γ : ℝ) (N : ℕ) :
(semiclassicalJacobiQRSection ht hα hβ γ N).transpose *
(Matrix.of (fun i j : Fin (N+1) ↦ semiclassicalJacobiMatrix ht hα hβ γ i j)) *
semiclassicalJacobiQRSection ht hα hβ γ N =
Matrix.of (fun i j : Fin N ↦ semiclassicalJacobiMatrix ht hα hβ (γ+2) i j) := by
ext i j
simp only [Matrix.mul_apply, Matrix.transpose_apply, Matrix.of_apply,
semiclassicalJacobiQRSection, semiclassicalJacobiMatrix, Basis.toMatrix_apply]
simp_rw [Finset.sum_mul]
rw [Finset.sum_comm]
have hi : ((C t-X)*semiclassicalJacobiSequence ht hα hβ (γ+2) i).natDegree < N+1 := by
have hd := natDegree_mul_le (p := C t-X) (q := semiclassicalJacobiSequence ht hα hβ (γ+2) i)
have htdeg : (C t-X).natDegree ≤ 1 := by compute_degree
simp only [Sequence.natDegree_eq] at hd
omega
have hj : ((C t-X)*semiclassicalJacobiSequence ht hα hβ (γ+2) j).natDegree < N+1 := by
have hd := natDegree_mul_le (p := C t-X) (q := semiclassicalJacobiSequence ht hα hβ (γ+2) j)
have htdeg : (C t-X).natDegree ≤ 1 := by compute_degree
simp only [Sequence.natDegree_eq] at hd
omega
rw [← semiclassicalJacobi_integralInner_mul_eq_sum ht hα hβ γ _ _ X (N+1) hi hj]
have he : X * ((C t-X)*semiclassicalJacobiSequence ht hα hβ (γ+2) j) =
(C t-X)*(X*semiclassicalJacobiSequence ht hα hβ (γ+2) j) := by ring
have htransfer := semiclassicalJacobi_integralInner_shift_two ht hα hβ γ
(semiclassicalJacobiSequence ht hα hβ (γ+2) i)
(X*semiclassicalJacobiSequence ht hα hβ (γ+2) j)
rw [semiclassicalJacobiBasis_repr ht hα hβ]
simp only [integralInner] at htransfer ⊢
rw [he, htransfer]
apply integral_congr_ae
filter_upwards [] with x
exact mul_comm _ _
source