{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $n \\ge 1$, let $x_1, \\dots, x_{n+1} \\in \\R$ be pairwise distinct, and let $f$ be a real [[function|0EPAT51DXQ]] defined at these points.\nThe *reciprocal differences* $\\rho_k$ of $f$ are defined by $\\rho_0(x_i) = f(x_i)$,\n$$\\rho_1(x_i, x_{i+1}) = \\frac{x_i - x_{i+1}}{f(x_i) - f(x_{i+1})},$$\nand, for $k \\ge 2$,\n$$\\rho_k(x_i, \\dots, x_{i+k}) = \\frac{x_i - x_{i+k}}{\\rho_{k-1}(x_i, \\dots, x_{i+k-1}) - \\rho_{k-1}(x_{i+1}, \\dots, x_{i+k})} + \\rho_{k-2}(x_{i+1}, \\dots, x_{i+k-1}).$$\nSet $a_0 = f(x_1)$, $a_1 = \\rho_1(x_1, x_2)$ and $a_k = \\rho_k(x_1, \\dots, x_{k+1}) - \\rho_{k-2}(x_1, \\dots, x_{k-1})$ for $2 \\le k \\le n$.\nAssume that no denominator above is zero and that the finite [[continued fraction|04P2RJ4WPS]]\n$$R(x) = a_0 + \\cfrac{x - x_1}{a_1 + \\cfrac{x - x_2}{a_2 + \\cfrac{x - x_3}{\\ddots + \\cfrac{x - x_n}{a_n}}}}$$\ncan be evaluated at each node without division by zero.\nThen $R$ is a [[rational function|0XDK9CGYKJ]] and $R(x_i) = f(x_i)$ for $i = 1, \\dots, n + 1$.\n\n## Remarks\n\nReciprocal differences play for rational interpolation the role that [[divided differences|N5ZHV4HWDC]] play for polynomial interpolation.\nThe proof is by induction on $n$: the tail of the continued fraction starting at $a_1$ interpolates the reciprocal data $(x - x_1)/(f(x) - f(x_1))$ at $x_2, \\dots, x_{n+1}$.\n\nExample: $n = 1$ gives $R(x) = f(x_1) + (x - x_1)\\dfrac{f(x_2) - f(x_1)}{x_2 - x_1}$, the line through the two data points.\n\nThe non-degeneracy hypothesis is needed.\nThe formula can break down even when a simple interpolant exists.\nFor instance, for equal values $f(x_1) = f(x_2)$, interpolated by a constant, the first reciprocal difference already divides by $0$.\n\n## Explanations\n\n### L1 human\n\nPolynomials are bad at imitating functions with poles or with horizontal asymptotes.\nThiele's formula fits a ratio of polynomials instead, written as a continued fraction.\nIts coefficients come from a table of reciprocal differences, built much like a table of divided differences.\n\n### L2 human\n\nThiele's formula is the rational analogue of the [[Newton polynomial|9W77FPTM9E]]: each new node adds one more level to the continued fraction and leaves the earlier levels unchanged.\nIts truncations give rational interpolants whose numerator and denominator degrees grow alternately.\nIt is closely related to [[Padé approximants|1F16G4V64X]], which match derivatives at one point instead of values at many points.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "0XDK9CGYKJ",
      "04P2RJ4WPS"
    ],
    "kind": "statement",
    "msc": [
      "41A05",
      "41A20",
      "65D05"
    ],
    "name": "Thiele's interpolation formula",
    "role": "proposition",
    "same_as": {
      "wikidata": "Q7783991",
      "wikipedia": "Thiele's interpolation formula"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Thiele%27s_interpolation_formula"
      }
    ],
    "tag": "DANS1S61SX",
    "uses": [
      "0XDK9CGYKJ",
      "04P2RJ4WPS",
      "0EPAT51DXQ"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/DANS1S61SX/",
  "links": [
    {
      "field": "about",
      "target": "0XDK9CGYKJ"
    },
    {
      "field": "about",
      "target": "04P2RJ4WPS"
    },
    {
      "field": "uses",
      "target": "0XDK9CGYKJ"
    },
    {
      "field": "uses",
      "target": "04P2RJ4WPS"
    },
    {
      "field": "uses",
      "target": "0EPAT51DXQ"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/DANS1S61SX.md",
  "msc": [
    "41A05",
    "41A20",
    "65D05"
  ],
  "name": "Thiele's interpolation formula",
  "prov": null,
  "role": "proposition",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/DAN/DANS1S61SX.md",
  "status": null,
  "tag": "DANS1S61SX",
  "uri": "m2://DANS1S61SX",
  "url": "https://tamnd.github.io/math2/wiki/thieles-interpolation-formula/",
  "writing": {
    "tag": "DANS1S61SX",
    "kind": "statement",
    "level": "W0",
    "next": [
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
