{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $A$ be a real symmetric $n \\times n$ matrix with positive diagonal entries, and let $b \\in \\R^n$.\nWrite $A = D + L + L^T$, with $D$ diagonal and $L$ strictly lower triangular, and let $0 \u003c \\omega \u003c 2$.\nOne step of *symmetric successive over-relaxation* (SSOR) is a forward [[SOR|6KQJR85ZC6]] sweep in the order $1, \\dots, n$.\nIt is followed by a backward SOR sweep in the order $n, \\dots, 1$.\nIn matrix form it is $x^{(k+1)} = x^{(k)} + M_\\omega^{-1} \\left( b - A x^{(k)} \\right)$, where\n$$M_\\omega = \\frac{1}{\\omega (2 - \\omega)} \\, (D + \\omega L) \\, D^{-1} \\, (D + \\omega L^T).$$\nThen $M_\\omega$ is symmetric and positive definite.\nIf moreover $A$ is [[positive definite|0KX66CZMBB]], then the iteration matrix $I - M_\\omega^{-1} A$ has [[spectral radius|9V7YQA85PC]] less than $1$.\nSo for every $b$ and every $x^{(0)}$ the iterates converge to $A^{-1} b$.\n\n## Remarks\n\nThe matrix $M_\\omega$ is symmetric by its form, and it is positive definite because $D$ is and $D + \\omega L$ is invertible.\nWhen $A$ is positive definite, each of the two SOR sweeps strictly decreases the energy norm $\\norm{e}_A$ of the error, so their product contracts too.\nExample: for $n = 1$ and $A = (a)$ with $a \u003e 0$, one has $M_\\omega = a / (\\omega (2 - \\omega))$.\nThe iteration matrix is $1 - \\omega (2 - \\omega) = (1 - \\omega)^2$, which lies in $[0, 1)$ exactly when $0 \u003c \\omega \u003c 2$.\nAs a stand-alone method, SSOR is usually no faster than SOR.\nIts value is that $M_\\omega$ is a symmetric positive definite [[preconditioner|KE98SW3SBD]], so it can be combined with the conjugate gradient method, unlike plain SOR.\n\n## Explanations\n\n### L1 human\n\nSOR sweeps through the unknowns in one direction, which treats the system unevenly.\nSSOR sweeps forward and then backward, so the combined step is symmetric.\nThis symmetry is what makes it useful together with methods that need symmetric operators.\n\n### L2 human\n\nThe formula for $M_\\omega$ shows that applying SSOR costs one forward and one backward triangular solve with the sparsity of $A$.\nFor $\\omega = 1$ the method is symmetric Gauss–Seidel, with $M_1 = (D + L) D^{-1} (D + L^T)$.\nSSOR belongs to the family of stationary [[iterative methods|2RPE77ACER]] given by a splitting $A = M_\\omega - (M_\\omega - A)$.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "6KQJR85ZC6",
      "KE98SW3SBD"
    ],
    "kind": "statement",
    "msc": [
      "65F10",
      "65F08"
    ],
    "name": "Symmetric successive over-relaxation",
    "role": "theorem",
    "same_as": {
      "wikidata": "Q16937163",
      "wikipedia": "Symmetric successive over-relaxation"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Symmetric_successive_over-relaxation"
      }
    ],
    "tag": "Y1G3NNJSQH",
    "uses": [
      "0GT4WWGWH2",
      "0KX66CZMBB",
      "9V7YQA85PC",
      "6KQJR85ZC6",
      "2RPE77ACER",
      "KE98SW3SBD"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/Y1G3NNJSQH/",
  "links": [
    {
      "field": "about",
      "target": "6KQJR85ZC6"
    },
    {
      "field": "about",
      "target": "KE98SW3SBD"
    },
    {
      "field": "uses",
      "target": "0GT4WWGWH2"
    },
    {
      "field": "uses",
      "target": "0KX66CZMBB"
    },
    {
      "field": "uses",
      "target": "9V7YQA85PC"
    },
    {
      "field": "uses",
      "target": "6KQJR85ZC6"
    },
    {
      "field": "uses",
      "target": "2RPE77ACER"
    },
    {
      "field": "uses",
      "target": "KE98SW3SBD"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/Y1G3NNJSQH.md",
  "msc": [
    "65F10",
    "65F08"
  ],
  "name": "Symmetric successive over-relaxation",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/Y1G/Y1G3NNJSQH.md",
  "status": null,
  "tag": "Y1G3NNJSQH",
  "uri": "m2://Y1G3NNJSQH",
  "url": "https://tamnd.github.io/math2/wiki/symmetric-successive-over-relaxation/",
  "writing": {
    "tag": "Y1G3NNJSQH",
    "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
      }
    ]
  }
}
