@@ -6,21 +6,24 @@ Authors: Yuval Filmus
66module
77
88public import Mathlib.RingTheory.Polynomial.Chebyshev
9- public import Mathlib.Analysis.SpecialFunctions.Trigonometric.Chebyshev.RootsExtrema
9+ public import Mathlib.Analysis.SpecialFunctions.Trigonometric.Basic
10+ public import Mathlib.Analysis.SpecialFunctions.Trigonometric.Chebyshev.Basic
1011public import Mathlib.LinearAlgebra.Lagrange
1112public import Mathlib.Topology.Algebra.Polynomial
1213
1314/-!
14- # Chebyshev polynomials over the reals: leading coefficient
15+ # Chebyshev polynomials over the reals: some extremal properties
1516
16- * Chebyshev polynomials minimize deviation from zero ,
17+ * Chebyshev polynomials have largest leading coefficient ,
1718 following proof in https://math.stackexchange.com/a/978145/1277
18- [SWITCH TO STATEMENT]
19- * Chebyshev polynomials maximize iterated derivatives at 1 and beyond, using similar idea
19+ * Chebyshev polynomials maximize iterated derivatives at 1 and beyond
2020
2121 ## Main statements
2222
23- [ STATEMENTS ]
23+ * `leadingCoeff_le_of_bounded`: If P is a degree n polynomial and |P(x)|≤1 for all |x|≤ 1 then
24+ the leading coefficient of P is at most 2^(n-1)
25+ * `leadingCoeff_eq_iff_of_bounded`: If P is a degree n polynomial and |P(x)|≤1 for all |x|≤ 1 then
26+ the leading coefficient of P equals 2^(n-1) iff it is the n'th Chebyshev polynomial
2427 -/
2528@[expose] public section
2629namespace Polynomial.Chebyshev
@@ -160,4 +163,31 @@ theorem apply_eq_apply_T_real_iff {n : ℕ} {param : ℝ[X] → ℝ} {c : ℕ
160163 have := ne_of_lt (hcpos i (Finset.mem_Iic.mp hi))
161164 grind => ring
162165
166+ theorem leadingCoeff_eq_sum_chebyshevNode (n : ℕ) (P : ℝ[X]) (hP : P.degree = n) :
167+ P.leadingCoeff = ∑ i ≤ n, (P.eval (chebyshevNode n i)) *
168+ (∏ j ∈ (Finset.range (n + 1 )).erase i, (chebyshevNode n i - chebyshevNode n j))⁻¹ := by
169+ rw [Lagrange.leadingCoeff_eq_sum (strictAntiOn_chebyshevNode n).injOn (by simp [hP]),
170+ show Finset.range (n + 1 ) = Finset.Iic n by grind]
171+ rfl
172+
173+ theorem leadingCoeff_eq_sum_chebyshevNode_c_pos {n i : ℕ} (hi : i ≤ n) :
174+ 0 < (-1 ) ^ i *
175+ (∏ j ∈ (Finset.range (n + 1 )).erase i, (chebyshevNode n i - chebyshevNode n j))⁻¹ := by
176+ have := inv_pos_of_pos <| zero_lt_prod_chebyshevNode_sub_chebyshevNode hi
177+ rwa [mul_inv, ← inv_pow, inv_neg_one] at this
178+
179+ theorem leadingCoeff_le_of_bounded {n : ℕ} {P : ℝ[X]}
180+ (hPdeg : P.degree = n) (hPbnd : ∀ x ∈ Set.Icc (-1 ) 1 , P.eval x ∈ Set.Icc (-1 ) 1 ) :
181+ P.leadingCoeff ≤ 2 ^ (n - 1 ) := by
182+ convert apply_le_apply_T_real (leadingCoeff_eq_sum_chebyshevNode n)
183+ (fun i hi => le_of_lt <| leadingCoeff_eq_sum_chebyshevNode_c_pos hi) hPdeg hPbnd
184+ simp
185+
186+ theorem leadingCoeff_eq_iff_of_bounded {n : ℕ} {P : ℝ[X]}
187+ (hPdeg : P.degree = n) (hPbnd : ∀ x ∈ Set.Icc (-1 ) 1 , P.eval x ∈ Set.Icc (-1 ) 1 ) :
188+ P.leadingCoeff = 2 ^ (n - 1 ) ↔ P = T ℝ n := by
189+ convert apply_eq_apply_T_real_iff (leadingCoeff_eq_sum_chebyshevNode n)
190+ (fun i hi => leadingCoeff_eq_sum_chebyshevNode_c_pos hi) hPdeg hPbnd
191+ simp
192+
163193end Polynomial.Chebyshev
0 commit comments