{
  "aliases": null,
  "backlinks": [
    {
      "field": "uses",
      "target": "7THS519D4A"
    }
  ],
  "body": "\n## Statement\n\nLet $p \\in \\R[x]$ be a nonconstant polynomial without multiple roots.\nDefine the *Sturm sequence* by $p_0 = p$, $p_1 = p'$ (the [[derivative|0F1WR9C83K]]), and $p_{i+1} = -\\operatorname{rem}(p_{i-1}, p_i)$.\nHere $\\operatorname{rem}$ is the remainder of [[polynomial division|D6D0SR1FK3]], and the sequence stops at the last nonzero term $p_m$.\nFor $\\xi \\in \\R$, let $V(\\xi)$ be the number of sign changes in the sequence $p_0(\\xi), p_1(\\xi), \\dots, p_m(\\xi)$, with zeros ignored.\nLet $a \u003c b$ be real numbers that are not [[roots|00EHX6FWC0]] of $p$.\nThen the number of distinct real roots of $p$ in the interval $(a, b)$ is $V(a) - V(b)$.\n\n## Remarks\n\nThe sequence is the Euclidean algorithm for $p$ and $p'$ with sign changes, so $p_m$ is a [[greatest common divisor|Q75YRG25JK]] of $p$ and $p'$, a nonzero constant here.\nAs $\\xi$ increases, $V(\\xi)$ can only change when $\\xi$ passes a root of some $p_i$.\nAt a root of $p_i$ with $0 \u003c i \u003c m$, the relation $p_{i-1} = q_i p_i - p_{i+1}$ forces $p_{i-1}$ and $p_{i+1}$ to have opposite signs, so $V$ does not change.\nAt a root of $p$, the signs of $p$ and $p'$ go from opposite to equal, so $V$ drops by exactly one.\nExample: for $p = x^2 - 2$, the sequence is $x^2 - 2$, $2x$, $2$; then $V(0) = 1$ and $V(2) = 0$, so there is one root in $(0, 2)$, namely $\\sqrt 2$.\nThe theorem also holds without the hypothesis on multiple roots, still counting distinct roots, but the proof then divides the sequence by $p_m$.\n\n## Explanations\n\n### L1 human\n\nSturm's theorem counts the real roots of a polynomial in an interval exactly, with no guessing.\nOne builds a short chain of polynomials by repeated division, evaluates the chain at the two ends of the interval, and counts sign changes.\nThe difference of the two counts is the number of roots in between.\n\n### L2 human\n\nUnlike [[Descartes' rule of signs|T6DQQ36JZ5]], which only gives an upper bound, Sturm's theorem gives the exact number of distinct roots.\nBy bisection, it isolates every real root in an interval as small as one likes, which is the basis of exact real root isolation in computer algebra.\nTaking $a$ below and $b$ above all roots, it counts all real roots of $p$, using the signs of leading coefficients only.\nThe same argument works over any real closed field, where the [[intermediate value theorem|00KAFBR32E]] holds for polynomials.\n",
  "commit": "547b6eddb8f2feb8d579f2d633d22a27b7e132fc",
  "front": {
    "about": [
      "019MA1VTR2"
    ],
    "kind": "statement",
    "msc": [
      "12D10",
      "26C10"
    ],
    "name": "Sturm's theorem",
    "role": "theorem",
    "same_as": {
      "wikidata": "Q1632301",
      "wikipedia": "Sturm's theorem"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Sturm%27s_theorem"
      }
    ],
    "tag": "R44CV0KD9T",
    "uses": [
      "0Q9EZS90GY",
      "00EHX6FWC0",
      "0F1WR9C83K",
      "D6D0SR1FK3",
      "Q75YRG25JK",
      "00KAFBR32E"
    ]
  },
  "kind": "statement",
  "link": "https://math2.tamnd.com/node/R44CV0KD9T/",
  "links": [
    {
      "field": "about",
      "target": "019MA1VTR2"
    },
    {
      "field": "uses",
      "target": "0Q9EZS90GY"
    },
    {
      "field": "uses",
      "target": "00EHX6FWC0"
    },
    {
      "field": "uses",
      "target": "0F1WR9C83K"
    },
    {
      "field": "uses",
      "target": "D6D0SR1FK3"
    },
    {
      "field": "uses",
      "target": "Q75YRG25JK"
    },
    {
      "field": "uses",
      "target": "00KAFBR32E"
    }
  ],
  "markdown": "https://math2.tamnd.com/node/R44CV0KD9T.md",
  "msc": [
    "12D10",
    "26C10"
  ],
  "name": "Sturm's theorem",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/R44/R44CV0KD9T.md",
  "status": null,
  "tag": "R44CV0KD9T",
  "uri": "m2://R44CV0KD9T",
  "url": "https://math2.tamnd.com/wiki/sturms-theorem/",
  "writing": {
    "tag": "R44CV0KD9T",
    "kind": "statement",
    "level": "W0",
    "next": [
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
