Documentation

Mathlib.RingTheory.Polynomial.Chebyshev

Chebyshev polynomials #

The Chebyshev polynomials are families of polynomials indexed by , with integral coefficients.

Main definitions #

Main statements #

Implementation details #

Since Chebyshev polynomials have interesting behaviour over the complex numbers and modulo p, we define them to have coefficients in an arbitrary commutative ring, even though technically would suffice. The benefit of allowing arbitrary coefficient rings, is that the statements afterwards are clean, and do not have map (Int.castRingHom R) interfering all the time.

References #

[Lionel Ponton, Roots of the Chebyshev polynomials: A purely algebraic approach] [Pon20]

TODO #

noncomputable def Polynomial.Chebyshev.T (R : Type u_1) [CommRing R] :

T n is the n-th Chebyshev polynomial of the first kind.

Equations
Instances For
    theorem Polynomial.Chebyshev.induct (motive : Prop) (zero : motive 0) (one : motive 1) (add_two : ∀ (n : ), motive (n + 1)motive nmotive (n + 2)) (neg_add_one : ∀ (n : ), motive (-n)motive (-n + 1)motive (-n - 1)) (a : ) :
    motive a

    Induction principle used for proving facts about Chebyshev polynomials.

    @[simp]
    @[simp]
    theorem Polynomial.Chebyshev.T_one (R : Type u_1) [CommRing R] :
    Polynomial.Chebyshev.T R 1 = Polynomial.X
    theorem Polynomial.Chebyshev.T_two (R : Type u_1) [CommRing R] :
    Polynomial.Chebyshev.T R 2 = 2 * Polynomial.X ^ 2 - 1
    theorem Polynomial.Chebyshev.T_neg_two (R : Type u_1) [CommRing R] :
    Polynomial.Chebyshev.T R (-2) = 2 * Polynomial.X ^ 2 - 1
    @[simp]
    theorem Polynomial.Chebyshev.T_eval_neg_one (R : Type u_1) [CommRing R] (n : ) :
    Polynomial.eval (-1) (Polynomial.Chebyshev.T R n) = n.negOnePow
    noncomputable def Polynomial.Chebyshev.U (R : Type u_1) [CommRing R] :

    U n is the n-th Chebyshev polynomial of the second kind.

    Equations
    Instances For
      @[simp]
      @[simp]
      theorem Polynomial.Chebyshev.U_one (R : Type u_1) [CommRing R] :
      Polynomial.Chebyshev.U R 1 = 2 * Polynomial.X
      theorem Polynomial.Chebyshev.U_two (R : Type u_1) [CommRing R] :
      Polynomial.Chebyshev.U R 2 = 4 * Polynomial.X ^ 2 - 1
      @[simp]
      theorem Polynomial.Chebyshev.U_eval_neg_one (R : Type u_1) [CommRing R] (n : ) :
      Polynomial.eval (-1) (Polynomial.Chebyshev.U R n) = n.negOnePow * (n + 1)
      theorem Polynomial.Chebyshev.T_eq_X_mul_T_sub_pol_U (R : Type u_1) [CommRing R] (n : ) :
      Polynomial.Chebyshev.T R (n + 2) = Polynomial.X * Polynomial.Chebyshev.T R (n + 1) - (1 - Polynomial.X ^ 2) * Polynomial.Chebyshev.U R n
      noncomputable def Polynomial.Chebyshev.C (R : Type u_1) [CommRing R] :

      C n is the nth rescaled Chebyshev polynomial of the first kind (also known as a Vieta–Lucas polynomial), given by $C_n(2x) = 2T_n(x)$. See Polynomial.Chebyshev.C_comp_two_mul_X.

      Equations
      Instances For
        @[simp]
        theorem Polynomial.Chebyshev.C_one (R : Type u_1) [CommRing R] :
        Polynomial.Chebyshev.C R 1 = Polynomial.X
        theorem Polynomial.Chebyshev.C_two (R : Type u_1) [CommRing R] :
        Polynomial.Chebyshev.C R 2 = Polynomial.X ^ 2 - 2
        theorem Polynomial.Chebyshev.C_neg_two (R : Type u_1) [CommRing R] :
        Polynomial.Chebyshev.C R (-2) = Polynomial.X ^ 2 - 2
        theorem Polynomial.Chebyshev.C_comp_two_mul_X (R : Type u_1) [CommRing R] (n : ) :
        (Polynomial.Chebyshev.C R n).comp (2 * Polynomial.X) = 2 * Polynomial.Chebyshev.T R n
        @[simp]
        theorem Polynomial.Chebyshev.C_eval_neg_two (R : Type u_1) [CommRing R] (n : ) :
        Polynomial.eval (-2) (Polynomial.Chebyshev.C R n) = 2 * n.negOnePow
        theorem Polynomial.Chebyshev.C_eq_two_mul_T_comp_half_mul_X (R : Type u_1) [CommRing R] [Invertible 2] (n : ) :
        Polynomial.Chebyshev.C R n = 2 * (Polynomial.Chebyshev.T R n).comp (Polynomial.C 2 * Polynomial.X)
        theorem Polynomial.Chebyshev.T_eq_half_mul_C_comp_two_mul_X (R : Type u_1) [CommRing R] [Invertible 2] (n : ) :
        Polynomial.Chebyshev.T R n = Polynomial.C 2 * (Polynomial.Chebyshev.C R n).comp (2 * Polynomial.X)
        noncomputable def Polynomial.Chebyshev.S (R : Type u_1) [CommRing R] :

        S n is the nth rescaled Chebyshev polynomial of the second kind (also known as a Vieta–Fibonacci polynomial), given by $S_n(2x) = U_n(x)$. See Polynomial.Chebyshev.S_comp_two_mul_X.

        Equations
        Instances For
          @[simp]
          theorem Polynomial.Chebyshev.S_one (R : Type u_1) [CommRing R] :
          Polynomial.Chebyshev.S R 1 = Polynomial.X
          theorem Polynomial.Chebyshev.S_two (R : Type u_1) [CommRing R] :
          Polynomial.Chebyshev.S R 2 = Polynomial.X ^ 2 - 1
          @[simp]
          theorem Polynomial.Chebyshev.S_eval_neg_two (R : Type u_1) [CommRing R] (n : ) :
          Polynomial.eval (-2) (Polynomial.Chebyshev.S R n) = n.negOnePow * (n + 1)
          theorem Polynomial.Chebyshev.S_eq_U_comp_half_mul_X (R : Type u_1) [CommRing R] [Invertible 2] (n : ) :
          Polynomial.Chebyshev.S R n = (Polynomial.Chebyshev.U R n).comp (Polynomial.C 2 * Polynomial.X)
          @[simp]
          theorem Polynomial.Chebyshev.map_T {R : Type u_1} {R' : Type u_2} [CommRing R] [CommRing R'] (f : R →+* R') (n : ) :
          @[simp]
          theorem Polynomial.Chebyshev.map_U {R : Type u_1} {R' : Type u_2} [CommRing R] [CommRing R'] (f : R →+* R') (n : ) :
          @[simp]
          theorem Polynomial.Chebyshev.map_C {R : Type u_1} {R' : Type u_2} [CommRing R] [CommRing R'] (f : R →+* R') (n : ) :
          @[simp]
          theorem Polynomial.Chebyshev.map_S {R : Type u_1} {R' : Type u_2} [CommRing R] [CommRing R'] (f : R →+* R') (n : ) :
          @[simp]
          @[simp]
          @[simp]
          @[simp]
          @[simp]
          @[simp]
          @[simp]
          @[simp]
          theorem Polynomial.Chebyshev.T_derivative_eq_U {R : Type u_1} [CommRing R] (n : ) :
          Polynomial.derivative (Polynomial.Chebyshev.T R n) = n * Polynomial.Chebyshev.U R (n - 1)
          theorem Polynomial.Chebyshev.one_sub_X_sq_mul_derivative_T_eq_poly_in_T {R : Type u_1} [CommRing R] (n : ) :
          (1 - Polynomial.X ^ 2) * Polynomial.derivative (Polynomial.Chebyshev.T R (n + 1)) = (n + 1) * (Polynomial.Chebyshev.T R n - Polynomial.X * Polynomial.Chebyshev.T R (n + 1))
          theorem Polynomial.Chebyshev.add_one_mul_T_eq_poly_in_U {R : Type u_1} [CommRing R] (n : ) :
          (n + 1) * Polynomial.Chebyshev.T R (n + 1) = Polynomial.X * Polynomial.Chebyshev.U R n - (1 - Polynomial.X ^ 2) * Polynomial.derivative (Polynomial.Chebyshev.U R n)

          Twice the product of two Chebyshev T polynomials is the sum of two other Chebyshev T polynomials.

          @[deprecated Polynomial.Chebyshev.T_mul_T]

          Alias of Polynomial.Chebyshev.T_mul_T.


          Twice the product of two Chebyshev T polynomials is the sum of two other Chebyshev T polynomials.

          The product of two Chebyshev C polynomials is the sum of two other Chebyshev C polynomials.

          The (m * n)-th Chebyshev T polynomial is the composition of the m-th and n-th.

          The (m * n)-th Chebyshev C polynomial is the composition of the m-th and n-th.