{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $p$ be a [[monic polynomial|0BDX4MBKT4]] of degree $n \\ge 2$ with [[complex|09FTAET5Z4]] coefficients, whose roots $r_1, \\dots, r_n$ are pairwise distinct.\nThe *Durand–Kerner method*, also called the Weierstrass method, updates $n$ approximations $z_1^{(k)}, \\dots, z_n^{(k)}$ simultaneously by\n$$z_i^{(k+1)} = z_i^{(k)} - \\frac{p\\big(z_i^{(k)}\\big)}{\\prod_{j \\ne i} \\big(z_i^{(k)} - z_j^{(k)}\\big)}, \\qquad i = 1, \\dots, n.$$\nThen there is $\\delta \u003e 0$ such that, if $\\abs{z_i^{(0)} - r_i} \u003c \\delta$ for all $i$, the iterates are defined and $z_i^{(k)} \\to r_i$ for each $i$, with quadratic [[convergence|YWZQC5E54B]].\n\n## Remarks\n\nThe update is [[Newton's method|07EXVNF9VP]] applied to the system of $n$ equations in $n$ unknowns that says that $\\prod_i (x - z_i) = p(x)$ as polynomials.\nEquivalently, it is Newton's method for the coefficients of the factorization, and the Jacobian of this system is invertible exactly when the $z_i$ are distinct.\nThis explains the local quadratic convergence at simple roots.\nThe [[fundamental theorem of algebra|0JP0W07Y9A]] guarantees that $p$ has $n$ complex roots counted with multiplicity.\nA usual start takes $z_i^{(0)} = w^{i-1}$ for a complex number $w$ that is neither real nor a root of unity, for example $w = 0.4 + 0.9 \\sqrt{-1}$.\nWith such starts the method usually converges in practice, but the theorem above is only local.\nAt multiple roots the convergence is only linear.\n\n## Explanations\n\n### L1 human\n\nInstead of hunting one root at a time, the Durand–Kerner method moves $n$ guesses at once, one for each root.\nEach guess is pushed by a Newton-like step, in which the other guesses play the role of the other roots.\nThe guesses spread out and settle on the $n$ roots together.\n\n### L2 human\n\nThe method avoids deflation, which can lose accuracy when roots are removed one by one.\nEach step costs $O(n^2)$ operations.\nThe Aberth method is a refinement with cubic local convergence.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "019MA1VTR2"
    ],
    "kind": "statement",
    "msc": [
      "65H04"
    ],
    "name": "Durand–Kerner method",
    "role": "theorem",
    "same_as": {
      "wikidata": "Q1299016",
      "wikipedia": "Durand–Kerner method"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Durand–Kerner_method"
      }
    ],
    "tag": "3X6C5SC7AF",
    "uses": [
      "07EXVNF9VP",
      "019MA1VTR2",
      "0BDX4MBKT4",
      "0JP0W07Y9A",
      "YWZQC5E54B",
      "09FTAET5Z4"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/3X6C5SC7AF/",
  "links": [
    {
      "field": "about",
      "target": "019MA1VTR2"
    },
    {
      "field": "uses",
      "target": "07EXVNF9VP"
    },
    {
      "field": "uses",
      "target": "019MA1VTR2"
    },
    {
      "field": "uses",
      "target": "0BDX4MBKT4"
    },
    {
      "field": "uses",
      "target": "0JP0W07Y9A"
    },
    {
      "field": "uses",
      "target": "YWZQC5E54B"
    },
    {
      "field": "uses",
      "target": "09FTAET5Z4"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/3X6C5SC7AF.md",
  "msc": [
    "65H04"
  ],
  "name": "Durand–Kerner method",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/3X6/3X6C5SC7AF.md",
  "status": null,
  "tag": "3X6C5SC7AF",
  "uri": "m2://3X6C5SC7AF",
  "url": "https://tamnd.github.io/math2/wiki/durand-kerner-method/",
  "writing": {
    "tag": "3X6C5SC7AF",
    "kind": "statement",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      },
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
