Sign variations are constant on an interval containing no zero of any chain entry.
Crossing a zero of an interior entry preserves the variation count.
Crossing a root of the first entry decreases the variation count by one. The count at the root equals the count just to its right.
The union of the real root sets of the chain entries.
Equations
- Sturm.chainZeros cs = cs.toFinset.biUnion fun (q : Polynomial ℝ) => q.roots.toFinset
Instances For
Membership in chainZeros: a point lies in it exactly when some chain
element vanishes there (using that every chain element is nonzero).
The variation count agrees with its value immediately to the right, including at zeros of chain entries.
Sturm's theorem on a half-open interval.
The decrease in sign variations from a to b counts the roots in (a, b].
The hypothesis on p.roots ensures each real root has multiplicity one.
Sign at +∞. Past all its real roots, a nonzero real polynomial has the
sign of its leading coefficient.
Sign at −∞. Below all its real roots, a nonzero real polynomial has the
sign of leadingCoeff · (-1) ^ natDegree.
Sturm's theorem on the real line: the decrease in sign variations from
-∞ to +∞ counts all real roots.