{
  "aliases": null,
  "backlinks": [
    {
      "field": "uses",
      "target": "99SCT623E8"
    }
  ],
  "body": "\n## Statement\n\nLet $(t_j)$ be a nondecreasing sequence of real knots.\nLet $i$ be an index and $k \\ge 1$ an order.\nThe normalized [[B-spline|62AFX32JGT]] is\n$$B_{i,k}(x) = (t_{i+k} - t_i)\\, [t_i, \\dots, t_{i+k}]\\, (\\cdot - x)_+^{k-1}.$$\nHere $[t_i, \\dots, t_{i+k}]$ is the [[divided difference|N5ZHV4HWDC]] in the first variable, $(u)_+^{k-1} = u^{k-1}$ for $u \u003e 0$ and $0$ otherwise, also for $k = 1$.\nSet $B_{i,k} = 0$ when $t_i = t_{i+k}$.\nThen\n$$B_{i,1}(x) = \\begin{cases} 1 \u0026 \\text{if } t_i \\le x \u003c t_{i+1}, \\\\ 0 \u0026 \\text{otherwise,} \\end{cases}$$\nand for $k \\ge 2$ and all real $x$,\n$$B_{i,k}(x) = \\frac{x - t_i}{t_{i+k-1} - t_i} B_{i,k-1}(x) + \\frac{t_{i+k} - x}{t_{i+k} - t_{i+1}} B_{i+1,k-1}(x),$$\nwhere a term whose denominator is $0$ is read as $0$.\n\n## Remarks\n\nThe proof applies the Leibniz rule for divided differences to the product $(t - x)_+^{k-1} = (t - x) \\cdot (t - x)_+^{k-2}$ and uses the recursive definition of divided differences.\nMany texts take the recursion itself as the definition of B-splines, and then the divided difference formula becomes a theorem.\nExample: with knots $0, 1, 2$, the recursion gives $B_{0,2}(x) = x$ on $[0, 1)$, $2 - x$ on $[1, 2)$ and $0$ elsewhere, the hat function.\nThe recursion shows at once that $B_{i,k}$ is nonnegative, vanishes outside $[t_i, t_{i+k})$, and is a piecewise polynomial of degree at most $k - 1$.\nIt is numerically stable, since for $x$ in the support both coefficients lie in $[0, 1]$.\n\n## Explanations\n\n### L1 human\n\nB-splines of higher degree are built from those of lower degree.\nEach one is a blend of two neighbours of one lower degree, with weights that grow or shrink linearly across the support.\nStarting from step functions that are $1$ on one knot interval, one gets hat functions, then smooth quadratic bumps, then cubic bumps.\n\n### L2 human\n\nThe recursion, found independently by Cox and by de Boor in 1972, is the standard way to evaluate B-splines and their derivatives.\nApplying it to a whole spline gives [[de Boor's algorithm|5JHFB384BF]], which evaluates $\\sum_j c_j B_{j,k}(x)$ by repeated convex combinations of the coefficients.\nFrom it one also derives the derivative formula for B-splines and the partition of unity $\\sum_j B_{j,k}(x) = 1$ on the basic interval.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "62AFX32JGT"
    ],
    "kind": "statement",
    "msc": [
      "41A15",
      "65D07"
    ],
    "name": "Cox–de Boor recursion",
    "role": "theorem",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/B-spline"
      }
    ],
    "tag": "WVD069C7QF",
    "uses": [
      "62AFX32JGT",
      "N5ZHV4HWDC"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/WVD069C7QF/",
  "links": [
    {
      "field": "about",
      "target": "62AFX32JGT"
    },
    {
      "field": "uses",
      "target": "62AFX32JGT"
    },
    {
      "field": "uses",
      "target": "N5ZHV4HWDC"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/WVD069C7QF.md",
  "msc": [
    "41A15",
    "65D07"
  ],
  "name": "Cox–de Boor recursion",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/WVD/WVD069C7QF.md",
  "status": null,
  "tag": "WVD069C7QF",
  "uri": "m2://WVD069C7QF",
  "url": "https://tamnd.github.io/math2/wiki/cox-de-boor-recursion/",
  "writing": {
    "tag": "WVD069C7QF",
    "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
      }
    ]
  }
}
