{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $f \\colon \\R^d \\to \\R^d$ be continuously differentiable, and consider the autonomous [[initial value problem|0FXDW992DS]] $y' = f(y)$, $y(t_0) = y_0$.\nLet $J = f'(y_n)$ be the [[Jacobian matrix|047NDTEPCV]] of $f$ at the current value $y_n$.\nAn $s$-stage Rosenbrock method with real coefficients $\\alpha_{ij}$, $\\gamma_{ij}$, $b_i$ and $\\gamma_{ii} = \\gamma \u003e 0$ computes, for $i = 1, \\ldots, s$,\n$$(I - h \\gamma J)\\, k_i = h f\\Big(y_n + \\sum_{j\u003ci} \\alpha_{ij} k_j\\Big) + h J \\sum_{j\u003ci} \\gamma_{ij} k_j,$$\nand sets $y_{n+1} = y_n + \\sum_{i=1}^s b_i k_i$.\n\n1. Each step requires only the solution of $s$ linear systems, all with the same matrix $I - h\\gamma J$, and no nonlinear equation.\n2. Applied to the test equation $y' = \\lambda y$ with $\\lambda \\in \\C$, the method gives $y_{n+1} = R(h\\lambda)\\, y_n$, where $R$ is a rational function whose denominator is $(1 - \\gamma z)^s$.\n3. For $s = 1$, $\\gamma = 1$ and $b_1 = 1$ (the linearly implicit Euler method), $R(z) = 1/(1 - z)$; the method has order $1$, and it is A-stable and L-stable.\n\n## Remarks\n\nClause 1 holds because the right-hand side of the $i$-th equation involves only $k_1, \\ldots, k_{i-1}$, so the stages are computed one after the other.\nFor clause 2, with $f(y) = \\lambda y$ and $J = \\lambda$, each $k_i$ is $y_n$ times a rational function of $z = h\\lambda$ with denominator $(1 - \\gamma z)^i$.\nFor clause 3, $(1 - h\\lambda) k_1 = h\\lambda y_n$ gives $y_{n+1} = y_n / (1 - h\\lambda)$, the same as the [[backward Euler method|M7XKVNATFA]]: $\\abs{R(z)} \\le 1$ when $\\operatorname{Re} z \\le 0$, and $R(z) \\to 0$ as $\\abs{z} \\to \\infty$.\nThe order conditions of Rosenbrock methods use the exact Jacobian; methods that allow an approximate $J$ are called W-methods.\n\n## Explanations\n\n### L1 human\n\n[[Stiff equations|RR5FCG92PN]] need implicit methods, but implicit methods need the solution of a nonlinear equation at every step.\nA Rosenbrock method replaces this nonlinear equation by a few linear ones, built from the derivative of $f$.\nIn effect, it does one Newton step per stage and builds the error control into the coefficients.\nThe simplest one has the same behaviour as backward Euler on linear problems.\n\n### L2 human\n\nRosenbrock methods are linearly implicit [[Runge–Kutta methods|7DBPJKYC6C]]: the coefficients are chosen so that the order conditions hold when $J$ is the exact Jacobian.\nOne LU factorisation of $I - h\\gamma J$ per step serves all stages, which is why all diagonal coefficients are equal.\nThey are popular for moderately stiff problems of medium size, for example in chemical kinetics, and embedded pairs give error estimates for step size control.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "RR5FCG92PN"
    ],
    "kind": "statement",
    "msc": [
      "65L04",
      "65L06"
    ],
    "name": "Rosenbrock methods",
    "role": "proposition",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Rosenbrock_methods"
      }
    ],
    "tag": "E2ZFQ76N7F",
    "uses": [
      "0FXDW992DS",
      "047NDTEPCV",
      "7DBPJKYC6C",
      "RR5FCG92PN"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/E2ZFQ76N7F/",
  "links": [
    {
      "field": "about",
      "target": "RR5FCG92PN"
    },
    {
      "field": "uses",
      "target": "0FXDW992DS"
    },
    {
      "field": "uses",
      "target": "047NDTEPCV"
    },
    {
      "field": "uses",
      "target": "7DBPJKYC6C"
    },
    {
      "field": "uses",
      "target": "RR5FCG92PN"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/E2ZFQ76N7F.md",
  "msc": [
    "65L04",
    "65L06"
  ],
  "name": "Rosenbrock methods",
  "prov": null,
  "role": "proposition",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/E2Z/E2ZFQ76N7F.md",
  "status": null,
  "tag": "E2ZFQ76N7F",
  "uri": "m2://E2ZFQ76N7F",
  "url": "https://tamnd.github.io/math2/wiki/rosenbrock-methods/",
  "writing": {
    "tag": "E2ZFQ76N7F",
    "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
      }
    ]
  }
}
