The derivative map on polynomials #
Main definitions #
Polynomial.derivative: The formal derivative of polynomials, expressed as a linear map.Polynomial.derivativeFinsupp: Iterated derivatives as a finite support function.
derivative p is the formal derivative of the polynomial p
Equations
- Polynomial.derivative = { toFun := fun (p : Polynomial R) => p.sum fun (n : ℕ) (a : R) => Polynomial.C (a * ↑n) * Polynomial.X ^ (n - 1), map_add' := ⋯, map_smul' := ⋯ }
Instances For
@[simp]
theorem Polynomial.derivative_of_natDegree_zero {R : Type u} [Semiring R] {p : Polynomial R} (hp : p.natDegree = 0) :
@[simp]
theorem Polynomial.derivative_sum {R : Type u} {ι : Type y} [Semiring R] {s : Finset ι} {f : ι → Polynomial R} :
theorem Polynomial.iterate_derivative_sum {R : Type u} {ι : Type y} [Semiring R] (k : ℕ) (s : Finset ι) (f : ι → Polynomial R) :
theorem Polynomial.derivative_smul {R : Type u} [Semiring R] {S : Type u_1} [SMulZeroClass S R] [IsScalarTower S R R] (s : S) (p : Polynomial R) :
@[simp]
theorem Polynomial.iterate_derivative_smul {R : Type u} [Semiring R] {S : Type u_1} [SMulZeroClass S R] [IsScalarTower S R R] (s : S) (p : Polynomial R) (k : ℕ) :
@[simp]
theorem Polynomial.iterate_derivative_C_mul {R : Type u} [Semiring R] (a : R) (p : Polynomial R) (k : ℕ) :
theorem Polynomial.of_mem_support_derivative {R : Type u} [Semiring R] {p : Polynomial R} {n : ℕ} (h : n ∈ (derivative p).support) :
theorem Polynomial.natDegree_derivative_lt {R : Type u} [Semiring R] {p : Polynomial R} (hp : p.natDegree ≠ 0) :
theorem Polynomial.natDegree_iterate_derivative {R : Type u} [Semiring R] (p : Polynomial R) (k : ℕ) :
@[simp]
@[simp]
theorem Polynomial.iterate_derivative_eq_zero {R : Type u} [Semiring R] {p : Polynomial R} {x : ℕ} (hx : p.natDegree < x) :
@[simp]
@[simp]
@[simp]
theorem Polynomial.derivative_map {R : Type u} {S : Type v} [Semiring R] [Semiring S] (p : Polynomial R) (f : R →+* S) :
@[simp]
theorem Polynomial.iterate_derivative_map {R : Type u} {S : Type v} [Semiring R] [Semiring S] (p : Polynomial R) (f : R →+* S) (k : ℕ) :
@[simp]
theorem Polynomial.iterate_derivative_natCast_mul {R : Type u} [Semiring R] {n k : ℕ} {f : Polynomial R} :
theorem Polynomial.coeff_iterate_derivative {R : Type u} [Semiring R] {k : ℕ} (p : Polynomial R) (m : ℕ) :
theorem Polynomial.iterate_derivative_mul {R : Type u} [Semiring R] {n : ℕ} (p q : Polynomial R) :
(⇑derivative)^[n] (p * q) = ∑ k ∈ Finset.range n.succ, n.choose k • ((⇑derivative)^[n - k] p * (⇑derivative)^[k] q)
Iterated derivatives as a finite support function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem Polynomial.derivativeFinsupp_apply_apply {R : Type u} [Semiring R] (p : Polynomial R) (x✝ : ℕ) :
@[simp]
theorem Polynomial.support_derivativeFinsupp_subset_range {R : Type u} [Semiring R] {p : Polynomial R} {n : ℕ} (h : p.natDegree < n) :
(derivativeFinsupp p).support ⊆ Finset.range n
@[simp]
@[simp]
@[simp]
theorem Polynomial.derivativeFinsupp_map {R : Type u} {S : Type v} [Semiring R] [Semiring S] (p : Polynomial R) (f : R →+* S) :
derivativeFinsupp (map f p) = Finsupp.mapRange (fun (x : Polynomial R) => map f x) ⋯ (derivativeFinsupp p)
theorem Polynomial.mem_support_derivative {R : Type u} {n : ℕ} [Semiring R] {p : Polynomial R} [HasUniqueDiv R] :
@[simp]
theorem Polynomial.degree_derivative {R : Type u} [Semiring R] {p : Polynomial R} [HasUniqueDiv R] (hp : p.natDegree ≠ 0) :
@[simp]
theorem Polynomial.natDegree_derivative {R : Type u} [Semiring R] [HasUniqueDiv R] (p : Polynomial R) :
@[simp]
theorem Polynomial.derivative_eq_zero {R : Type u} [Semiring R] {p : Polynomial R} [HasUniqueDiv R] :
theorem Polynomial.derivative_ne_zero {R : Type u} [Semiring R] {p : Polynomial R} [HasUniqueDiv R] :
@[simp]
theorem Polynomial.leadingCoeff_derivative {R : Type u} [Semiring R] [HasUniqueDiv R] (p : Polynomial R) :
@[deprecated Polynomial.derivative_eq_zero (since := "2026-06-03")]
theorem Polynomial.natDegree_eq_zero_of_derivative_eq_zero {R : Type u} [Semiring R] {p : Polynomial R} [HasUniqueDiv R] :
derivative p = 0 → p.natDegree = 0
Alias of the forward direction of Polynomial.derivative_eq_zero.
theorem Polynomial.eq_C_of_derivative_eq_zero {R : Type u} [Semiring R] {p : Polynomial R} [HasUniqueDiv R] (h : derivative p = 0) :
@[deprecated Polynomial.degree_derivative (since := "2026-06-03")]
theorem Polynomial.degree_derivative_eq {R : Type u} [Semiring R] [HasUniqueDiv R] (p : Polynomial R) (hp : 0 < p.natDegree) :
theorem Polynomial.pow_sub_one_dvd_derivative_of_pow_dvd {R : Type u} [CommSemiring R] {p q : Polynomial R} {n : ℕ} (dvd : q ^ n ∣ p) :
theorem Polynomial.pow_sub_dvd_iterate_derivative_of_pow_dvd {R : Type u} [CommSemiring R] {p q : Polynomial R} {n : ℕ} (m : ℕ) (dvd : q ^ n ∣ p) :
theorem Polynomial.pow_sub_dvd_iterate_derivative_pow {R : Type u} [CommSemiring R] (p : Polynomial R) (n m : ℕ) :
theorem Polynomial.dvd_iterate_derivative_pow {R : Type u} [CommSemiring R] (f : Polynomial R) (n : ℕ) {m : ℕ} (c : R) (hm : m ≠ 0) :
theorem Polynomial.iterate_derivative_X_pow_eq_natCast_mul {R : Type u} [CommSemiring R] (n k : ℕ) :
theorem Polynomial.iterate_derivative_mul_X_pow {R : Type u} [CommSemiring R] (n m : ℕ) (p : Polynomial R) :
theorem Polynomial.iterate_derivative_mul_X {R : Type u} [CommSemiring R] {n : ℕ} (p : Polynomial R) :
theorem Polynomial.iterate_derivative_derivative_mul_X {R : Type u} [CommSemiring R] {n : ℕ} (p : Polynomial R) :
theorem Polynomial.iterate_derivative_derivative_mul_X_sq {R : Type u} [CommSemiring R] {n : ℕ} (p : Polynomial R) :
Chain rule for formal derivative of polynomials.
theorem Polynomial.derivative_prod {R : Type u} {ι : Type y} [CommSemiring R] [DecidableEq ι] {s : Multiset ι} {f : ι → Polynomial R} :
derivative (Multiset.map f s).prod = (Multiset.map (fun (i : ι) => (Multiset.map f (s.erase i)).prod * derivative (f i)) s).sum
theorem Polynomial.derivative_prod_finset {R : Type u} {ι : Type y} [CommSemiring R] [DecidableEq ι] {s : Finset ι} {f : ι → Polynomial R} :
@[simp]
@[simp]
@[simp]
theorem Polynomial.iterate_derivative_intCast_mul {R : Type u} [Ring R] {n : ℤ} {k : ℕ} {f : Polynomial R} :
theorem Polynomial.eval_multiset_prod_X_sub_C_derivative {R : Type u} [CommRing R] [DecidableEq R] {S : Multiset R} {r : R} (hr : r ∈ S) :
eval r (derivative (Multiset.map (fun (a : R) => X - C a) S).prod) = (Multiset.map (fun (a : R) => r - a) (S.erase r)).prod
theorem Polynomial.iterate_derivative_eq_zero_of_degree_lt {R : Type u} [CommRing R] {k : ℕ} {P : Polynomial R} (h : P.degree < ↑k) :
@[simp]
theorem Polynomial.dvd_derivative_iff {R : Type u} [Semiring R] [NoZeroDivisors R] {P : Polynomial R} :
theorem Polynomial.derivative_pow_eq_zero {R : Type u} [CommSemiring R] [NoZeroDivisors R] {n : ℕ} (chn : ↑n ≠ 0) {a : Polynomial R} :