Eigenvalue Problems & the SVD

the power method

Suppose you want only the single largest eigenvalue of a matrix A — the one biggest in magnitude — and its eigenvector. There is a beautifully simple recipe: pick almost any starting vector, multiply it by A over and over, and renormalize each time. The vector swings around and settles, pointing more and more exactly along the dominant eigenvector. This is the power method, and it is the seed of nearly every iterative eigensolver (and, in disguise, of Google's original PageRank).

Why does it work? Write your starting vector as a combination of A's eigenvectors: v = c_1 q_1 + c_2 q_2 + ... where q_1 has the largest eigenvalue lambda_1. Each multiply by A scales the q_i component by its eigenvalue lambda_i, so after k steps the component along q_i is c_i lambda_i^k q_i. Because |lambda_1| is biggest, that term grows fastest and dominates the others; relative to it, every other component shrinks like (lambda_i / lambda_1)^k. So the iterate v_{k+1} = A v_k / ||A v_k|| converges to q_1, and the Rayleigh quotient v_k^T A v_k / (v_k^T v_k) converges to lambda_1. In pseudocode: repeat w = A v; v = w / ||w||; lambda = v^T A v.

The catch is the convergence rate: the error shrinks only linearly, by the ratio |lambda_2 / lambda_1| each step. If the top two eigenvalues are close in magnitude this ratio is near 1 and convergence crawls; if they are equal in magnitude (a tie, or a complex conjugate pair) plain power iteration may not converge at all. It also finds only the dominant eigenpair, not the others. These limitations are exactly what inverse iteration (to target other eigenvalues) and the QR algorithm (to get them all) are built to overcome. But for one extreme eigenvalue of a huge sparse matrix, where you can only afford matrix-vector products, the power method is hard to beat.

Let A have rows (2, 1) and (1, 2), with eigenvalues 3 (eigenvector (1,1)) and 1 (eigenvector (1,-1)). Start at v = (1, 0). A v = (2, 1); normalize to (0.894, 0.447). Next (2.236, 1.789) -> (0.781, 0.625). Next (0.733, 0.680)... the vector marches toward (0.707, 0.707), the direction of (1,1), and the Rayleigh quotient climbs toward 3. The error each step shrinks by about |1/3|, so a couple of digits per few steps.

Repeated multiplication aligns the vector with the dominant eigenvector; convergence speed is set by |lambda_2/lambda_1|.

Renormalize every step, or the iterate overflows or underflows as lambda_1^k blows up or decays. And convergence is to the dominant eigenvector's DIRECTION (a unit vector up to sign), not to a magnitude — the eigenvalue comes from the Rayleigh quotient, not the vector's length.

Also called
power iteration乘冪法冪疊代