{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nConsider the explicit seven-stage [[Butcher tableau|RH8BD7PW5F]] with two weight rows\n$$\\begin{array}{c|ccccccc}\n0 \\\\\n\\frac15 \u0026 \\frac15 \\\\\n\\frac{3}{10} \u0026 \\frac{3}{40} \u0026 \\frac{9}{40} \\\\\n\\frac45 \u0026 \\frac{44}{45} \u0026 -\\frac{56}{15} \u0026 \\frac{32}{9} \\\\\n\\frac89 \u0026 \\frac{19372}{6561} \u0026 -\\frac{25360}{2187} \u0026 \\frac{64448}{6561} \u0026 -\\frac{212}{729} \\\\\n1 \u0026 \\frac{9017}{3168} \u0026 -\\frac{355}{33} \u0026 \\frac{46732}{5247} \u0026 \\frac{49}{176} \u0026 -\\frac{5103}{18656} \\\\\n1 \u0026 \\frac{35}{384} \u0026 0 \u0026 \\frac{500}{1113} \u0026 \\frac{125}{192} \u0026 -\\frac{2187}{6784} \u0026 \\frac{11}{84} \\\\\n\\hline\nb^{T} \u0026 \\frac{35}{384} \u0026 0 \u0026 \\frac{500}{1113} \u0026 \\frac{125}{192} \u0026 -\\frac{2187}{6784} \u0026 \\frac{11}{84} \u0026 0 \\\\\n\\hat b^{T} \u0026 \\frac{5179}{57600} \u0026 0 \u0026 \\frac{7571}{16695} \u0026 \\frac{393}{640} \u0026 -\\frac{92097}{339200} \u0026 \\frac{187}{2100} \u0026 \\frac{1}{40}\n\\end{array}$$\nThen:\n\n1. The [[Runge–Kutta method|7DBPJKYC6C]] with weights $b$ has order $5$, and the one with weights $\\hat b$ has order $4$.\n2. The last row of the matrix equals $b^{T}$ and $c_7 = 1$.\n   So the seventh stage of a step equals $f(t_{n+1}, y_{n+1})$, which is the first stage of the next step.\n3. The difference $y_{n+1} - \\hat y_{n+1}$ of the two results equals the [[local truncation error|T220HF0562]] of the fourth-order step up to a term $O(h^6)$, for $f$ smooth enough.\n\n## Remarks\n\nClause 1 is checked against Butcher's order conditions on rooted trees; for example $\\sum b_i = \\sum \\hat b_i = 1$ and $\\sum b_i c_i^4 = \\frac15$, while $\\sum \\hat b_i c_i^4 \\ne \\frac15$.\nClause 2 is the \"first same as last\" property: an accepted step needs only six new evaluations of $f$.\nThe method propagates the fifth-order value $y_{n+1}$, a practice called local extrapolation, and uses the error estimate of clause 3 for [[adaptive step size|6MREWBZR7R]] control.\nJohn Dormand and Peter Prince published the pair in 1980, choosing the free coefficients to make the error constants of the fifth-order formula small.\n\n## Explanations\n\n### L1 human\n\nThe Dormand–Prince method is a Runge–Kutta method that computes two answers per step, one of order five and one of order four.\nTheir difference tells the solver how large the error is, so it can adjust the step size.\nIt reuses its last slope evaluation as the first of the next step, which saves work.\n\n### L2 human\n\nThis pair, often called DOPRI5 or RK45, is the default non-stiff solver in many software packages, for example the ode45 function of MATLAB.\nCompared with the [[Runge–Kutta–Fehlberg method|6D73FFD9DC]], it advances with the more accurate formula and has smaller error coefficients.\nIt also admits a dense output, a polynomial interpolant that gives accurate values between the grid points.\nFor stiff problems it needs very small steps, and implicit methods are preferred.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "7DBPJKYC6C"
    ],
    "kind": "statement",
    "msc": [
      "65L06",
      "65L05",
      "65L50"
    ],
    "name": "Dormand–Prince method",
    "role": "proposition",
    "same_as": {
      "wikidata": "Q5298067",
      "wikipedia": "Dormand–Prince method"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Dormand%E2%80%93Prince_method"
      }
    ],
    "tag": "CDMXAH4A7G",
    "uses": [
      "7DBPJKYC6C",
      "RH8BD7PW5F",
      "T220HF0562",
      "6MREWBZR7R"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/CDMXAH4A7G/",
  "links": [
    {
      "field": "about",
      "target": "7DBPJKYC6C"
    },
    {
      "field": "uses",
      "target": "7DBPJKYC6C"
    },
    {
      "field": "uses",
      "target": "RH8BD7PW5F"
    },
    {
      "field": "uses",
      "target": "T220HF0562"
    },
    {
      "field": "uses",
      "target": "6MREWBZR7R"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/CDMXAH4A7G.md",
  "msc": [
    "65L06",
    "65L05",
    "65L50"
  ],
  "name": "Dormand–Prince method",
  "prov": null,
  "role": "proposition",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/CDM/CDMXAH4A7G.md",
  "status": null,
  "tag": "CDMXAH4A7G",
  "uri": "m2://CDMXAH4A7G",
  "url": "https://tamnd.github.io/math2/wiki/dormand-prince-method/",
  "writing": {
    "tag": "CDMXAH4A7G",
    "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
      }
    ]
  }
}
