Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture Notes on Solving Large Scale Eigenvalue Problems.pdf
Скачиваний:
49
Добавлен:
22.03.2016
Размер:
2 Мб
Скачать
☆

6.5. INVERSE VECTOR ITERATION

121

102

100

10−2

10−4

10−6

10−8

10−10

0

100

200

300

400

500

600

700

800

900

Figure 6.6: Simple vector iteration with τI40 − T40 and starting vector (1, 1, . . . , 1)T

Problem 6.6 When computing the smallest eigenvalue of Tn by the simple vector iteration we can find a better shift than τ above if the extremal points of the spectrum are known. Determine σ such that σIn − Tn exhibits the optimal convergence rate. Hint: On the one hand we would like the quotient (σ −λn−1)/(σ −λn) to be as small as possible. On the other hand |σ −λ1|/(σ −λn) must not become to big. Hint: Equate the two quantities.

6.5Inverse vector iteration

The previous examples have shown that the convergence of simple vector iteration is potentially very slow. The quotient of the second largest to the largest eigenvalue are very close to 1. We noticed this by means of a very simple and small eigenvalue problem. The situation gets much worse if the problems are big.

We have seen in (2.28) that a polynomial in A has the same eigenvectors as A. We therefore may try to find a polynomial that enhances the eigenvalue that we are looking for. This approach is however not successful in the most critical case when the wanted eigenvalue is very close to unwanted. In this situation, the shift-and-invert spectral transformation is most appropriate. Instead of a polynomial we transform the matrix by the rational function f(λ) = 1/(λ − σ) where σ is a so-called shift that is chosen close to the desired eigenvalue. Simple vector iteration with the matrix (A − σI)−1 is referred to as inverse vector iteration, see Algorithm 6.5.

(6.21) x(k) := (A

−

σI)−1x(k−1)

 

(A

−

σI) x(k) := x(k−1)

, k = 1, 2, . . .

 

 

 

 

 

The iteration converges towards the eigenvector with eigenvalue closest to σ. A linear system of equations has to be solved in each iteration step. Of course only one Cholesky or LU factorization has to be computed as the shift remains constants in all iterations. The stopping criterion is changed into

(6.22)

kx(k) − y(k)/µ(k)k ≤ tolky(k)k

122

CHAPTER 6. VECTOR ITERATION (POWER METHOD)

Algorithm 6.3 Inverse vector iteration

1:Choose a starting vector x0 Fn and a shift σ.

2:Compute the LU factorization of A − σI: LU = P (A − σI)

3: y(0) := U−1L−1P x(0). µ(0) = y(0) x(0), λ(0) := σ + 1/µ(0). k := 0.

4:while kx(k) − y(k)/µ(k)k > tolky(k)k do

5:k := k + 1.

6:x(k) := yk−1/kyk−1k.

7:y(k) := U−1L−1P x(k).

8:

µ(k) := y(k) x(k), λ(k) := σ + 1/µ(k).

 

 

9:

end while

 

 

 

 

 

where we have used

 

 

 

Ay(k) − λ(k)y(k) = Ay(k) − σ −

1

y(k) = x(k) − y(k)/µ(k)

 

 

 

µ(k)

The convergence result of Theorem 6.3 can easily be adapted to the new situation if it is taken into account that A − σI has eigenpairs (µi, ui) with µi = 1/(σ − λi).

Theorem 6.7 Let A be symmetric positive definite with spectral decomposition (6.14). Let λ′1, . . . , λ′n be a renumeration of the eigenvalues in (6.14) such such that

(6.23)

 

 

 

 

 

 

 

 

1

 

 

>

 

1

 

≥ · · · ≥

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|λ1′

− σ|

|λ2′

− σ|

|λn′ − σ|

 

 

 

 

 

 

 

 

 

 

 

1

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Then, provided that u′

x(0)

= 0, the inverse vector iteration of Algorithm 6.5 constructs

sequences λ(k) ∞

 

and

 

x(k)

 

∞

that converge linearly towards that eigenvalue λ′

clos-

 

k=0

 

 

 

 

 

 

 

 

k=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

shift σ and to the corresponding eigenvector u

, respectively. The bounds

 

est to the

 

 

 

λ2′

 

 

 

 

 

 

 

 

 

 

 

 

 

1′

 

 

 

 

σ

 

 

 

 

 

sin ϑ

 

≤

− σ

 

sin ϑ ,

λ

 

− λ1

≤ δ λ2′

−

sin

 

ϑ .

 

 

 

 

 

 

λ′

−

σ

 

k

 

 

 

 

 

 

 

 

 

 

 

λ′

−

σ

 

2k

 

 

 

 

 

(k)

 

 

 

1

 

 

 

 

 

 

 

(0)

 

 

(k)

 

 

 

 

1

 

 

 

 

 

2

(0)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hold with ϑ(k) = (x(k), u1) and δ = spread(σ((A − σI)−1)).

If the shift σ approximates very well an eigenvalue of A then λ(k) − σ 1 and cover-

λn − σ

gence is very rapid.

Example 6.8 Let us now use inverse iteration to compute the smallest eigenvalue and corresponding eigenvector of the one-dimensional Poisson matrix T = Tn of Example 2.7 with n = 40. If we assume that we know that the smallest eigenvalue λ1 is around 1 then a shift σ = .9 is reasonable, if we want A − σI to still be positive definite. Starting with the vector of all ones three iteration steps su ce to get the desired accuracy of tol = 10−5, see Table 6.1.

Example 6.9 We consider the problem of computing the eigenvector corresponding to a

6.5. INVERSE VECTOR ITERATION

123

 

 

 

 

 

 

k

λ(k) − λ1

sin(ϑ(k))

 

 

1

2.0188e-02

4.1954e-03

 

 

2

1.7306e-06

5.0727e-05

 

 

3

2.5289e-10

6.2492e-07

 

 

 

 

 

 

Table 6.1: Computing the lowest eigenvalue of the one-dimensinal Poisson equation by inverse iteration

known eigenvalue. The matrix that we consider is one of the so-called Wilkinson matrices

 

−1

18 −1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

−1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

... ... ...

 

 

 

 

 

 

 

 

 

 

T =

 

 

1

1

−

1

 

 

 

 

 

 

 

 

 

−

 

 

1

 

 

1

 

 

 

 

 

.

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−

 

.

 

 

−.

 

.

..

 

 

 

 

 

 

 

 

 

 

.. ..

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−

 

−

 

−

 

 

 

 

 

 

 

 

 

 

 

 

 

1

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Wilkinson matrices are irreducible tridiagonal matrices that have very close eigenvalues. This matrix has the eigenvalues

i

λi

i

λi

1

-1.1254415221199814

11

5.0002362656192743

2

0.2538058170966502

12

5.9999918413270530

3

0.9475343675285830

13

6.0000083521880692

4

1.7893213526669509

14

6.9999997949295611

5

2.1302092192694015

15

7.0000002079042920

6

2.9610588806935558

16

7.9999999961918720

7

3.0430992883895192

17

8.0000000038418246

8

3.9960479973346419

18

8.9999999999455120

9

4.0043538173235769

19

9.0000000000548166

10

4.9997743198148310

20

9.9999999999996234

 

 

 

 

The following MATLAB code constructs the SPARSE tridiagonal matrix T .

n = 40;

e = ones(n,1); f = abs([-n/2+1:n/2]’); T = spdiags([-e f -e], [-1:1], n, n); lam = sort(eig(T));

Computing the 20-th and 21-st eigenvectors could be done in the following way.

>>x = (T - lam(20)*eye(n))\e;

>>y = (T - lam(21)*eye(n))\e;

>>x = x/norm(x); y = y/norm(y);

>>x’*y

ans = 0.00140329005834

>> norm((T - lam(20)*eye(n))*x)

124

CHAPTER 6. VECTOR ITERATION (POWER METHOD)

ans =

7.325760095786749e-15

>> norm((T - lam(21)*eye(n))*y) ans =

7.120036319503636e-15

The computed vectors x and y are good approximations in the sense that they give small residuals. However, the two vectors are nor mutually orthogonal at all. We try to improve orthogonality by apply a second step of inverse iteration

>>x = (T - lam(20)*eye(n))\x;

>>y = (T - lam(21)*eye(n))\y;

>>x = x/norm(x); y = y/norm(y);

>>x’*y

ans = -1.313592004487587e-05

Things have only slightly improved. Therefore, we orthogonalize y explicitely against x.

>>y = y - x*(x’*y);

>>x’*y

ans = -2.155571068436496e-17

>>norm((T - lam(21)*eye(n))*y) ans =

1.557058217172078e-15

>>norm((T - lam(20)*eye(n))*x) ans =

4.117116818055497e-16

This helped. The two eigenvectors are now perpendicular on each other, and the residuals are still fine.

Discussion of inverse iteration

We have seen that

•we can compute eigenvectors corresponding to any (simple and well separated) eigenvalue if we choose the shift properly, and that

•we have very good convergence rates, is the shift is close to an eigenvalue.

However, one may feel uncomfortable solving an ‘almost singular’ system of equation, after all σ ≈ λk means that the condition of A − σI is very big. From the analysis of linear systems of equations we know that this means large errors in the solution. Furtunately, the error that is su ered from when solving with A − σI points in the right direction. To see this, assume that the singular value decomposition of A − σI is given by

A − σI = UΣV , Σ = diag(σ1, . . . , σn), with σ1 ≥ · · · ≥ σn ≥ 0.

If A − σI is ‘almost’ singular then σn 1. If even σn = 0 then (A − σI)vn = 0, i.e., the last right singular vector is an eigenvector of A corresponding to the eigenvalue σ (the shift).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]