Orthogonal polynomials and polynomial sequences
Classical and combinatorial families of polynomials, their recurrences and generating functions, and orthogonality via Favard's theorem, J-fractions and Riordan arrays.
- Bessel polynomials
- Catalan-type polynomials
- Charlier polynomials
- Chebyshev polynomials of the second kind
- Favard's theorem
- Kassel–Reutenauer polynomials
- Moment generating functions as J-fractions
TheoremBinomial theorem for rising factorials#✓fully proved
For every natural number \(n\) and all real numbers \(a\) and \(b\), writing \(x^{\overline{m}} = x(x+1)\cdots(x+m-1)\) for the rising factorial,
theorem ascPochhammer_eval_add (n : ℕ) (a b : ℝ) :
(ascPochhammer ℝ n).eval (a + b) =
∑ k ∈ Finset.range (n + 1), (n.choose k : ℝ) *
(ascPochhammer ℝ k).eval a *
(ascPochhammer ℝ (n - k)).eval b
Sources
- Paul Eloe and Catherine Kublik, "When Numerical Analysis Crosses Paths with Catalan and Generalized Motzkin Numbers," Journal of Integer Sequences 21 (2018), Article 18.8.4, Theorem, equation, lines 156–161, https://cs.uwaterloo.ca/journals/JIS/VOL21/Kublik/kublik2.tex
Used by 1
StructureClassical orthogonal polynomial family#✓fully proved
A classical orthogonal polynomial family consists of real polynomials \(P_0, P_1, P_2, \dots\), each \(P_n\) monic of degree exactly \(n\), a measure \(\mu\) on \(\mathbb{R}\), a measurable set \(D \subseteq \mathbb{R}\) that is an interval with nonempty interior, and a function \(w : \mathbb{R} \to \mathbb{R}\) (the weight), such that \(w(x) \ge 0\) for every \(x \in D\); \(\mu\) is the measure with density \(w\) with respect to Lebesgue measure restricted to \(D\); \(\int P_m P_n \, d\mu = 0\) whenever \(m \ne n\); \(\int P_n^2 \, d\mu \ne 0\) for every \(n\); and there are real numbers \(u_0, u_1, v_0, v_1, v_2\), with \(v_0, v_1, v_2\) not all zero, such that at every interior point \(x\) of \(D\) the weight is differentiable and \((v_0 + v_1 x + v_2 x^2) \, w'(x) = (u_0 + u_1 x) \, w(x)\) (the Pearson equation).
MetaMathlibExt.ClassicalOrthogonalPolynomialFamily · 42 lines
structure ClassicalOrthogonalPolynomialFamily where
/-- Sequence of real polynomials (concept `jis_sem_6573fe45e3bbd4f163aed756`). -/
P : ℕ → Polynomial ℝ
/-- The source uses the monic normalization of the polynomial family. -/
monic : ∀ n : ℕ, (P n).Monic
/-- The `n`th member has degree exactly `n`. -/
natDegree_eq : ∀ n : ℕ, (P n).natDegree = n
/-- Orthogonalizing measure (concept `jis_sem_6573fe45e3bbd4f163aed756`). -/
μ : MeasureTheory.Measure ℝ
/-- Supporting domain for the weight density (source block `jis_srcblock_e90c95146a5fe658`). -/
domain : Set ℝ
/-- The domain is measurable (source block `jis_srcblock_e90c95146a5fe658`). -/
measurable_domain : MeasurableSet domain
/-- The support domain is an interval, as in the classical families. -/
ordConnected_domain : Set.OrdConnected domain
/-- The support interval has nonempty interior, so the Pearson equation is not vacuous. -/
interior_domain_nonempty : (interior domain).Nonempty
/-- Distinct members are orthogonal with respect to `μ`
(concept `jis_sem_6573fe45e3bbd4f163aed756`). -/
orthogonal : ∀ m n : ℕ, m ≠ n →
MeasureTheory.integral μ (fun x => Polynomial.eval x (P m) * Polynomial.eval x (P n)) = 0
/-- Each squared norm is nonzero, excluding the zero family
(concept `jis_sem_6573fe45e3bbd4f163aed756`). -/
norm_ne_zero : ∀ n : ℕ,
MeasureTheory.integral μ (fun x => (Polynomial.eval x (P n)) ^ 2) ≠ 0
/-- Nonnegative weight function (source block `jis_srcblock_e90c95146a5fe658`). -/
weight : ℝ → ℝ
/-- The weight is nonnegative (source block `jis_srcblock_e90c95146a5fe658`). -/
weight_nonneg : ∀ x ∈ domain, 0 ≤ weight x
/-- The measure is the weight density against restricted Lebesgue volume
(source block `jis_srcblock_e90c95146a5fe658`). -/
measure_eq : μ = (MeasureTheory.volume.restrict domain).withDensity
(fun x => ENNReal.ofReal (weight x))
/-- Classical Pearson equation `V w' = U w`, where `U` is linear and `V` is a genuinely
nonzero quadratic polynomial. This cross-multiplied form remains meaningful at zeros of
`V` or `w` (source block `jis_srcblock_e90c95146a5fe658`). -/
classical : ∃ u0 u1 v0 v1 v2 : ℝ,
(v0 ≠ 0 ∨ v1 ≠ 0 ∨ v2 ≠ 0) ∧
∀ x : ℝ, x ∈ interior domain →
DifferentiableAt ℝ weight x ∧
(v0 + v1 * x + v2 * x ^ 2) * deriv weight x =
(u0 + u1 * x) * weight x
P : ℕ → Polynomial ℝ
MathlibExt/Analysis/SpecialFunctions/ClassicalOrthogonalPolynomial.lean:28
domain : Set ℝ
MathlibExt/Analysis/SpecialFunctions/ClassicalOrthogonalPolynomial.lean:36
μ : MeasureTheory.Measure ℝ
MathlibExt/Analysis/SpecialFunctions/ClassicalOrthogonalPolynomial.lean:34
weight : ℝ → ℝ
MathlibExt/Analysis/SpecialFunctions/ClassicalOrthogonalPolynomial.lean:52
TheoremMeixner-type characterization of Riordan orthogonal polynomial arrays#✓fully proved
Let \(d\) and \(h\) be real formal power series with \([x^0]\,h = 0\), \([x^1]\,h \ne 0\) and \([x^0]\,d \ne 0\), where \([x^n]\) denotes the coefficient of \(x^n\), and let \(L\) be the Riordan array of \((d, h)\), with entries \(L_{n,k} = [x^n]\,(d h^k)\) for \(n, k \ge 0\). Call \(L\) a monic orthogonal coefficient array if there are real polynomials \(P_0, P_1, \dots\) with \([x^k]\,P_n = L_{n,k}\) for all \(n, k\), each \(P_n\) monic, and the family \((P_n)\) formally orthogonal. Each of the following three conditions is equivalent to \(L\) being a monic orthogonal coefficient array.
- Meixner form: there are real numbers \(\lambda, \mu, r, s\) with \(s \ne 0\) and \(s + \mu \ne 0\) such that \(d\,(1 + r x + s x^2) = 1 - \lambda x - \mu x^2\) and \(h\,(1 + r x + s x^2) = x\).
- Stieltjes form of the inverse: \(L_{0,0} = 1\), and there are an array \((L'_{n,k})\) and real numbers \(r_1, s_1, r, s\) with \(s_1 \ne 0\) and \(s \ne 0\) such that \(L_{n,k} = L'_{n,k} = 0\) whenever \(k > n\); \(\sum_{j=0}^{n} L_{n,j} L'_{j,k}\) and \(\sum_{j=0}^{n} L'_{n,j} L_{j,k}\) both equal \(1\) if \(n = k\) and \(0\) otherwise; and \(L'_{n+1,k} = \sum_{j=0}^{n+1} L'_{n,j} S_{j,k}\) for all \(n, k\), where \(S\) is the Stieltjes matrix with parameters \(r_1, s_1, r, s\): its superdiagonal entries are \(1\), its diagonal is \(r_1, r, r, \dots\), its subdiagonal is \(s_1, s, s, \dots\), and all other entries are \(0\).
- Coefficient recurrence: there are real numbers \(\lambda, \mu, r, s\) with \(s \ne 0\) and \(s + \mu \ne 0\) such that for all \(N, K \ge 0\), \(L_{N,K} + r L_{N-1,K} - L_{N-1,K-1} + s L_{N-2,K} = c_{N,K}\), where any entry of \(L\) with a negative index is read as \(0\), \(c_{0,0} = 1\), \(c_{1,0} = -\lambda\), \(c_{2,0} = -\mu\), and \(c_{N,K} = 0\) otherwise.
Proof: The coefficient recurrence is the common hub. The Meixner equivalence follows from Barry-Hennessy, the orthogonality equivalence from Favard's theorem as in Chihara, and the inverse-array equivalence from the Stieltjes production construction of the inverse array.
MetaMathlibExt.riordan_coeff_orth_equiv · 37 lines
public theorem riordan_coeff_orth_equiv :
∀ (d h : PowerSeries ℝ) (L : ℕ → ℕ → ℝ),
(PowerSeries.coeff 0 h = 0 ∧ PowerSeries.coeff 1 h ≠ 0 ∧
PowerSeries.coeff 0 d ≠ 0 ∧
∀ n k : ℕ, L n k = PowerSeries.coeff n (d * h ^ k)) →
let IsMonicOrthogonalCoeffArray :=
∃ P : ℕ → Polynomial ℝ,
(∀ n k : ℕ, Polynomial.coeff (P n) k = L n k) ∧
(∀ n : ℕ, (P n).Monic) ∧ Polynomial.IsFormallyOrthogonal P
(IsMonicOrthogonalCoeffArray ↔
∃ lam mu r s : ℝ, s ≠ 0 ∧ s + mu ≠ 0 ∧
d * (1 + PowerSeries.C r * (PowerSeries.X : PowerSeries ℝ) +
PowerSeries.C s * (PowerSeries.X : PowerSeries ℝ) ^ 2) =
1 - PowerSeries.C lam * (PowerSeries.X : PowerSeries ℝ) -
PowerSeries.C mu * (PowerSeries.X : PowerSeries ℝ) ^ 2 ∧
h * (1 + PowerSeries.C r * (PowerSeries.X : PowerSeries ℝ) +
PowerSeries.C s * (PowerSeries.X : PowerSeries ℝ) ^ 2) =
(PowerSeries.X : PowerSeries ℝ)) ∧
(IsMonicOrthogonalCoeffArray ↔
∃ Linv : ℕ → ℕ → ℝ, ∃ r₁ s₁ r s : ℝ, L 0 0 = 1 ∧ s₁ ≠ 0 ∧ s ≠ 0 ∧
(∀ n k : ℕ, k > n → L n k = 0) ∧
(∀ n k : ℕ, k > n → Linv n k = 0) ∧
(∀ n k : ℕ, (∑ j ∈ Finset.range (n + 1), L n j * Linv j k) =
(if n = k then 1 else 0)) ∧
(∀ n k : ℕ, (∑ j ∈ Finset.range (n + 1), Linv n j * L j k) =
(if n = k then 1 else 0)) ∧
(∀ n k : ℕ, Linv (n + 1) k =
∑ j ∈ Finset.range (n + 2), Linv n j * stieltjesMatrix r₁ s₁ r s j k)) ∧
(IsMonicOrthogonalCoeffArray ↔
∃ lam mu r s : ℝ, s ≠ 0 ∧ s + mu ≠ 0 ∧
∀ N K : ℕ,
L N K + r * (if 1 ≤ N then L (N - 1) K else 0) -
(if 1 ≤ N ∧ 1 ≤ K then L (N - 1) (K - 1) else 0) +
s * (if 2 ≤ N then L (N - 2) K else 0) =
(if K = 0 then
if N = 0 then 1 else if N = 1 then -lam else if N = 2 then -mu else 0
else 0))
public def IsFormallyOrthogonal {R : Type*} [Field R]
(p : ℕ → Polynomial R) : Prop :=
∃ L : Polynomial R →ₗ[R] R, (∀ n, (p n).natDegree = n) ∧
(∀ n m, n ≠ m → L (p n * p m) = 0) ∧ ∀ n, L (p n ^ 2) ≠ 0
MathlibExt/Algebra/Polynomial/FormalOrthogonality.lean:29
def stieltjesMatrix {R : Type*} [AddMonoidWithOne R] (a1 b1 a b : R) (i j : ℕ) : R :=
if j = i + 1 then 1
else if i = 0 ∧ j = 0 then a1
else if i = 1 ∧ j = 0 then b1
else if j = i then a
else if j + 1 = i then b
else 0
MathlibExt/LinearAlgebra/Matrix/StieltjesMatrix.lean:23
Sources
- Paul Barry and Aoife Hennessy, "Meixner-Type Results for Riordan Arrays and Associated Integer Sequences," Journal of Integer Sequences 13 (2010), Article 10.9.4, Proposition (referee's summary of the main results), lines 733–752, https://cs.uwaterloo.ca/journals/JIS/VOL13/Barry5/barry96s.tex
Uses 3
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.