Cubics and discriminants #
This file defines cubic polynomials over a semiring and their discriminants over a splitting field.
Main definitions #
Cubic
: the structure representing a cubic polynomial.Cubic.disc
: the discriminant of a cubic polynomial.
Main statements #
Cubic.disc_ne_zero_iff_roots_nodup
: the cubic discriminant is not equal to zero if and only if the cubic has no duplicate roots.
References #
Tags #
cubic, discriminant, polynomial, root
Equations
- Cubic.instZero = { zero := { a := 0, b := 0, c := 0, d := 0 } }
Convert a cubic polynomial to a polynomial.
Equations
- P.toPoly = Polynomial.C P.a * Polynomial.X ^ 3 + Polynomial.C P.b * Polynomial.X ^ 2 + Polynomial.C P.c * Polynomial.X + Polynomial.C P.d
Instances For
theorem
Cubic.C_mul_prod_X_sub_C_eq
{S : Type u_2}
[CommRing S]
{w x y z : S}
:
Polynomial.C w * (Polynomial.X - Polynomial.C x) * (Polynomial.X - Polynomial.C y) * (Polynomial.X - Polynomial.C z) = { a := w, b := w * -(x + y + z), c := w * (x * y + x * z + y * z), d := w * -(x * y * z) }.toPoly
theorem
Cubic.prod_X_sub_C_eq
{S : Type u_2}
[CommRing S]
{x y z : S}
:
(Polynomial.X - Polynomial.C x) * (Polynomial.X - Polynomial.C y) * (Polynomial.X - Polynomial.C z) = { a := 1, b := -(x + y + z), c := x * y + x * z + y * z, d := -(x * y * z) }.toPoly
Coefficients #
theorem
Cubic.of_a_eq_zero'
{R : Type u_1}
{b c d : R}
[Semiring R]
:
{ a := 0, b := b, c := c, d := d }.toPoly = Polynomial.C b * Polynomial.X ^ 2 + Polynomial.C c * Polynomial.X + Polynomial.C d
@[simp]
@[simp]
@[simp]
Degrees #
Map across a homomorphism #
Roots over an extension #
Roots over a splitting field #
theorem
Cubic.eq_prod_three_roots
{F : Type u_3}
{K : Type u_4}
{P : Cubic F}
[Field F]
[Field K]
{φ : F →+* K}
{x y z : K}
(ha : P.a ≠ 0)
(h3 : (map φ P).roots = {x, y, z})
:
(map φ P).toPoly = Polynomial.C (φ P.a) * (Polynomial.X - Polynomial.C x) * (Polynomial.X - Polynomial.C y) * (Polynomial.X - Polynomial.C z)