inverse iteration
The power method only finds the largest eigenvalue. But often you want a specific one — say, the eigenvalue closest to some number sigma you have in mind (a resonant frequency, a known approximate eigenvalue). Inverse iteration is the clever trick that turns the power method into a precision instrument you can aim. The idea: if you already know roughly where an eigenvalue is, you can make it the dominant one of a transformed matrix, and then power iteration zooms in on it.
Here is the transformation. The eigenvalues of (A - sigma I)^(-1) are 1/(lambda_i - sigma), where lambda_i are the eigenvalues of A. If sigma is close to one particular eigenvalue lambda_j, then lambda_j - sigma is tiny, so 1/(lambda_j - sigma) is HUGE — it is by far the largest eigenvalue of the inverse-shifted matrix. So running the power method on (A - sigma I)^(-1) converges fast to the eigenvector for lambda_j. In practice you never form the inverse: each step solves the linear system (A - sigma I) w = v (one LU factorization, reused every step), then normalizes. The closer your shift sigma is to lambda_j, the faster it converges — the rate is |(lambda_j - sigma)/(lambda_next - sigma)|.
Inverse iteration is the standard way to get an accurate eigenVECTOR once you already have a good eigenVALUE estimate (for instance from the QR algorithm). It seems alarming that (A - sigma I) becomes nearly singular as sigma approaches lambda_j — won't the linear solve blow up? Remarkably, it does not hurt: the solve amplifies precisely the eigenvector direction you want, and a backward-stable solver delivers a vector that is almost entirely in the right direction even when the system is ill-conditioned. That near-singularity is the source of the speed, not a bug.
For A with rows (2, 1) and (1, 2) (eigenvalues 3 and 1), suppose you want the eigenvector near sigma = 0.9. Form A - 0.9 I, factor it once, and solve (A - 0.9 I) w = v repeatedly with normalization. Since 1/(1 - 0.9) = 10 dwarfs 1/(3 - 0.9) ~= 0.48, the iteration locks onto the eigenvector (1, -1) for lambda = 1 in just a step or two — far faster than waiting for the power method to find that smaller eigenvalue (which it never would).
Choosing a shift sigma near a target eigenvalue makes that eigenvalue dominant for the inverse-shifted matrix.
Factor (A - sigma I) once and reuse the factorization for every iteration — never recompute the inverse each step, and never literally form (A - sigma I)^(-1). If sigma is updated each step using the latest eigenvalue estimate, you get Rayleigh quotient iteration with cubic convergence.