Skip to main content

Section 5.2 The Power method

The most common situation in applications is the determination of the eigenvalues of some symmetric positive-definite matrix, so from now on we assume we have such a matrix.

The power method is a very simple iterative method able to evaluate numerically the largest eigenvalue in absolute value of a matrix A (and so also its smallest one, which is the inverse of the largest eigenvalue of its inverse A1). We call this eigenvalue the dominant eigenvalue of A.

Denote by {e1,,en} a basis of eigenvectors, so that Aei=λiei, and take a generic vector v=v1e1++vnen (generic means that no vi component is zero).

Then
A(v)=A(v1e1++vnen)=v1A(e1)++vnA(en)=v1λ1e1++vnλnen.
Hence, in general,
Ak(v)=v1λk1e1++vnλknen

The algorithm. Sort the eigenvalues in decreasing order with respect to modulus, namely assume that
|λ1|>|λ2|>>|λn|.
Then, as k, all terms λki with i>1 become negligible with respect to the term with λk1 and so
Ak(v)λk1e1.
Notice that this approximation gets better and better with higher and higher powers of A.

We exploit this fact in the following iterative algorithm:
  1. Choose a random vector v0 and set some threshold ϵ;
  2. until vvold>ϵ
    • vold=v
    • z=Av
    • v=z/z
  3. end

We claim that, at the end of the loop,
vTAvvTv
is the eigenvalue of highest modulus and v is one of its eigenvectors.

Indeed, notice that
aTb=(a1an)(b1bn)=a1b1++anbn=a,b
so that, for large k,
(Akv0)TAk+1v0=Akv,Ak+1vλkv1e1,λk+1v1e1=λ2k+11v21
and
(Akv0)TAkv0=Akv,Akvλkv1e1,λkv1e1=λ2k1v21,
so that
(Akv0)TAk+1v0(Akv0)TAkv0λ1
In essence, this is exactly the method used by google to rank web pages when a user searches for keywords!

Finally, notice that the last value of v computed provides an approximation of an eigenvector of A.

An implementation in Python of the Power method. The code below evaluates the largest modulus eigenvalue of the matrix
(1234).
We use the vector (72) as starting point of the algorithm.