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

72 CHAPTER 3. THE QR ALGORITHM

1: Q1:n,p−1:p := Q1:n,p−1:pP ;

which costs another 12n3 flops.

We earlier gave the estimate of 6n3 flops for a Hessenberg QR step, see Algorithm 3.2. If the latter has to be spent in complex arithmetic then the single shift Hessenberg QR algorithm is more expensive than the double shift Hessenberg QR algorithm that is executed in real arithmetic.

Remember that the reduction to Hessenberg form costs 103 n3 flops without forming the transformation matrix and 143 n3 if this matrix is formed.

3.6The symmetric tridiagonal QR algorithm

The QR algorithm can be applied straight to Hermitian or symmetric matrices. By (3.1) we see that the QR algorithm generates a sequence {Ak} of symmetric matrices. Taking into account the symmetry, the performance of the algorithm can be improved considerably. Furthermore, from Theorem 2.14 we know that Hermitian matrices have a real spectrum. Therefore, we can restrict ourselves to single shifts.

3.6.1Reduction to tridiagonal form

The reduction of a full Hermitian matrix to Hessenberg form produces a Hermitian Hessenberg matrix, which (up to rounding errors) is a real symmetric tridiagonal matrix. Let us consider how to take into account symmetry. To that end let us consider the first reduction step that introduces n − 2 zeros into the first column (and the first row) of A = A Cn×n. Let

P1

=

0 In−1

− 2u1u1

, u1 Cn, ku1k = 1.

 

 

1

0T

 

Then,

A

1

:= P AP

1

= (I

2u

u )A(I

2u

u )

 

1

 

 

1

 

1

 

 

1

1

 

 

 

 

 

 

= A

u

(2u A

2(u Au

)u )

 

 

 

 

 

1

|

1

 

 

 

1

1

1

 

 

 

 

 

 

 

 

 

 

{z

 

 

 

}

v1 = A − u1v1 v1u1.

In the k-th step of the reduction we similarly have

− (2Au1 − 2u1(u Au1)) u

| {z 1 } 1 v1

Ak = Pk Ak−1Pk = Ak−1 uk−1vk−1 vk−1uk−1,

where the last n − k elements of uk−1 and vk−1 are nonzero. Forming

vk−1 = 2Ak−1uk−1 − 2uk−1(uk−1Ak−1uk−1)

costs 2(n − k)2 + O(n − k) flops. This complexity results from Ak−1uk−1. The rank-2

update of Ak−1,

Ak = Ak−1 uk−1vk−1 vk−1uk−1,

requires another 2(n−k)2 +O(n−k) flops, taking into account symmetry. By consequence, the transformation to tridiagonal form can be accomplished in

nX−1 4(n − k)2 + O(n − k) = 43n3 + O(n2)

k=1

3.6. THE SYMMETRIC TRIDIAGONAL QR ALGORITHM

73

floating point operations.

3.6.2The tridiagonal QR algorithm

In the symmetric case the Hessenberg QR algorithm becomes a tridiagonal QR algorithm. This can be executed in an explicit or an implicit way. In the explicit form, a QR step is essentially

1:Choose a shift µ

2:Compute the QR factorization A − µI = QR

3:Update A by A = RQ + µI.

Of course, this is done by means of plane rotations and by respecting the symmetric tridiagonal structure of A.

In the more elegant implicit form of the algorithm we first compute the first Givens rotation G0 = G(1, 2, ϑ) of the QR factorization that zeros the (2, 1) element of A − µI,

 

−s

c

a21

0

(3.11)

c

s

a11 − µ

= , c = cos(ϑ0), s = sin(ϑ0).

Performing a similary transformation with G0 we have (n = 5)

 

 

×

×

×

 

G0AG0

= A=

×

×

+

 

+ × × ×

 

 

 

 

× ×

 

 

 

 

 

×

 

 

 

 

 

 

 

 

 

 

×

×

Similar as with the double step Hessenberg QR algorithm we chase the bulge down the diagonal. In the 5 × 5 example this becomes

 

G0

× × ×

 

 

G1

× × × +

 

 

−−=G−−(1,2,ϑ0)

 

×

×

+

 

 

−−=G−−(2,3,ϑ1)

 

×

×

0

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

×

×

 

 

 

 

 

×

×

 

A

 

 

+

×

×

 

 

0

×

×

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

×

×

 

 

 

 

 

×

×

G2

× × ×

 

 

 

G3

× × ×

 

 

 

 

 

 

−−=G−−(3,4,ϑ2)

×

×

0

 

 

 

−−=G−−(4,5,ϑ3)

×

×

 

 

 

 

 

 

 

0

 

 

 

 

× × ×

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

×

×

×

×

 

 

× ×

×

 

 

 

 

 

×

×

+

 

 

 

0

 

0

 

= A.

 

 

+

 

 

 

 

 

 

 

 

The full step is given by

 

 

 

×

×

 

 

 

×

×

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= Q AQ,

 

Q = G0 G1 · · · Gn−2.

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

Because Gke1 = e1 for k > 0 we have

Q e1 = G0 G1 · · · Gn−2 e1 = G0 e1.

Both explicit and implicit QR step form the same first plane rotation G0. By referring to the Implicit Q Theorem 3.5 we see that explicit and implicit QR step compute essentially the same A.

74

CHAPTER 3. THE QR ALGORITHM

Algorithm 3.6 Symmetric tridiagonal QR algorithm with implicit Wilkinson shift

1:Let T Rn×n be a symmetric tridiagonal matrix with diagonal entries a1, . . . , an and o -diagonal entries b2, . . . , bn.

This algorithm computes the eigenvalues λ1, . . . , λn of T and corresponding eigenvectors q1, . . . , qn. The eigenvalues are stored in a1, . . . , an. The eigenvectors are stored in the matrix Q, such that T Q = Q diag(a1, . . . , an).

2:m = n /* Actual problem dimension. m is reduced in the convergence check. */

3:while m > 1 do

4:d := (am−1 − am)/2; /* Compute Wilkinson’s shift */

5:if d = 0 then

6:s := am − |bm|;

7:

else

 

s := am − bm2 /(d + sign(d)p

 

);

8:

d2 + bm2

9:end if

10:x := a(1) − s; /* Implicit QR step begins here */

11:y := b(2);

12:for k = 1 to m − 1 do

13:if m > 2 then

14:[c, s] := givens(x, y);

15:

else

s c

b2

a2

 

 

16:

Determine [c, s] such that c

−s

a1

b2

c s

−s c is diagonal

17:end if

18:w := cx − sy;

19:d := ak − ak+1; z := (2cbk+1 + ds)s;

20:ak := ak − z; ak+1 := ak+1 + z;

21:bk+1 := dcs + (c2 − s2)bk+1;

22:x := bk+1;

23:if k > 1 then

24:bk := w;

25:end if

26:if k < m − 1 then

27:

y := −sbk+2; bk+2 := cbk+2;

28:

end if

c

s

 

 

29:

Q1:n;k:k+1 := Q1:n;k:k+1

−s

c ;

30:end for/* Implicit QR step ends here */

31:if |bm| < ε(|am−1| + |am|) then /* Check for convergence */

32:m := m − 1;

33:end if

34:end while

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