Scaling the roots of a polynomial #
This file defines scaleRoots p s for a polynomial p in one variable and a ring element s to
be the polynomial with root r * s for each root r of p and proves some basic results about it.
scaleRoots p s is a polynomial with root r * s for each root r of p.
Equations
- p.scaleRoots s = ∑ i ∈ p.support, (Polynomial.monomial i) (p.coeff i * s ^ (p.natDegree - i))
Instances For
@[simp]
theorem Polynomial.coeff_scaleRoots {R : Type u_1} [Semiring R] (p : Polynomial R) (s : R) (i : ℕ) :
theorem Polynomial.coeff_scaleRoots_natDegree {R : Type u_1} [Semiring R] (p : Polynomial R) (s : R) :
@[simp]
theorem Polynomial.scaleRoots_ne_zero {R : Type u_1} [Semiring R] {p : Polynomial R} (hp : p ≠ 0) (s : R) :
theorem Polynomial.support_scaleRoots_le {R : Type u_1} [Semiring R] (p : Polynomial R) (s : R) :
(p.scaleRoots s).support ⊆ p.support
theorem Polynomial.support_scaleRoots_eq {R : Type u_1} [Semiring R] (p : Polynomial R) {s : R} (hs : s ∈ nonZeroDivisors R) :
@[simp]
@[simp]
@[simp]
theorem Polynomial.map_scaleRoots {R : Type u_1} {S : Type u_2} [Semiring R] [Semiring S] (p : Polynomial R) (x : R) (f : R →+* S) (h : f p.leadingCoeff ≠ 0) :
@[simp]
@[simp]
@[simp]
@[simp]
theorem Polynomial.scaleRoots_eval₂_mul {R : Type u_1} {S : Type u_2} [Semiring S] [CommSemiring R] {p : Polynomial S} (f : S →+* R) (r : R) (s : S) :
theorem Polynomial.scaleRoots_eval₂_eq_zero {R : Type u_1} {S : Type u_2} [Semiring S] [CommSemiring R] {p : Polynomial S} (f : S →+* R) {r : R} {s : S} (hr : eval₂ f r p = 0) :
theorem Polynomial.scaleRoots_eval_mul {R : Type u_1} [CommSemiring R] (p : Polynomial R) (r s : R) :
theorem Polynomial.scaleRoots_aeval_smul {R : Type u_1} [CommSemiring R] {S : Type u_5} [CommSemiring S] [Algebra S R] {p : Polynomial S} (r : R) (s : S) :
theorem Polynomial.scaleRoots_aeval_eq_zero {R : Type u_1} {A : Type u_3} [CommSemiring R] [Semiring A] [Algebra R A] {p : Polynomial R} {a : A} {r : R} (ha : (aeval a) p = 0) :
theorem Polynomial.scaleRoots_eval₂_eq_zero_of_eval₂_div_eq_zero {S : Type u_2} {K : Type u_4} [Semiring S] [Field K] {p : Polynomial S} {f : S →+* K} (hf : Function.Injective ⇑f) {r s : S} (hr : eval₂ f (f r / f s) p = 0) (hs : s ∈ nonZeroDivisors S) :
theorem Polynomial.scaleRoots_aeval_eq_zero_of_aeval_div_eq_zero {R : Type u_1} {K : Type u_4} [CommSemiring R] [Field K] [Algebra R K] (inj : Function.Injective ⇑(algebraMap R K)) {p : Polynomial R} {r s : R} (hr : (aeval ((algebraMap R K) r / (algebraMap R K) s)) p = 0) (hs : s ∈ nonZeroDivisors R) :
@[simp]
theorem Polynomial.mul_scaleRoots {R : Type u_1} [CommSemiring R] (p q : Polynomial R) (r : R) :
r ^ (p.natDegree + q.natDegree - (p * q).natDegree) • (p * q).scaleRoots r = p.scaleRoots r * q.scaleRoots r
Multiplication and scaleRoots commute up to a power of r. The factor disappears if we
assume that the product of the leading coeffs does not vanish. See Polynomial.mul_scaleRoots'.
theorem Polynomial.mul_scaleRoots' {R : Type u_1} [CommSemiring R] (p q : Polynomial R) (r : R) (h : p.leadingCoeff * q.leadingCoeff ≠ 0) :
theorem Polynomial.mul_scaleRoots_of_noZeroDivisors {R : Type u_1} [CommSemiring R] (p q : Polynomial R) (r : R) [NoZeroDivisors R] :
theorem Polynomial.pow_scaleRoots' {R : Type u_1} [CommSemiring R] (p : Polynomial R) (r : R) (n : ℕ) (hp : p.leadingCoeff ^ n ≠ 0) :
theorem Polynomial.pow_scaleRoots_of_isReduced {R : Type u_1} [CommSemiring R] [IsReduced R] (p : Polynomial R) (r : R) (n : ℕ) :
theorem Polynomial.add_scaleRoots_of_natDegree_eq {R : Type u_1} [CommSemiring R] (p q : Polynomial R) (r : R) (h : p.natDegree = q.natDegree) :
theorem Polynomial.scaleRoots_dvd' {R : Type u_1} [CommSemiring R] (p q : Polynomial R) {r : R} (hr : IsUnit r) (hpq : p ∣ q) :
theorem Polynomial.scaleRoots_dvd {R : Type u_1} [CommSemiring R] (p q : Polynomial R) {r : R} [NoZeroDivisors R] (hpq : p ∣ q) :
theorem Dvd.dvd.scaleRoots {R : Type u_1} [CommSemiring R] (p q : Polynomial R) {r : R} [NoZeroDivisors R] (hpq : p ∣ q) :
Alias of Polynomial.scaleRoots_dvd.
theorem Polynomial.scaleRoots_dvd_iff {R : Type u_1} [CommSemiring R] (p q : Polynomial R) {r : R} (hr : IsUnit r) :
theorem IsUnit.scaleRoots_dvd_iff {R : Type u_1} [CommSemiring R] (p q : Polynomial R) {r : R} (hr : IsUnit r) :
Alias of Polynomial.scaleRoots_dvd_iff.
theorem Polynomial.isCoprime_scaleRoots {R : Type u_1} [CommSemiring R] (p q : Polynomial R) (r : R) (hr : IsUnit r) (h : IsCoprime p q) :
IsCoprime (p.scaleRoots r) (q.scaleRoots r)
theorem IsCoprime.scaleRoots {R : Type u_1} [CommSemiring R] (p q : Polynomial R) (r : R) (hr : IsUnit r) (h : IsCoprime p q) :
IsCoprime (p.scaleRoots r) (q.scaleRoots r)
Alias of Polynomial.isCoprime_scaleRoots.
theorem Polynomial.Splits.scaleRoots {R : Type u_1} [CommSemiring R] {p : Polynomial R} (hp : p.Splits) (r : R) :
(p.scaleRoots r).Splits
theorem Polynomial.rootMultiplicity_scaleRoots {R : Type u_1} [CommRing R] (p : Polynomial R) {r a : R} (hr : IsLeftRegular r) :
theorem Polynomial.roots_scaleRoots {R : Type u_1} [CommRing R] [IsDomain R] (p : Polynomial R) {r : R} (hr : IsUnit r) :