Choleskyzerlegung Julia Hoeboer 13 Mai 2011
Inhalt: LDM T Zerlegung LDL T Zerlegung Cholesky Zerlegung Person Berechnung Gaxpy Algorithmus Effektivität
LDM T Zerlegung LDM T Zerlegung lässt sich aus LR Zerlegung ableiten A = LR alle Teilmatrizen von A sollen invertierbar sein Sei D = diag(d 1 d n ) Diagonalmatrix (invertierbar) und L und M untere Dreieckseinheitsmatrizen Sei D 1 R = M T A = LR = LD(D 1 R) = LDM T
LDM T Zerlegung Angenommen wir kennen die ersten j-1 Spalten von L, die Diagonaleinträge von d 1,, d j 1 von D und die ersten j-1 Zeilen von M (1 j n) Um weitere Einträge zu berechnen, brauchen wir einen Hilfsvektor v
LDM T Zerlegung Sei v = DM T e j Dann ist: L(1 : k, 1 : j)v(1 : j) = A(1 : j, j)
LDM T Zerlegung Haben wir v können wir d(j) und M(j,i) berechnen: d(j)=v(j) M(j,i)=v(i)/d(i),für 1:j-1 Zum Schluss können wir dann noch L(j+1 : n, j)v(j) = A(j+1 : n, j) L(j+1 : n, 1 : j 1)v(1 : j 1) berechnen
LDM T Zerlegung LDM T Algorithmus for j = 1 : n Solve L(1 : j, 1 : j)v(1 : j) = A(1 : j, j) für v(1 : j) for i = 1 : j 1 M(j, i) = v(i)/d(i) end d(j) = v(j) L(j + 1 : n, j) = (A(j + 1 : n, j) L(j + 1 : n, 1 : j 1) v(1 : j 1))/v(j) end
LDM T Zerlegung LDM T Beispiel Sei: 10 10 20 A = 20 25 40 30 50 61 1 0 0 d 1 0 0 1 m 21 m 31 L = l 21 1 0 D = 0 d 2 0 M T = 0 1 m 32 l 31 l 32 1 0 0 d 3 0 0 1
LDM T Zerlegung LDM T Beispiel j=1 Löse L(1 : 1, 1 : 1)v(1 : 1) = A(1 : 1, 1) für v(1 : 1) 1v(1) = 10 for i = 1 : j 1 Abbruch end d(1) = v(1) = 10 L(1 + 1 : 3, 1) = (A(1 ( ) + 1 ( : 3, 1) ) L(1 + 1 : 3, 1 : 1 1)v(1 : 1 1))/v(1) l21 20 l ( 31 l21 l 31 = ) = /10 30 ) ( 2 3
LDM T Zerlegung LDM T Beispiel j=2 ( Löse L(1 ) ( : 2, ) 1 : 2)v(1 ( ) : 2) = A(1 : 2, 2) für v(1 : 2) l 0 v1 10 = 2 1 v 2 25 ( ) ( ) v1 10 = 2v 1 + v 2 25 ( ) ( ) v1 10 = 5 v 2
LDM T Zerlegung LDM T Beispiel for i = 1 : j 1 M(2, 1 = v(1)/d(1) = 10 10 = 1 end d(2) = v(2) = 5 L(2 + 1 : 3, 2) = (A(2 + 1 : 3, 2) L(2 + 1 : 3, 1 : 2 1)v(1 : 2 1))/v(2) L(3, 2) = (50 3 10)/5 = 4
LDM T Zerlegung LDM T Beispiel j=3 Löse L(1 : 3, 1 : 3)v(1 : 3) = A(1 : 3, 3) für v(1 : 3) 1 0 0 v 1 20 2 1 0 v 2 = 40 3 4 1 v 3 61 v 1 20 2v 1 + v 2 = 40 3v 1 + 4v 2 + v 3 61 v 1 20 v 2 = 0 v 3 1
LDM T Zerlegung LDM T Beispiel for i = 1 : j 1 (i = 1) : M(3, 1) = v(1)/d(1) = 20 10 = 2 (i = 2) : M(3, 2) = v(2)/d(2) = 0 5 = 0 end d(3) = v(3) = 1 L(3 + 1 : 3, 3) = Abbruch
LDL T Zerlegung Wenn A = LDM T die LDM T Zerlegung einer invertierbaren, symmetrischen Matrix ist, dann ist L = M
LDL T Zerlegung LDL T Algorithmus for j = 1 : n for i = 1 : j 1 v(i) = L(j, i)d(i) end v(j) = A(j, j) L(j, 1 : j 1)v(1 : j 1) d(j) = v(j) L(j + 1 : n, j) = (A(j + 1 : n, j) L(j + 1 : n, 1 : j 1)v(1 : j 1))/v(j) end
Cholesky-Zerlegung * 15 Oktober 1875 31 August 1918
Cholesky-Zerlegung Bedingungen quadratische Matrix A R nxn symmetrisch: A = A T positiv definit: x T Ax > 0 für alle x 0
Cholesky-Zerlegung Ziel G T obere Dreiecksmatrix G untere Dreiecksmatrix dann wird aus: wobei hier G T x = y sein soll A = GG T Ax = b Ax = GG T x = b
Cholesky-Zerlegung Ziel Man löst zuerst das Gleichungssystem Gy = b erhalten y Danach löst man das Gleichungssystem erhalten x Gx = y
Cholesky-Zerlegung Berechnung Formel: 0, für i < j g ij := a ii i 1 k=1 g2 ik, für i = j 1 g jj (a ij j 1 k=1 g ikg kj ), für i > j
Cholesky-Zerlegung Beispiel 1 2 3 Matrix A:= 2 5 7 3 7 26 g 11 g 12 g 13 Matrix G:= g 21 g 22 g 23 g 31 g 32 g 33 g 11 = a 11 1 1 k=1 g2 1k = 1 0 = 1 = 1 g 12 = 0 g 13 = 0
Cholesky-Zerlegung Beispiel 1 2 3 Matrix A:= 2 5 7 3 7 26 1 0 0 Matrix G:= g 21 g 22 g 23 g 31 g 32 g 33 g 21 = 1 g 11 (a 21 1 1 k=1 g) = 1 2 = 2 g 22 = a 22 2 1 k=1 g2 2k = 5 2 2 = 1 = 1 g 23 = 0
Cholesky-Zerlegung Beispiel 1 2 3 Matrix A:= 2 5 7 3 7 26 1 0 0 Matrix G:= 2 1 0 g 31 g 32 g 33 g 31 = 1 g 11 (a 31 1 1 k=1 g) = 3 1 = 3 g 32 = 1 g 2 2 (a 32 2 1 k=1 g 3kg 2k ) = 1(7 (3 2)) = 1 g 33 = a 33 3 1 k=1 g2 3k = 26 (3 2 + 1 2 ) = 16 = 4
Cholesky-Zerlegung Beispiel 1 2 3 Matrix A:= 2 5 7 3 7 26 1 0 0 Matrix G:= 2 1 0 3 1 4
Cholesky-Zerlegung Nutzen effizientes Lösen des Gleichungssystems Ax=b Test für positive Definitheit eine Matrix Bestimmung der Determinanten det(a) = n G 2 ii i=1 Ausgangsmatrix auf Korrektheit prüfen (naturwissenschaftlich-technische Probleme)
Algorithmen Gaxpy-Version Die j-te Spalte von A entsteht beim Multiplizieren von GG T aus: G(1, 1) G(1, 2) G(1, j) G(j, 1) + G(j, 2) + + G(j, j) G(n, 1) G(n, 2) G(n, j) A(:, j) = j k=1 G(j, k)g(:, k)
Algorithmen Gaxpy-Version A(:, j) = G(j, j)g(:, j) + j 1 k=1 G(j, k)g(:, k) G(j, j)g(:, j) = A(:, j) j 1 k=1 G(j, k)g(:, k) v G(1, 1) dh G(j, j) = G(n, j) v(1 v(n)
Algorithmen Gaxpy-Version Um G(j:n,j) zu erhalten, rechnet man v(j : n)/ v(j) Betracht man das Beispiel j=1 wird schnell klar warum: G(1, 1) G(1, 1) G(2, 1) G(n, 1) = v(1) v(n) G(1, 1)G(1, 1) G(1, 1)G(2, 1) G(1, 1)G(n, 1) = v(1) v(n)
Algorithmen Gaxpy-Version aus der ersten Zeile folgt: das heißt für die Zeilen 2:n v(1)g(2, 1) v(2) = v(1))g(n, 1) v(n) G(1 : n, 1) = v(1 : n)/ v(1) G(j : n, j) = v(j : n)/ v(j) G(1, 1) = v(1)
Algorithmen Gaxpy-Version for j = 1 : n v(j : n) = A(j : n, j) for k = 1 : j 1 v(j : n) = v(j : n) G(j, k)g(j : n, k) end G(j : n, j) = v(j : n)/ v(j) end
Algorithmen Gaxpy-Version Ein Beispiel: 1 2 3 Matrix A: 2 5 7 3 7 26 j=1 v(1 : 3) = A(1 : 3, 1) also ist hier: 1 v(1:3)= 2 3
Algorithmen Gaxpy-Version for k=1:0 Abbruch end G(1 : 3, 1) = v(1 : 3)/ v(1) 1 G(1 : 3, 1) = 2 1 1 = 2 3 3
Algorithmen Gaxpy-Version 1 2 3 Matrix A: 2 5 7 3 7 26 j=2 v(2 : 3) = A(2 : 3, 2) ( ) 5 v(2:3)= 7
Algorithmen Gaxpy-Version for k=1:1 v(2 ( : 3) ) = v(2 ( : ) 3) ( G(2, ) 1)G(2 : 3, 1) 5 2 1 = 2 = 7 3 1 end G(2 : 3, 2) = v(2 : 3)/ ( ) ( ) 1 1 1 v(2) = = 1 1
Algorithmen Gaxpy-Version 1 2 3 Matrix A: 2 5 7 3 7 26 j=3 v(3 : 3) = A(3 : 3, 3) v(3 : 3) = 26 for k=1:2 k=1 v(3 : 3) = v(3 : 3) G(3, 1)G(3 : 3, 1) = 26 3 2 = 17
Algorithmen Gaxpy-Version k=2 v(3 : 3) = v(3 : 3) G(3, 2)G(3 : 3, 2) 17 1 = 16 end G(3 : 3, 3) = v(3 : 3)/ v(3) = 16/ 16 = 4
Algorithmen Gaxpy-Version Wir erhalten also wieder: 1 0 0 G = 2 1 0 3 1 4
Algorithmen Gaxpy-Version A direkt überschrieben: forj = 1 : n ifj > i A(j : n, j) = A(j : n, j) A(j : n, 1 : j 1)A(j, 1 : j 1) T end A(j : n, j) = A(j : n, j)/ A(j, j) end
Algorithmen Effektivität LR und LDM T Zerlegung benötigen 2n3 3 flops LDL T und GG T Zerlegung benötigen n3 3 flops LR und LDM T Zerlegung doppelt so aufwändig
Algorithmen Effektivität
Algorithmen Effektivität Quellen: Gene H Golub, Charles F Van Loan: Matrix computations Johns Hopkins University Press, 1996 (3rd edition) http://dewikipediaorg/wiki/cholesky-zerlegung http://wwwrzbthawhamburgde/dankert/wwwergvert/html/choleskyverfahrenhtml