Linear Algebra/Topic: The Method of Powers

From testwiki
Jump to navigation Jump to search

Template:Navigation

In practice, calculating eigenvalues and eigenvectors is a difficult problem. Finding, and solving, the characteristic polynomial of the large matrices often encountered in applications is too slow and too hard. Other techniques, indirect ones that avoid the characteristic polynomial, are used. Here we shall see such a method that is suitable for large matrices that are "sparse" (the great majority of the entries are zero).

Suppose that the n×n matrix T has the n distinct eigenvalues λ1, λ2, ..., λn. Then n has a basis that is composed of the associated eigenvectors ζ1,,ζn. For any vn, where v=c1ζ1++cnζn, iterating T on v gives these.

Tv=c1λ1ζ1+c2λ2ζ2++cnλnζnT2v=c1λ12ζ1+c2λ22ζ2++cnλn2ζnT3v=c1λ13ζ1+c2λ23ζ2++cnλn3ζnTkv=c1λ1kζ1+c2λ2kζ2++cnλnkζn

If one of the eigenvalues, say, λ1, has a larger absolute value than any of the other eigenvalues then its term will dominate the above expression. Put another way, dividing through by λ1k gives this,

Tkvλ1k=c1ζ1+c2λ2kλ1kζ2++cnλnkλ1kζn

and, because λ1 is assumed to have the largest absolute value, as k gets larger the fractions go to zero. Thus, the entire expression goes to c1ζ1.

That is (as long as c1 is not zero), as k increases, the vectors Tkv will tend toward the direction of the eigenvectors associated with the dominant eigenvalue, and, consequently, the ratios of the lengths |Tkv|/|Tk1v| will tend toward that dominant eigenvalue.

For example, (sample computer code for this follows the exercises), because the matrix

T=(3081)

is triangular, its eigenvalues are just the entries on the diagonal, 3 and 1. Arbitrarily taking v to have the components 1 and 1 gives

vTvT2vT9vT10v(11)(37)(917)(1968339367)(59049118097)

and the ratio between the lengths of the last two is 2.9999.

Two implementation issues must be addressed. The first issue is that, instead of finding the powers of T and applying them to v, we will compute v1 as Tv and then compute v2 as Tv1, etc. (i.e., we never separately calculate T2, T3, etc.). These matrix-vector products can be done quickly even if T is large, provided that it is sparse. The second issue is that, to avoid generating numbers that are so large that they overflow our computer's capability, we can normalize the vi's at each step. For instance, we can divide each vi by its length (other possibilities are to divide it by its largest component, or simply by its first component). We thus implement this method by generating

w0=v0/|v0|v1=Tw0w1=v1/|v1|v2=Tw2wk1=vk1/|vk1|vk=Twk

until we are satisfied. Then the vector vk is an approximation of an eigenvector, and the approximation of the dominant eigenvalue is the ratio |vk|/|wk1|=|vk|.

One way we could be "satisfied" is to iterate until our approximation of the eigenvalue settles down. We could decide, for instance, to stop the iteration process not after some fixed number of steps, but instead when |vk| differs from |vk1| by less than one percent, or when they agree up to the second significant digit.

The rate of convergence is determined by the rate at which the powers of |λ2/λ1| go to zero, where λ2 is the eigenvalue of second largest norm. If that ratio is much less than one then convergence is fast, but if it is only slightly less than one then convergence can be quite slow. Consequently, the method of powers is not the most commonly used way of finding eigenvalues (although it is the simplest one, which is why it is here as the illustration of the possibility of computing eigenvalues without solving the characteristic polynomial). Instead, there are a variety of methods that generally work by first replacing the given matrix T with another that is similar to it and so has the same eigenvalues, but is in some reduced form such as tridiagonal form: the only nonzero entries are on the diagonal, or just above or below it. Then special techniques can be used to find the eigenvalues. Once the eigenvalues are known, the eigenvectors of T can be easily computed. These other methods are outside of our scope. A good reference is Template:Harv.

Exercises

Template:TextBox Template:TextBox Template:TextBox Template:TextBox Template:TextBox Template:TextBox

/Solutions/

This is the code for the computer algebra system Octave that was used to do the calculation above. (It has been lightly edited to remove blank lines, etc.)

Computer Code

>T=[3, 0;
8, -1]
T=
3 0
8 -1
>v0=[1; 2]
v0=
1
1
>v1=T*v0
v1=
3
7
>v2=T*v1
v2=
9
17
>T9=T**9
T9=
19683 0
39368 -1
>T10=T**10
T10=
59049 0
118096 1
>v9=T9*v0
v9=
19683
39367
>v10=T10*v0
v10=
59049
118096
>norm(v10)/norm(v9)
ans=2.9999

Remark: we are ignoring the power of Octave here; there are built-in functions to automatically apply quite sophisticated methods to find eigenvalues and eigenvectors. Instead, we are using just the system as a calculator.

References


Template:Navigation

Template:BookCat