{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $A$ be an [[invertible|0EB9N0S33C]] real $n \\times n$ matrix, and consider the [[linear system|0GT4WWGWH2]] $A x = b$.\nA *preconditioner* for $A$ is an invertible $n \\times n$ matrix $P$, used through the map $r \\mapsto P^{-1} r$.\nThe *left preconditioned* system is $P^{-1} A x = P^{-1} b$.\nThe *right preconditioned* system is $A P^{-1} y = b$ with $x = P^{-1} y$.\nIf $P = P_1 P_2$, the *split preconditioned* system is $P_1^{-1} A P_2^{-1} y = P_1^{-1} b$ with $x = P_2^{-1} y$.\n\n## Remarks\n\nAll three systems have the same solution $x$ as $A x = b$.\nThe definition is formal; a preconditioner is useful when two informal requirements hold.\nFirst, $P^{-1} r$ is cheap to compute for any $r$.\nSecond, $P^{-1} A$ is close to the identity, for example it has a small [[condition number|AB3S6MHJ8X]] or few clusters of [[eigenvalues|0BQAA2BK3Q]].\nThe two extremes are $P = I$, which is cheap but changes nothing, and $P = A$, which is ideal but as costly as the original problem.\nExample: the Jacobi preconditioner $P = \\operatorname{diag}(a_{11}, \\dots, a_{nn})$ is invertible when all diagonal entries are nonzero.\nFor $A$ with rows $(100, 1)$ and $(1, 1)$, the ratio of the extreme eigenvalues of $A$ is about $101$.\nThe matrix $P^{-1} A$ has rows $(1, 0.01)$ and $(1, 1)$ and eigenvalues $0.9$ and $1.1$, with ratio about $1.2$.\nNon-example: the matrix $P$ with rows $(1, 1)$ and $(1, 1)$ is singular, so it is not a preconditioner.\nFor a symmetric [[positive definite|0KX66CZMBB]] $A$ one takes $P$ symmetric positive definite, so that methods for symmetric systems still apply.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "KE98SW3SBD",
    "kind": "definition",
    "msc": [
      "65F08",
      "65F10"
    ],
    "name": "Preconditioner",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Preconditioner"
      }
    ],
    "tag": "XH1RXBEEWH",
    "uses": [
      "0GT4WWGWH2",
      "0EB9N0S33C",
      "AB3S6MHJ8X",
      "0KX66CZMBB",
      "0BQAA2BK3Q"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/XH1RXBEEWH/",
  "links": [
    {
      "field": "defines",
      "target": "KE98SW3SBD"
    },
    {
      "field": "uses",
      "target": "0GT4WWGWH2"
    },
    {
      "field": "uses",
      "target": "0EB9N0S33C"
    },
    {
      "field": "uses",
      "target": "AB3S6MHJ8X"
    },
    {
      "field": "uses",
      "target": "0KX66CZMBB"
    },
    {
      "field": "uses",
      "target": "0BQAA2BK3Q"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/XH1RXBEEWH.md",
  "msc": [
    "65F08",
    "65F10"
  ],
  "name": "Preconditioner",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/XH1/XH1RXBEEWH.md",
  "status": null,
  "tag": "XH1RXBEEWH",
  "uri": "m2://XH1RXBEEWH",
  "url": "https://tamnd.github.io/math2/wiki/preconditioner-definition/",
  "writing": {
    "tag": "XH1RXBEEWH",
    "kind": "definition",
    "level": "W0",
    "next": [
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
