Skip to content

Commit e7b4ed4

Browse files
committed
Finish leadingCoeff
1 parent b7874a1 commit e7b4ed4

1 file changed

Lines changed: 36 additions & 6 deletions

File tree

  • Mathlib/Analysis/SpecialFunctions/Trigonometric/Chebyshev

Mathlib/Analysis/SpecialFunctions/Trigonometric/Chebyshev/Extremal.lean

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,24 @@ Authors: Yuval Filmus
66
module
77

88
public 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
1011
public import Mathlib.LinearAlgebra.Lagrange
1112
public 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
2629
namespace 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+
163193
end Polynomial.Chebyshev

0 commit comments

Comments
 (0)