{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $n \\ge 1$ and let $\\mathbb{K}$ be $\\R$ or $\\C$.\nAn *eigenvalue algorithm* is an algorithm that takes as input a [[matrix|0VD9ZSWWJG]] $A \\in \\mathbb{K}^{n \\times n}$ (and, for iterative algorithms, a tolerance $\\varepsilon \u003e 0$) and returns:\n\n1. numbers $\\tilde\\lambda_1, \\dots, \\tilde\\lambda_k \\in \\C$, with $1 \\le k \\le n$, that approximate [[eigenvalues|0BQAA2BK3Q]] $\\lambda_1, \\dots, \\lambda_k$ of $A$, counted with algebraic multiplicity, to within the tolerance;\n2. optionally, vectors $\\tilde v_1, \\dots, \\tilde v_k$ that approximate corresponding [[eigenvectors|0N6960W0BV]] or bases of invariant subspaces.\n\nIt computes *all* eigenvalues when $k = n$, and *some* eigenvalues otherwise, for example those of largest modulus or those closest to a given shift.\n\n## Remarks\n\nExample: the [[QR algorithm|B6F8YWHYZ5]] reduces $A$ to Hessenberg form and applies shifted QR steps until the matrix is nearly upper triangular.\nIts diagonal then approximates all $n$ eigenvalues, so it is an eigenvalue algorithm with $k = n$.\nNon-example: an algorithm that only computes the coefficients of the [[characteristic polynomial|0VSSPAFM2C]] does not return eigenvalues, so clause 1 fails.\nFinding the roots is a further step, and it is badly conditioned in general.\nThe eigenvalues of a general matrix with $n \\ge 5$ are not expressible by radicals in its entries.\nSo every eigenvalue algorithm that works for all such matrices is iterative and stops at a tolerance.\nAccuracy is usually measured by backward error: the output should be the exact eigenvalues of a matrix $A + E$ with $\\norm{E}$ small compared with $\\norm{A}$.\n\n## Explanations\n\n### L1 human\n\nAn eigenvalue algorithm is any recipe that, given a square matrix, outputs its eigenvalues (and maybe eigenvectors) up to a chosen accuracy.\nSome recipes find all of them, others find only a few that one asks for.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "HCJ2ETX89Z",
    "kind": "definition",
    "msc": [
      "65F15",
      "15A18"
    ],
    "name": "Eigenvalue algorithm",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Eigenvalue_algorithm"
      }
    ],
    "tag": "RBVCDV3GCY",
    "uses": [
      "0VD9ZSWWJG",
      "0BQAA2BK3Q",
      "0N6960W0BV"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/RBVCDV3GCY/",
  "links": [
    {
      "field": "defines",
      "target": "HCJ2ETX89Z"
    },
    {
      "field": "uses",
      "target": "0VD9ZSWWJG"
    },
    {
      "field": "uses",
      "target": "0BQAA2BK3Q"
    },
    {
      "field": "uses",
      "target": "0N6960W0BV"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/RBVCDV3GCY.md",
  "msc": [
    "65F15",
    "15A18"
  ],
  "name": "Eigenvalue algorithm",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/RBV/RBVCDV3GCY.md",
  "status": null,
  "tag": "RBVCDV3GCY",
  "uri": "m2://RBVCDV3GCY",
  "url": "https://tamnd.github.io/math2/wiki/eigenvalue-algorithm-definition/",
  "writing": {
    "tag": "RBVCDV3GCY",
    "kind": "definition",
    "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
      }
    ]
  }
}
