Numerische Methoden ETH Zürich SS 2006 Inhalt 1 Lineare Algebra 1.1 Vektorräume (VRe) . . . . . . . . 1.2 Matrizen . . . . . . . . . . . . . . 1.3 Matrixoperationen . . . . . . . . 1.4 Spur und Determinante . . . . . . 1.5 Rang und Kern . . . . . . . . . . 1.6 Spezielle Matrizen . . . . . . . . . 1.7 Eigenwerte und Eigenvektoren . . 1.8 Ähnlichkeitstransformationen . . 1.9 Schur und Jordan Normalform . . 1.10 Normen in Cn . . . . . . . . . . . 1.11 Normäquivalenz . . . . . . . . . . 1.12 Matrixnormen . . . . . . . . . . . 1.13 Skalarprodukt und Orthogonalität 1.14 Gram-Schmidt Algorithmus . . . 1.15 Singulärwertzerlegung (SVD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 5 5 6 7 7 8 9 11 12 14 15 16 2 Computerarithmetik 19 2.1 Gleitkommazahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Runden mit Maschinenepsilon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Gleitkommaoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3 Direkte Lösung Linearer Gleichungssysteme: Gaußelimination (GEM) 3.1 Gaußscher Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Dreiecksmatrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Gaußscher Algorithmus und LR-Zerlegung . . . . . . . . . . . . . . 3.1.3 LR-Zerlegung für schwach besetzte Matrizen . . . . . . . . . . . . . 3.2 Symmetrisch positiv definite Matrizen . . . . . . . . . . . . . . . . . . . . 3.3 Pivotstrategien & Nachiteration . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Spaltenpivotstrategie . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Existenz von LR-Zerlegungen ohne Spaltenpivotsuche . . . . . . . . 3.3.4 Nachiteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 27 34 38 41 41 48 49 50 i 1 Lineare Algebra Wir rekapitulieren grundlegende Begriffe der linearen Algebra, die später wiederholt gebraucht werden. 1.1 Vektorräume (VRe) Definition 1.1.1 Ein Vektorraum (VR) über einem Zahlkörper K(= R, C) ist Menge V 6= ∅ mit Addition “+” (kummutativ + assoziativ) und Skalarmultiplikation “··”, mit i) ex. 0 ∈ V : ∀v ∈ V : v + 0 = v , ii) ∀v ∈ V : 0 · v = 0, 1 · v = v für 0, 1 ∈ K , iii) (inverses Element): ∀v ∈ V ex. −v ∈ V : v + (−v) = 0 , iv) ∀α ∈ K : ∀v, w ∈ V : α(v + w) = αv + αw , ∀α, β ∈ K : ∀v ∈ V : (α + β) v = αv + βv , v) ∀α, β ∈ K, ∀v ∈ V : (αβ)v = α(βv) . Beispiel 1.1.2 V = Rn , V = Cn m n o X V = Pn := pn (x) = ak xk , k=0 V = C p ([a, b]) . Definition 1.1.3 ∅ 6= W ⊂ V Teilraum (TR) ⇐⇒ W ist VR über K. Beispiel 1.1.4 a) Sei [a, b] ⊂ R beschränktes Intervall, und x0 , x1 , . . . , xn “Stützstellen” mit a = x0 < x1 < · · · < xn = b. Dann gilt: Vn = f ∈ C 0 ([a, b]) f |[xi−1 ,xi] ist linear ⊂ C 0 ([a, b]) ist TR . b) Polynome vom Grad n sind ein Teilraum der stetigen Funktionen, d.h. Pn ⊂ C 0 (R). c) Sei v1 , . . . , vn ⊂ V beliebig. Dann gilt W := span{v 1 , . . . , vn } “erzeugendes System” := {v = α1 v 1 + · · · + αn vn : αi ∈ K} ist TR von V . 1 Direkte Summe von TR: Seien W1 , . . . , Wm ⊂ W TR =⇒ S := {w : w = v1 + · · · + vm mit vi ∈ Wi : i = 1, . . . , m} ist TR. S direkte Summe der Wi , S = W1 ⊕ · · · ⊕ Wm , ⇐⇒ ∀s ∈ S ex.! v1 , . . . , vm mit vi ∈ Wi ; S = v1 + · · · + vm . Definition 1.1.5 i) {v1 , . . . , vm } ⊂ V linear unabhängig ⇐⇒ α1 v 1 + · · · + αm v m = 0 ⇐⇒ α1 , . . . , αm = 0 . ii) V = span{u1 , . . . , um } ∧ ui linear unabhängig =⇒ {u1 , . . . , um } Basis von V . ∧ m = dim V . 1.2 Matrizen Sei m, n ∈ N. mn Zahlen aij ∈ K, i = 1, . . . , m, j = 1, . . . , n bilden eine Matrix mit m Zeilen und n Spalten, eine m × n Matrix, a11 . . . a1m . .. . (1.2.1) A= . . . am1 . . . amm Falls aij ∈ R schreiben wir A ∈ Rm×n und analog, falls aij ∈ C schreiben wir A ∈ Cm×n . Wir benutzen die Bezeichnungen: A = A(m × n): matrix1.1.eps 83 × 39 mm \tex{Zeilenvektor} \tex{Spaltenvektor} \tex{$a_{11}$} \tex{$\dots$} \tex{$a_{1n}$} \tex{$\vdots$} \tex{$\vdots$} \tex{Diagonale} \tex{$a_{m1}$} \tex{$\dots$} \tex{$a_{mn}$} Definition 1.2.1 Sei A m × n Matrix, und ip , jq Indizes mit 1 ≤ i1 < · · · < ik ≤ m, 1 ≤ j1 < · · · < j` ≤ n . S = (Spq ) = (aip ,jq ), p = 1, . . . , k, q = 1, . . . , `, heisst Untermatrix von A. 2 Definition 1.2.2 A(m × n) Blockmatrix, falls an . . . . . A= . ak1 a1` .. . , . . . ak` mit Aij Untermatrizen von A . Beispiel 1.2.3 1 2 3 A11 A12 4 5 6 . = A21 A22 7 8 9 Notation 1.2.4 (MATLAB-Notation) Bei einem Vektor a ∈ Rn bezeichnet in MatlabNotation a(i) die Komponente ai . Die Notation a(k : l) ist eine Kurzform für den Vektor der Länge l − k + 1 mit den Komponenten k bis l des Vektors a. Analoge Notationen gelten für Matrizen: Die Einträge einer Matrix A sind A(n, m), und der Ausdruck A(k : l, r : s) bezeichnet die Untermatrix von A, aus den Zeilen k bis l und den Spalten r bis s besteht. Für eine Vektor a ∈ Rn mit n Komponenten gilt length (a) = n. Untermatrix von A: Symbolisch schreiben wir i1 i2 j1 j2 Analog ist für Vektoren v ∈ Kn : v(i1 : i2 ) Teilvektor von v; symbolisch: A(m × n) = (a1 , . . . , an ), wobei ai ∈ Km Spaltenvektoren der Matrix A sind. 1.3 i1 i2 . Matrixoperationen Wir rekapitulieren die wichtigsten Matrixoperationen. Definition 1.3.1 Eine quadratische Matrix A = A(n × n) heisst invertierbar ⇐⇒ ∃B = B(n × n), dass AB = BA = I. Wir schreiben B Inverse von A, B = A−1 (n × n). Es gilt A singulär ⇐⇒ A nicht invertierbar. 3 Proposition 1.3.2 Die Inverse A−1 (n × n) von A = (a1 , . . . , an ) existiert ⇐⇒ die Spalten a1 , . . . , an sind linear unabhängig. Definition 1.3.3 Sei A = A(m × n) = (aij ) ∈ Rm×n . Dann ist A> = A> (n × m) = (aji ) ∈ Rn×m Transponierte von A . Wir geben einige Rechenregeln für die Transponierte einer Matrix A. Proposition 1.3.4 (A> )> = A, (A + B)> = A> + B > , (AB)> = B > A> , (αA)> = αA> ∀α ∈ K . A−1 ex. =⇒ (A> )−1 ex. und (A> )−1 = (A−1 )> = A−> . Für Matrizen mit komplexen Einträgen ist oft die komplex konjugierte transponierte Matrix von Interesse, die sog. hermitesch Transponierte. Definition 1.3.5 Seien A = (aij ) ∈ Cm×n . Dann ist B = AH := A > = (aji ) die hermitesch Transponierte zu A. Beispiel 1.3.6 A ∈ Cn×m , B ∈ Cm×n . Dann gilt: (AB)H = B H AH , (αA)H = α AH , α ∈ C . Definition 1.3.7 A ∈ Rn×n symmetrisch ⇐⇒ A = A> , schiefsymmetrisch ⇐⇒ A = −A> , orthogonal ⇐⇒ A−1 = A> ⇐⇒ A> A = AA> = I . Definition 1.3.8 A ∈ Cn×n hermitesch ⇐⇒ A> = A ⇐⇒ AH = A , unitär ⇐⇒ AH A = AAH = I . Definition 1.3.9 A ∈ Cn×n normal ⇐⇒ AAH = AH A . 4 1.4 Spur und Determinante Sei A = A(n × n) eine quadratische Matrix. Dann heisst tr(A) := n X aii die Spur von A. i=1 Aus der linearen Algebra erinnern wir an die Determinante von A: X det(A) = sgn(π) a1π1 . . . anπn . π∈P Sie erfüllt folgende Rechenregeln. det(A) = det(A> ), det(AB) = det(A) det(B), det(A−1 ) = 1/det(A) det(A) = det(AH ), det(αA) = αn det(A) ∀α ∈ K . 1.5 Rang und Kern e × q) von Definition 1.5.1 A = A(m × n) hat rang q, wenn die grösste Blockuntermatrix A(q e q) 6= 0 die Grösse q hat. Wir schreiben: q = rank(A). A mit det A(q, A = A(m × n) hat maximalen Rang ⇐⇒ rank A = min(m, n). Eigenschaft 1.5.2 rank A = dim range(A) m wo range(A) := {y ∈ K : y = Ax, x ∈ Kn } . Eigenschaft 1.5.3 ker A = {x ∈ Kn : Ax = 0 ∈ Km } heisst ‘Kern’ von A, Nullraum von A . Es gilt: Eigenschaft 1.5.4 rank(A) = rank(A> ), rank(A) = rank(AH ) , rank(A) + dim ker(A) = n . A nichtsingulär ⇐⇒ det(A) 6= 0 ⇐⇒ ker A = {0} ⇐⇒ rank(A) = n ⇐⇒ A = {a1 , . . . , an } ∧ ai linear unabhängig . 5 1.6 Spezielle Matrizen A = A(m × n) obere Trapezmatrix m = n =⇒ ⇐⇒ aij = 0 for i > j untere Trapezmatrix ⇐⇒ aij = 0 for i < j obere Dreiecksmatrix ⇐⇒ aij = 0 for i > j untere Dreiecksmatrix ⇐⇒ aij = 0 for i < j . Beispiel 1.6.1 (Dreiecksmatrizen) `11 0 ... 0 u11 . . . . . . u1n . .. .. .. .. . . . . .. . ? . . L= . , U = . . .. .. .. 0 ? 0 `n 1 ... `nn unn beispiel1.eps 105 × 9 mm \tex{$0$} \tex{$=$} \tex{$=$} \tex{~} \tex{$0$} Proposition 1.6.2 Sei L eine untere Dreiecksmatrix. Dann gilt 1) det L = `11 . . . `nn = n Q `ii = `11 . . . `nn , det U = u11 . . . unn i=1 2) Dreiecksmatrizen schreiben wir symbolisch als beispiel2.eps 104 × 9 mm \tex{$0$} \tex{$0$} \tex{$0$} \tex{$=$} \tex{,} \tex{$=$} \tex{$0$} \tex{$0$} \tex{$0$} Definition 1.6.3 1) A ∈ Cm×n (p, q)-Bandmatrix, wenn aij = 0 für i > j + p, j > i + q . beispiel3.eps 45 × 26 mm \tex{$q+1$} \tex{$0$} \tex{$p+1$} \tex{$\star$} \tex{$0$} \tex{$q$} 2) p = q = 1: A-Tridiagonalmatrix. 3) p = m − 1, q = 1: A untere Hessenberg. 6 1.7 Eigenwerte und Eigenvektoren Sei A ∈ Cn×n quadratische Matrix. Dann ist: λ ∈ C Eigenwert von A ⇐⇒ ∃ 0 6= x ∈ Cn : Ax = λx . σ(A) = {λ ∈ C : λ Eigenwert von A} heisst Spektrum von A. x Rechtseigenvektor von A ⇐⇒ Ax = λx, y H A = λy H . y Linkseigenvektor von A λ ∈ σ(A) erfüllt die charakteristische Gleichung pA (λ) := det(A − λI) = 0 . Proposition 1.7.1 1) A ∈ Cn×n =⇒ pA (λ) ∈ Pn =⇒ σ(A) = {λ1 , . . . , λn }, und 2) det(A) = pA (0) = λ1 λ2 . . . λn , tr(A) = n X λi . i=1 3) σ(A) = σ(A> ), σ(AH ) = σ(A), d.h. λ ∈ σ(A) ⇐⇒ λ ∈ σ(AH ) Der Spektralradius von A ∈ Cn×n ist ρ(A) = max |λi | = max |λ| . 1≤i≤n λ∈σ(A) Für den Spektralradius gilt (nachrechnen!) k ρ(A) = ρ(AH ), ρ(Ak ) = ρ(A) , k ∈ N . 1.8 Ähnlichkeitstransformationen Ähnlichkeitstransformationen lassen das Spektrum einer Matrix invariant. In der Numerik werden Ähnlichkeitstransformationen benutzt, um Eigen- und Singulärwerte und, allgemeiner, die Schur Normalform sowie die Singulärwertzerlegung der Matrix A stabil zu berechnen. Definition 1.8.1 Seien A(n × n), C(n × n) Matrizen mit det C 6= 0. Dann heisst die transformierte Matrix C −1 AC ähnlich zu A . Proposition 1.8.2 σ(A) = σ(C −1 AC), pA (λ) = pC −1 AC (λ). Beweis: λ ∈ σ(C −1 AC) =⇒ det (C −1 AC − λ |{z} C −1 C) = 0 , I ⇐⇒ det (C −1 (A − λI) C) = 0 , ⇐⇒ det (A − λI) = 0 . 2 7 1.9 Schur und Jordan Normalform Wir rekapitulieren den folgenden Satz aus der linearen Algebra: jede Matrix A(n × n) kann ähnlich auf die sog. Jordan’sche Normalform transformiert werden. A ∈ Cn×n hat n Eigenwerte λ1 , . . . , λn . Diese sind Nullstellen des charakteristischen Polynoms p(λ) = det(A − λ 1). alg. Vielfachheit von λi = Vielfachheit der Nullstelle λi von p(λ): alg p(λ) = (λ − λi )mi q(λ), Ordnung q(λ) = n − mialg . geom. Vielfachheit von λi = migeom := # lineare unabhängige Eigenvektoren zum Eigenwert λi . Es gilt: migeom ≤ malg i . Defekt: Jordan Normalform: λ1 0 0 . . . 0 0 −1 T AT = geom di := malg ≥ 0. i − mi ∃T ∈ Cn×n nicht singulär, 1 0 λ1 1 0 λ1 0 1 .. . 0 0 0 λ1 1 0 λ1 0 0 0 λ1 0 0 0 0 λ2 1 0 0 λ2 1 0 0 0 λ2 1 0 .. .. . . 0 0 λ2 1 0 0 0 λ2 0 0 0 0 .. 0 wobei: . =J λ1 1 0 0 λ1 1 0 0 0 λ1 1 0 • pro Eigenvektor je 1 Jordanblock .. auftritt. Seine Grösse hängt . . . . 0 0 λ1 1 0 0 0 λ1 ab von der Länge der Hauptvektorketten. 8 • λi sind in den verschiedenen Jordanblöcken sind nicht notwendig verschieden, • die Jordan’sche Normalform ist praktisch schlecht zu berechnen, da die Transformationsmatrix T in der Jordan’schen Normalform nicht k ◦ k2 -isometrisch ist: es gibt x ∈ Cn : kT xk2 kxk2 . ! In der Numerik verlangt man deshalb weniger als die Jordan’sche Normalform: “nur T = unitär”. Dies “bezahlt” damit, dass die transformierte Matrix J weniger Nulleinträge hat. Genauer gilt: Theorem 1.9.1 (Schur) A ∈ Cn×n beliebig, λ1 , . . . , λn ∈ C Eigenwerte. Dann existiert Q ∈ Cn×n unitär so, dass λ1 ∗ .. QH A Q = . . 0 λn Beweis: Sei u1 Eigenvektor zu λ1 , ku1 k2 = 1. Wähle u2 , . . . , un ∈ Cn so, dass V 1 = (u1 , . . . , un ) unitär. Dann gilt, mit A0 = A, λ1 ∗ . . . ∗ 0 VH A V = . 0 1 1 . . . A 1 0 Wiederhole Schlussweise mit A1 ∈ C(n−1)×(n−1) : 1 0 V2= . . . 0 0 ... 0 Ve 2 e u2 , . . . , u en ) ∈ C(n−1)×(n−2) . , V 2 = (e Rekursion mit Ve 3 , . . . , Ve n ergibt die Behauptung. 1.10 Normen in Cn Sei V VR über dem Koeffizientenkörper K = R, C. Dann ist k ◦ k : V → R+ Norm ⇐⇒ 9 2 ∀x ∈ V : kxk ≥ 0j kxk = 0 ⇐⇒ x = 0 . (N1) ∀x ∈ V, α ∈ K : kαxk = |α| kxk . (N2) ∀x, y ∈ V : kx + yk ≤ kxk + kyk . (N3) Bemerkung 1.10.1 kxk − kyk ≤ kx − yk. Beweis: (N3) ⇐⇒ kxk − kyk = kx − y + yk − kyk ≤ kx − yk + kyk − kyk = kx − yk ; x ↔ y =⇒ Behauptung . 2 Beispiele: V ∈ Cn , p ≥ 1, x = (x1 , . . . , xn )> . n X 1 p p kxkp := |xi | , 1 ≤ p < ∞. i=1 Theorem 1.10.2 k ◦ kp ist Norm auf Cn . Beweis: (N1), (N2) sind offensichtlich, wir zeigen (N3). Hierzu brauchen wir Lemma 1.10.3 Seien indices p, q ≥ 1 konjugiert, 1 1 + = 1, p, q ≥ 1 . p q Dann gilt ap bq ∀a, b > 0 : ab ≤ + . p q Beweis: x 7−→ log x konkav, d.h. ∀α, β ≥ 0, α + β = 1 : ∀u, v > 0 : α log u + β log v ≤ log(αu + βv) : α = p1 , β = 1q , u = ap , v = bq . Dann: 1 q a + b . log(ab) = log a + log b = α log(a ) + β log(b ) ≤ log p q p q Theorem 1.10.4 (Hölder Ungleichung) Seien p, q ≥ 1 konjugiert, x, y ∈ Cn . Dann gilt n X x y i i ≤ kxkp kykq . i=1 Beweis: x = 0 ∨ y = 0 trivial. Seien x 6= 0, y 6= 0. Setze x b = x / kxkp , yb = y / kykp . 10 1 p 2 Lemma 1.10.3 =⇒ |b xi |p |b yi |q + , i = 1, . . . , n , p q n X 1 1 p q |b xi | |b yi | ≤ x bp + b y q = 1 . p p 1 |xi | |yi | ≤ 2 Theorem 1.10.5 (Minkowski Ungleichung) Sei p ≥ 1, x, y ∈ Cn . Dann kx + ykp ≤ kxkp + kykp . Beweis: n n X X p−1 p x + y p = |x + y | |x | + |y | |x + y | ≤ i i i i i i p i=1 i=1 n Hölder X ≤ |xi + yi | i=1 da (p − 1) q = p, 1.11 1 q p−1 q 1q kxkp + kykp p/q p−1 = x + y p kxkp + kykp = x + y p kxkp + kykp , = (p − 1)/p = 1 − p1 . 2 Normäquivalenz Es ist aus der Analysis bekannt, dass alle Normen auf endlichdimensionalen Räumen äquivalent sind. Definition 1.11.1 k ◦ kp , k ◦ kq auf V äquivalent ⇐⇒ ex. 0 < cpq ≤ Cpq < ∞ mit cpq kxkq ≤ kxkp ≤ Cpq kxkq ∀x ∈ V . In der Numerik brauchen wir insbesondere für Cn die Werte der Äquivalenzkonstanten. Beispiel: V = Cn . cpq q 1 2 ∞ p 1 2 ∞ 1 1 1 − 21 1 n −1 − 21 n n 1 1 11 Cpq = (cqp )−1 . 1.12 Matrixnormen Definition 1.12.1 (Matrixnorm) k ◦ k: Cm×n → R: kAk ≥ 0 ∧ kAk = 0 ⇐⇒ A = 0 , kαAk = |α| kAk ∀A ∈ Cm×n , ∀α ∈ C, kA + Bk ≤ kAk + kBk (N1) ∀A, B ∈ Cm×n . (N2) (N3) Definition 1.12.2 Matrixnorm k ◦ kM konsistent oder verträglich mit Vektornorm k ◦ kV ⇐⇒ kAxkM ≤ kAkM kxkV ∀x ∈ Rn . Definition 1.12.3 k ◦ kM submultiplikativ ⇐⇒ ∀A ∈ Cn×m , B ∈ Cm×q : kA BkM ≤ kAkM kBkM . Beispiel: Die Frobeniusnorm in Cn×m ist kAkF = n X |aij |2 i,j=1 12 1 = tr (AAH ) 2 . k ◦ kF ist konsistent mit k ◦ k2 : n X kAxk22 = xH AH , Ax = ≤ n X i=1 n X |aij | j=1 2 i=1 n X n X 2 aij xj j=1 |xj | 2 j=1 = kAk2F kxk22 . Sei k ◦ k∗ auf Cm , k ◦ k∗∗ auf Cn . Für A ∈ Cm×n ist kAk∗∗∗ := sup x6=0 kA xk∗ kA xk∗ = max x6=0 kxk∗∗ kxk∗∗ Operatornorm auf Cm×n , induziert durch k ◦ k∗ , k ◦ k∗∗ . k ◦ k∗∗∗ ist kompatibel, d.h. kA xk∗ ≤ kAk∗∗∗ kxk∗∗ , 12 Beispiel: kAkp := max x6=0 kA Bkp = max x6=0 Bx6=0 ≤ max x6=0 Bx6=0 kA xkp . kxkp kABxkp kBxkp kBxkp kxkp kABxkp kBxkp max kBxkp x6=0 kxkp ≤ kAkp kBkp . Proposition 1.12.4 k ◦ kF ist submultiplikativ. Beweis: Sei bT1 . A = (a1 , . . . , an ) ∈ Cm×n , B = .. ∈ Cn×k . bTn Dann A B = a1 bT1 + · · · + an bTn . Dreiecksungleichung: kA BkF ≤ ka1 bT1 kF + · · · + an bTn kF = ka1 k2 kb1 k2 + · · · + kan k2 kbn k2 n n X 2 12 X 2 21 ai bi ≤ 2 2 i=1 i=1 = kAkF kBkF . 2 Weitere wichtige Normen sind: kAk1 = max j=1,...,n kAk∞ = max i=1,...,n m X |aij | Spaltensummenorm i=1 n X |aij | Zeilensummennorm j=1 kAk1 = kAT k∞ , A = AH =⇒ kAk1 = kAk∞ . Die Norm k ◦ k2 einer Matrix A ∈ Cm×n steht in engem Zusammenhang mit ρ(A), σ1 (A). 13 Theorem 1.12.5 Sei σ1 (A) maximaler Singularwert von A. Dann ist p p kAk2 = ρ(AH A) = ρ(AAH ) = σ1 (A) . Bemerkung 1.12.6 A = AT =⇒ kAk2 = ρ(A), 1.13 AH A = I =⇒ kAk2 = 1. Skalarprodukt und Orthogonalität Definition 1.13.1 Sei V ein Vektorraum über K. Eine Bilinearform (·, ·) : V × V → K heisst Skalarprodukt, falls gilt: ∀x, y, z ∈ V, ∀γ, λ ∈ K : (γx + λy, z) = γ(x, z) + λ(y, z) , (S1) (y, x) = (x, y) (S2) (x, x) > 0 für alle x 6= 0 . (S3) H n Beispiel: V = C : (x, y) = y x = Es gilt Q, A ∈ Cn×n ⇐⇒ n X xi y i . i=1 ∀x, y ∈ Cn : (Ax, y) = (x, AH y) (Qx, Qy) = (x, QH Qy) . Unitäre Matrizen lassen die Euklidische Norm eines Vektors x invariant. Proposition 1.13.2 Q ∈ Cn×n unitär, d.h. QH Q = I. Dann gilt: kQxk2 = kxk2 ∀x ∈ Cn . Beweis: kQxk22 = (x, QH Qx) = (x, x) = kxk22 . Definition 1.13.3 x, y ∈ Rn orthogonal ⇐⇒ x> y = 0 und wir schreiben symbolisch: x ⊥ y. 14 2 1.14 Gram-Schmidt Algorithmus Seien r ≥ 1 Vektoren x1 , . . . , xr ∈ Cm gegeben. Der Gram-Schmidt Algorithmus erzeugt aus (*) eine neue Familie von r Vektoren q 1 , . . . , q r ∈ Cm derart, dass gilt span{x1 , . . . , xr } = span{q r , . . . , q r } (1.14.1) und die q i sind paarweise orthogonal: q i ⊥ q j für 1 ≤ i, j ≤ r, i 6= j . (1.14.2) Der Gram-Schmidt Algorithmus ist definiert wie folgt: Algorithmus 1.14.1 (Gram-Schmidt) input x1 , . . . , xr ∈ Cn . q 1 := x1 , for k = 1, . . . , r − 1 do: qk+1 k X (qi , xk+1 ) q . := xk+1 − (q i , q i ) i i=1 Eigenschaften der qk verifiziert man direkt. Etwa (1.14.2) durch Induktion: sei (1.14.2) schon für 1 ≤ i, j ≤ k bewiesen. Dann folgt für ` ≤ k aus Algorithmus 1.14.1, dass gilt k X (qi , xk+1 ) (q` , qk+1 ) = (q` , xk+1 ) − (q` , qi ) (qi , qi ) | {z } i=1 δ`i = (q` , xk+1 ) − (q` , xk+1 ) (q` , q` ) = 0 , (q` , q` ) woraus (1.14.2) folgt. In Algorithmus 1.14.1 waren r, m beliebig. Für r > m ergeben (1.14.1) und (1.14.2), dass einige der q i verschwiinden müssen. Genauer gilt: Proposition 1.14.2 Falls die xi vollen Rang r haben, gilt (1.14.1) mit q 1 , . . . , qr 6= 0. Falls jedoch s = dim(span{x1 , . . . , xr }) < r ist, so sind r − s > 0 Vektoren der q 1 , . . . , q r gleich 0. Als eine Anwendung des Gram-Schmidt Algorithmus erhalten wir das Basisergänzungslemma: 15 Lemma 1.14.3 Sei r < n. Falls V 1 = [v 1 , . . . , vr ] ∈ Cn×r orthonormale Spalten hat, d.h. n×(n−r) vH derart, dass die Matrix i v j = δij , dann existiert V 2 ∈ C V = V1V2 unitär ist, d.h. V H V = 1, und (rangeV 1 )⊥ = rangeV 2 . Beweis des Basisergänzungslemmas 1.14.3 Es besagt: falls die Matrix V 1 = [v 1 , . . . , vt ] ∈ Cn×t , t < n, orthonormale Spalten hat mit v H i v j = δij , dann existieren v t+1 , . . . , v n derart, dass die Matrix V = [V 1 V 2 ], wo V 2 := [vt+1 , . . . , vn ] unitär ist, d.h. V H V = 1, und (range V 1 )⊥ = range V 2 . Für den Beweis wenden wir den Gram-Schmidt Algorithmus 1.14.1 an auf die r Vektoren {x1 , . . . , xr } = {v 1 , . . . , vt , e1 , . . . , en } , wobei r = n + t ist. Gram-Schmidt reproduziert dann die v 1 , . . . , v t (beweisen!) und ergibt weitere n Vektoren q 1 , . . . , qn mit {q i , q j } = δij , (v i , qj ) = 0, 1 ≤ i ≤ t, 1 ≤ j ≤ n . Da dim(span{x1 , . . . , xr }) = n > t ist, sind n − t Vektoren der q i 6= 0 und t der q i verschwinden. Eine Anwendung der Normen und der Orthogonalität ist der Beweis der sogenannten Singulärwertzerlegung. 1.15 Singulärwertzerlegung (SVD) Die SVD einer Matrix A ergibt: “totale Information” über Matrix A, und ist, anders als die Jordan Normalform, stabil berechenbar. Theorem 1.15.1 Sei A ∈ Cm×n , r = rang(A). Dann existieren σ1 ≥ σ2 ≥ · · · ≥ σr > 0, U ∈ Cn×n , V ∈ Cm×m , unitär mit A = V Σ UH (1.15.1) wo σ1 .. . 0 σr Σ= ∈ Rm×n . . . . 0 0 0 16 Beweis von Theorem 1.15.1. Sei x ∈ Cn , y ∈ Cm Vektoren mit kxk2 = kyk2 = 1, und σ ∈ R mit A x = σ y, wobei σ = kAk2 . Nach Lemma 1.14.3 existiert U 2 ∈ Cn×(n−1) , V 2 ∈ Cm×(m−1) derart, dass die Matrizen U = x U 2 ∈ Cn×n , V = y V 2 ∈ Cm×m unitär sind. Weiterhin gilt H V HA U = y V 2 A x U2 = yH A x yH A U 2 H VH 2 A x V 2 A U2 Da gilt auch A1 !2 σ2 + wH w σ = w 2 Bw 2 A1 = sup 2 06=x∈Cn =: σ 0 wH B =: A1 . 2 = (σ 2 + w H w)2 + kB wk22 ≥ (σ 2 + w H w)2 , 2 2 σ 2 A1 A1 x w (σ 2 + wH w)2 2 2 ≥ ≥ = σ 2 + wH w . 2 2 2 + wH w σ σ kx 2 w 2 (1.15.2) Da auch σ 2 = kAk22 = kV H A U k22 = kA1 k22 , folgt aus (1.15.2), dass gilt Also ist 2 2 A1 ≥ A1 + wH w woraus folgt 0 ≤ w H w ≤ 0, d.h. w = 0 . 2 2 A1 = σ 0 0T B H = V 0 A0 U 0 . Rekursion dieser Schlussweise auf B =⇒ Behauptung. Korollar 1.15.2 Die Singulärwerte σ1 , . . . , σr sind eindeutig. Korollar 1.15.3 Falls σ1 > σ2 > · · · > σr , u1 , . . . , ur , sind ei Singulärvektoren v 1 , . . . , v r eindeutig bis auf einen Faktor λ mit |λ| = 1. Bild und Kern einer Matrix A ∈ Cm×n können durch die singulären Vektoren charakterisiert werden: 17 Korollar 1.15.4 Sei A ∈ Cm∈n , r ≤ min{m, n} der Rang von A. Dann gilt: ( σi vi 1 ≤ i ≤ r , A ui = 0 r + 1 ≤ i ≤ n. AH v i = ( 1 ≤ i ≤ r, σi ui r + 1 ≤ i ≤ m. 0 Korollar 1.15.5 A= r X σi v i uH i . i=1 Korollar 1.15.6 Sei A ∈ C m×n ,A=V H Σ U . Dann = span{ur+1 , . . . , un } , ker A range A = span{v 1 , . . . , vr } , ker AH = span{v r+1 , . . . , v m } , H range A = span{u1 , . . . , ur } . Korollar 1.15.7 σi (A) = Beweis: p λi (AH A), i = 1, . . . , p A = V Σ U H =⇒ AH = U ΣH V H =⇒ H AH A = U ΣH |V {z V} Σ U H I 2 λi (AH A) = ΣH Σ = σi (A) . =⇒ 2 Also gilt für A hermitesch: AH = A =⇒ p AH A = A2 ∧ σi = λ2i = |λi |, i = 1, . . . , n . σ1 ≥ σ2 ≥ · · · ≥ σr > σr+1 = · · · = σp = 0 =⇒ r = rank(A), ker(A) = span{v r+1 , . . . , vn } , range(A) = span{u1 , . . . , ur } . Definition 1.15.8 Sei A = V Σ U H ∈ Cm×m . Dann ist Σ = V H AU = diag(σ1 , . . . , σr , 0, . . . , 0). Die Matrix A+ := U Σ+ V H ∈ Cn×m mit Σ+ = diag heisst Penrose Pseudoinverse von A. 1 1 , . . . , , 0, . . . , 0 σ1 σr 18 2 Computerarithmetik 2.1 Gleitkommazahlen Mathematische Modelle beschreiben Phänomene quantitativ mittels unendlicher Systeme von Zahlen. Beispiele sind die rationalen Zahlen Q (abzählbar unendlich) sowie die reellen Zahlen R (überabzählbar unendlich). Auf einem Computer stehen bei alphanumerischen Rechnungen immer nur endlich viele, sogenannte Gleitkommazahlen zur Verfügung, die wir generisch mit F (für “floating point numbers”) bezeichnen, und die je nach Hersteller und Compiler variieren. Es gilt immer F ⊂ Q ⊂ R, |F| < ∞ . (2.1.1) Definition 2.1.1 Gleitkommazahlen sind die Teilmenge F von R von Zahlen der Form x = (−1)s · (0 · a1 a2 , . . . , at ) · β e = (−1)s · m · β e−t , (2.1.2) wobei • β ∈ N, β ≥ 2 die Basis der Gleitkommazahl x ∈ F ist, • t ∈ N die Anzahl der erlaubten signifikanten Stellen ai von x ∈ F ist, mit 0 ≤ ai ≤ β − 1 , (2.1.3) • m = a1 a2 a3 , . . . , at eine ganze Zahl, die sogenannte Mantisse, ist, mit 0 ≤ m ≤ βt − 1 , (2.1.4) • e eine ganze Zahl, der Exponent von x ∈ F in (2.1.2) ist; er variiert in einem endlichen Intervall, d.h. L≤e≤U (2.1.5) mit L < 0, U > 0 ganz, und • s das Vorzeichen von x ∈ F ist. Falls N Speicherpositionen für x ∈ F zur Verfügung stehen, gilt die Aufteilung s → eine Position m → t Positionen e → N − t − 1 Positionen. Bemerkung 2.1.2 x ∈ F in (2.1.2) ist auch gegeben durch a a2 at 1 + 2 +···+ t . x = (−1)s β e β β β 19 (2.1.6) Bemerkung 2.1.3 Darstellung (2.1.2) ist nicht eindeutig - um Eindeutigkeit zu erhalten, nehmen wir immer an: a1 6= 0 . (2.1.7) a1 heisst führende Stelle. Dann gilt 0 < β t−1 ≤ m ≤ β t − 1 . (2.1.8) Insbesondere ist also dann x = 0 nicht in F. Deshalb treffen wir Konvention 2.1.4 Die Menge aller x ∈ F wie in (2.1.2) ist t o n X s e ai β −i , F(β, t, L, U) = {0} ∪ x ∈ R : x = (−1) β (2.1.9) i=1 die Menge der Gleitkommazahlen mit t signifikanten Stellen, Basis β ≥ 2, Ziffern 0 ≤ ai ≤ β−1 und Exponentenbereich (L, U) mit L ≤ e ≤ U, mit (2.1.7). Bemerkung 2.1.5 Es gilt x ∈ F(β, t, L, U) =⇒ −x ∈ F(β, t, L, U) , (2.1.10) xmin := β L−1 ≤ |x| ≤ β U (1 − β −1 ) =: xmax , (2.1.11) |F(β, t, L, U)| = 2(β − 1) β t−1 (U − L + 1) + 1 . (2.1.12) Bemerkung 2.1.6 (Nicht normalisierte Gleitkommazahlen) Aus (2.1.11) folgt für x ∈ R mit 0 < |x| < xmin , dass x ∈ / F. Dies kann behoben werden durch Aufgeben von a1 6= 0 nur für diese x. Damit erhält man x der Form (2.1.6) mit 1 ≤ m ≤ β t−1 − 1, x ∈ (−β L−1 , β L−1). Damit ist immer noch die Darstellung (2.1.9) eindeutig und die Menge aller solcher x der Form (2.1.9) heisst FD ⊃ F. Es gilt (2.1.13) min |x| 6= 0 : x ∈ FD (β, t, L, U) = β L−t . Auf den meisten Rechnern hat man einfach und doppelt genaue Zahlen. Für binäre Gleitkommazahlen (β = 2) ist N = 32 für einfach genaue Zahlen wie folgt verteilt: 1 s 8 bits e 23 bits m 11 bits e 52 bits m N = 64 für doppelt genaue Zahlen: 1 s 20 Bemerkung 2.1.7 (IEEE/IEC Standard) Die Gleitkommadarstellung wurde 1985 durch das “Institute of Electronics and Electrical Engineers” (IEEE) entwickelt und 1989 durch die “International Electronical Commission (IEC) als Standard IEC 559 angenommen. Es gilt: β t L U IEEE single 2 24 −125 128 IEEE double 2 53 −1021 1024 und, für die Ausnahmewerte 0, ± ∞: Wert Exponent Mantisse 2.2 ±0 L−1 0 ±∞ U +1 0 NaN U +1 6= 0 Runden mit Maschinenepsilon Zwei Zahlen x, y ∈ F, x 6= y, können nicht beliebig nahe zueinander liegen. Es gilt für 0 6= x ∈ F : β −1 εM |x| ≤ min |x − y| : y ∈ F\{0} ≤ εM |x| , (2.2.1) mit dem “Maschinenepsilon” εM . Definition 2.2.1 (Maschinenepsilon εM ) Die kleinste Zahl 0 < εM ∈ F mit 1 + εM > 1 heisst Maschinenepsilon; es gilt εM = β 1−t . (2.2.2) Es erfüllt εM = min |1 − y| : y ∈ F\{1} . Folgender MATLAB code findet εM + 2.2204 · 10−16 : e=1; while(1+e>1) e=e/2; end; 2*e Fig. 1: MATLAB code zur Bestimmung von εM in MATLAB Beachte, dass Operationen zwischen x, y ∈ F nicht Ergebnisse in F liefern müssen; es gilt x, y ∈ F impliziert nicht x ◦ y ∈ F . Hier steht ◦ für eine generische Operation, 0 ∈ {+, −, ∗, /}, ◦ : R × R → R. Abhilfe schafft hier die Rundung von x ◦ y. 21 Definition 2.2.2 (Rundung) Sei F(β, t, L, U) Gleitkommazahlen. Die Rundung f ` ist eine Abbildung. f `: R → F definiert für x ∈ R in der normalisierten Positionsdarstellung s 0 6= x = (−1) β e ∞ X aj β −j ∈ R j=1 mit Exponent L ≤ e ≤ U durch f (x) := (−1)s (0, a1 a2 , . . . , e at ) β e , wobei e at := Proposition 2.2.3 ( at (2.2.3) für at+1 < β/2 , a1 + 1 für at+1 ≥ β/2 . x ∈ F =⇒ f `(x) = x, x, y ∈ R ∧ x ≤ y =⇒ f `(x) ≤ f `(y). Bemerkung 2.2.4 (Abschneiden) Alternativ zur Rundung kann man auch Abschneiden. Dann ist f ` wie in (2.2.3), mit e at = at . Bemerkung 2.2.5 (Überlauf/Unterlauf) (2.2.3) gilt nur für x ∈ R mit Exponent e ∈ [L, U]. Für x ∈ (−∞, −xmax ) ∪ (xmax , ∞) ist f `(x) in (2.2.3) nicht definiert. Sei x, y ∈ F und z = x ◦ y ∈ R. Falls |z| = |x ◦ y| > xmax (F) := max{|x| : x ∈ F} sprechen wir von Überlauf, für |z| = |x ◦ y| < xmin (F) := min{|x| : 0 6= x ∈ F} von Unterlauf. Theorem 2.2.6 Sei F = F(β, t, L, U) ⊂ R und z ∈ R gegeben im Bereich von F, d.h. mit xmin (F) ≤ |z| ≤ xmax (F) . (2.2.4) Dann gibt es δi ∈ R mit f `(z) = z(1 + δ1 ), |δi | < u := f `(z) = z/(1 + δ2 ) . 1 1−t β , i = 1, 2, 2 (2.2.5) (2.2.6) 22 Beweis: (2.2.5): ohne Beschränkung der Allgemeinheit sei z > 0. Dann ist z = mβ e−t , β t−1 ≤ m < β 1 − 1 . Also ist F 3 z− := bmc β e−t ≤ z ≤ dme β e−t =: z+ ∈ F , d.h. z liegt zwischen den Gleitkommazahlen z− , z+ ∈ F. Also ist f `(z) ∈ {z− , z+ } und |f `(z) − z| ≤ Daher folgt |z+ − z− | β e−t ≤ . 2 2 1 mβ e−t 1 |f `(z) − z| 2 ≤ = β 1−t =: u . |z| m β e−t 2 Hier gilt Gleichheit nur dann, wenn m = β t−1 . Dann aber ist z = f `(z) ∈ F, deshalb gilt |δ| < u. (2.2.6) beweist man analog. 2 Bemerkung 2.2.7 Die Zahl u= 1 1−t 1 β = εM 2 2 (2.2.7) heisst Rundungseinheit (Unit Roundoff) von F(β, t, L, U). Beispiele für die Werte der Maschinenarithmetik sowie von u enthält die folgende Tabelle: Machine and arithmetic Cray-1 single Cray-1 double DEC VAX G format, double DEC VAX D format, double HP 28 and 48G calculators IBM 3090 single IBM 3090 double IBM 3090 extended IEEE single IEEE double IEEE extended (typical) β t 2 2 2 2 10 16 16 16 2 2 2 48 96 53 56 12 6 14 28 24 53 64 L -8192 -8192 -1023 -127 -499 -64 -64 -64 -125 -1021 -16381 U 8191 8191 1023 127 499 63 63 63 128 1024 16384 Tab. 2.1: Floating point arithmetic parameters 23 u 4 × 10−15 1 × 10−29 1 × 10−16 1 × 10−17 5 × 10−12 5 × 10−7 1 × 10−16 2 × 10−33 6 × 10−8 1 × 10−16 5 × 10−20 2.3 Gleitkommaoperationen Wir sehen, dass ◦ ∈ {+, −, ∗, /} aus F hinausführt: F ◦ F ∈ / F im Allgemeinen. Definition 2.3.1 (Maschinenoperationen) Für x, y ∈ F mit x ◦ y im Bereich von F heisst Maschinenoperation zu ◦. x ◦ y := f ` f `(x) ◦ f `(y) ∈ F (2.3.8) Für die Analyse von Algorithmen benutzen wir wegen (2.2.5), (2.2.6) das sogenannte Standardmodell des Rundungfehlers: für jede Maschinenoperation gilt x ◦ y = (x ◦ y)(1 + δ), |δ| ≤ u, ◦ = +, −, ∗, / . (2.3.9) Bemerkung 2.3.2 (Petaflop) Die aktuellen Grossrechner führen bis zu 1015 Operationen ◦ / Sekunde aus. In MATLAB double precision ist u = 12 εM = 21 2−53 ≈ 10−16 , so dass Akkumulation von δ’s in (2.3.9) schnell die Grösse 1 ergibt, falls (im schlechtesten Fall) bei jeder Operation ◦ der maximale Fehler δ = u realisiert wird. 24 3 Direkte Lösung Linearer Gleichungssysteme: Gaußelimination (GEM) Wir schreiben lineare Gleichungssysteme in der Form Ax = b; (3.0.1) hier ist A ∈ Rn×n eine reguläre Matrix, b ∈ Rn ist gegeben, und x ∈ Rn ist die gesuchte Lösung. Die Matrix A und die Vektoren x, b haben die Komponenten a11 a12 · · · · · · a1n x1 b1 a21 a22 · · · · · · a2n x2 b2 . . . . . .. .. .. . A = .. x = .. , b = .. . , . .. .. .. .. ... ... . . . an1 an2 · · · · · · ann xn bn 3.1 3.1.1 Gaußscher Algorithmus Dreiecksmatrizen Wir betrachten zuerst einmal zwei Spezialfälle von Matrizen A. Wir sagen, daß A eine linke Dreiecksmatrix (oft auch: untere Dreiecksmatrix) ist, falls aij = 0 für alle i, j mit i < j. Analog sprechen wir von A als einer rechten Dreiecksmatrix (oft auch: obere Dreiecksmatrix), falls aij = 0 für alle i, j mit i > j. Linke Dreiecksmatrizen werden meist mit L bezeichnet und rechte Dreiecksmatrizen mit R. Die Namensgebung ist aus der Struktur der Matrix leicht verständlich: a11 a12 · · · · · · a1n a11 0 · · · · · · 0 0 a22 · · · · · · a2n a21 a22 0 ··· .. .. .. .. .. . . . . . 0 . , R= 0 L = a31 a32 . .. .. . . .. .. .. .. ... .. . . . . . . . 0 0 0 · · · 0 ann an1 an2 · · · ann−1 ann (Im englischsprachigen Raum werden Matrizen dieses Typs typischerweise mit L und U für lower und upper bezeichnet.) Hat die Matrix A in (3.0.1) linke oder rechte Dreiecksgestalt, dann ist das Lösen des Gleichungssystems besonders einfach. Bei Lösen von Lx = b spricht man von Vorwärtssubstitution und beim Lösen von Rx = b 25 spricht man von Rückwärtssubstitution. Die Namensgebung erfolgt aus der Tatsache, daß man beim Lösen von Lx = b die Unbekannten xi sukzessive “vorwärts” bestimmt d.h. zuerst x1 = b1 /a11 , mit dessen Hilfe man x2 bestimmt, dann x3 u.s.w. Bei Lösen von Rx = b werden die Unbekannten xi sukzessive “rückwärts” bestimmt, d.h. zuerst xn = bn /ann , dann damit xn−1 , dann xn−2 u.s.w. Dieses Vorwärts- und Rückwärtseinsetzen formalisieren wir in den folgenden zwei Algorithmen Algorithmus 3.1.1 (Vorwärtssubstitution) Sei A eine Linksdreiecksmatrix mit aii 6= 0 für i = 1, . . . , n. Dann kann die Lösung x von Ax = b wie folgt berechnet werden: for i from 1 to n do { ! i−1 X 1 bi − aik xk xi := (Konvention: leere Summe = 0) aii k=1 } Algorithmus 3.1.2 (Rückwärtssubstitution) Sei A eine Rechtsdreiecksmatrix mit aii 6= 0 für i = 1, . . . , n. Dann kann die Lösung x von Ax = b wie folgt berechnet werden: for i from n to 1 by −1 do { ! n X 1 xi := aik xk (Konvention: leere Summe = 0) bi − aii k=i+1 } Man überzeugt sich leicht davon, daß in beiden Algorithmen für jedes i auf der rechten Seite der Zuweisung Objekte stehen, die bereits in einem vorangehenden Schritt bestimmt wurden. Definition 3.1.3 Die Menge der n × n-Linksdreiecksmatrizen wird mit Ln bezeichnet. Ferner definieren wir L1n := {L ∈ Ln | Lii = 1, i = 1, . . . , n}. Die Linksdreiecksmatrizen und Rechtsdreiecksmatrizen bilden je einen Ring: Theorem 3.1.4 Es gilt für beliebige L, L0 ∈ Ln : 1. L + L0 ∈ Ln ; 2. L · L0 ∈ Ln ; Q 3. det L = ni=1 Lii ; 4. Ist L ∈ Ln regulär, dann ist L−1 ∈ Ln ; 5. falls L ∈ L1n , L0 ∈ L1n , dann ist L · L0 ∈ L1n . Analoge Aussagen gelten für Rechtsdreiecksmatrizen. Beweis: Übung (vgl. Aufgabe 1). Die Aussagen für Rechtsdreiecksmatrizen folgen aus denen für Linksdreiecksmatrizen durch Transposition. 2 26 Theorem 3.1.5 Seien Lk ∈ Rn×n , k = 1, . . . , n − 1 Linksdreiecksmatrizen von der Form 1 .. . 1 Lk = . lk+1 k 1 .. ... . ln k 1 Dann ist L−1 k = 1 .. . 1 −lk+1 k 1 .. .. . . −ln k 1 . Ferner hat das Produkt L1 L2 · · · Ln−1 die Darstellung 1 .. l21 . .. . 1 l L1 L2 · · · Ln−1 = 31 ... lk+1 k 1 .. .. .. .. . . . . ln1 ln2 · · · ln k · · · lnn−1 1 . Beweis: Übung (vgl. Aufgabe 2). Satz 3.1.4 zeigt bereits, daß die Matrizen Lk invertierbar sind und daß das Produkt eine Linksdreiecksmatrix sein muß, dessen Diagonaleinträge 1 sind. 2 3.1.2 Gaußscher Algorithmus und LR-Zerlegung Im vorhergehenden Abschnitt haben wir gesehen, daß gestaffelte Gleichungssysteme (d.h. solche, bei denen die Matrix A linke oder rechte Dreiecksgestalt hat) besonders einfach aufzulösen sind. Der Gaußsche Algorithmus führt nun den allgemeinen Fall auf diese beiden Fälle zurück, indem er eine Matrix A in ein Produkt aus einer Linksdreiecksmatrix und einer Rechtsdreiecksmatrix zerlegt: A = LR. (3.1.2) Ist eine solche Zerlegung bekannt, dann kann das Gleichungssystem (3.0.1) mithilfe einer Vorwärts- und einer Rückwärtssubstitution gelöst werden. Führt man nämlich den Hilfsvektor y = Rx ein, so ergibt sich b = Ax = LRx = L(Rx) = Ly; dies führt auf folgende Vorgehensweise: 1. löse das Gleichungssystem Ly = b für y mithilfe von Algorithmus 3.1.1; 27 2. löse das Gleichungssystem Rx = y für x mithilfe von Algorithmus 3.1.2. Definition 3.1.6 Sei A ∈ Rn×n . Dann besitzt A eine LR-Zerlegung, falls es eine Rechtsdreiecksmatrix R und eine Linksdreiecksmatrix L ∈ L1N gibt, so daß A = LR. Hat eine reguläre Matrix A eine LR-Zerlegung, so ist diese eindeutig: Theorem 3.1.7 Sei A ∈ Rn×n regulär und habe eine LR-Zerlegung LR = A. Dann ist Rii 6= 0 für i = 1, . . . , n, und die Zerlegung ist eindeutig. Q Beweis: Wegen 0 6= det A = det L · det R = ni=1 Rii folgt die erste Behauptung. Seien LR = A = L0 R0 zwei LR-Zerlegungen von A. Dann sind nach obiger Überlegung R und R0 invertierbar (ihre Determinanten verschwinden nicht). Somit gilt L0 R0 = LR L−1 L0 = R(R0 )−1 . =⇒ Nach Satz 3.1.4 ist L−1 L0 ∈ L1n ; ebenfalls nach Satz 3.1.4 ist R(R0 )−1 eine Rechtsdreiecksmatrix. Die einzige Matrix, die zugleich Linksdreiecksmatrix und Rechtsdreiecksmatrix ist und ein Element von L1n ist, ist die Identität. Also ist R = R0 und L = L0 . Die Voraussetzung der Regularität von A ist wesentlich für die Eindeutigkeitsaussage, wie das Beispiel 1 0 0 1 0 1 1 0 0 1 · = = · 0 1 0 0 0 0 −1 1 0 1 zeigt. 2 finis Die LR-Zerlegung einer Matrix A ∈ Rn×n geschieht in n − 1 Schritten. Zur Motivation des Algorithmus schreiben wir das Gleichungssystem (3.0.1) aus: a11 x1 + a12 x2 + · · · + a1n xn = b1 a21 x1 + a22 x2 + · · · + a2n xn = b2 .. .. .. .. .. .. .. .. .. . . . . . . . . . .. .. .. .. .. .. .. .. .. . . . . . . . . . an1 x1 + an2 x2 + · · · + ann xn = bn Es wird nun von der zweiten, dritten, etc. Zeile ein geeignetes Vielfaches der ersten Zeile subtrahiert, um die Variable x1 in Zeilen 2 bis n zu eliminieren. Wir definieren also (für a11 6= 0) ai1 , i = 2, . . . , n li1 := a11 und ziehen von der i-ten Zeile das li1 -fache der ersten Zeile ab. Wir erhalten damit ein Gleichungssystem von der folgenden Form: a11 x1 + a12 x2 + · · · + a1n xn = b1 (1) (1) (1) a22 x2 + · · · + a2n xn = b2 .. .. .. .. .. .. .. . . . . . . . .. .. .. .. .. .. .. . . . . . . . (1) (1) (1) an2 x2 + · · · + ann xn = bn 28 1.DS (1) wobei die neuen Koeffizienten aij gegeben sind durch (1) aij = aij − a1j li1 , (1) bi = bi − b1 li1 , i, j = 2, . . . , n, i = 2, . . . , n. (1) Offenbar kann man (falls a22 6= 0) nun ähnlich weitermachen, um in den Zeilen 3 bis n die Variable x2 zu eliminieren. Dies geschieht, indem man (1) li2 := ai2 (1) a22 , i = 3, . . . , n setzt und dann von der i-ten Zeile (i ≥ 3) das li2 -fache der 2-ten Zeile abzieht. Auf diese Weise erhält man dann ein System der Form a11 x1 + a12 x2 + a13 x3 + · · · (1) (1) a22 x2 + a23 x3 + · · · (2) a33 x3 + · · · .. .. .. . . . (2) an3 x3 + · · · + a1n xn (1) + a2n xn (2) + a3n xn .. .. . . (2) + ann xn = b1 (1) = b2 (2) = b3 .. .. . . (2) = bn Nach (n − 1)-Schritten erhält man dann eine schließlich ein System von Gleichungen, das Rechtsdreiecksgestalt hat: a11 x1 + a12 x2 + a13 x3 (1) (1) a22 x2 + a23 x3 (2) a33 x3 + ··· + ··· + ··· .. .. . . .. . + + + .. . .. . a1n xn (1) a2n xn (2) a3n xn .. . .. . (n−1) ann xn (k−1) = b1 (1) = b2 (2) = b3 .. .. . . .. .. . . (n−1) = bn Die Zahlen akk , k = 1, . . . , n − 1, die während der Eliminationschritte auftreten, heißen (k−1) Pivots1 . Offensichtlich müssen wir verlangen, daß die Pivots nicht verschwinden, d.h. akk 6= 0 für k = 1, . . . , n − 1. Die berechneten Koeffizienten lij und das Endschema ergeben dann die gesuchte LR-Zerlegung: Wir setzen 1 a11 a12 · · · (1) (1) .. l21 0 a22 a21 · · · . . (2) (2) .. . 0 a33 a34 . 1 l31 . L := . , R := .. .. .. .. . . lk+1,k 1 . . .. . .. .. .. .. .. . . . . . . . (n−1) 0 · · · · · · · · · 0 ann ln1 ln2 · · · ln k · · · ln,n−1 1 1 Bonaparte Pivot, 1.4.1769–1.4.1821, mit dem Spitznamen “der gute Teiler” 29 und behaupten, daß A = LR gilt. Um dies einzusehen, schreiben wir die entstandenen Gleichungssysteme in Matrixschreibweise. Im k-ten Eliminiationschritt hat das Gleichungssystem die Form A(k) x = b(k) wobei A(k) , b(k) folgende Form haben: A(k) = ··· ··· .. . a11 a12 a13 (1) (1) a22 a23 .. . ··· ··· .. . (k) ··· ··· .. . a1n (1) a2n .. . (k) (k) A(0) := A, b(0) := b. ak+1 k+1 ak+1 k+2 · · · ak+1 n .. ... ... ... . (k) (k) (k) an k+1 an k+2 · · · ann , b(k) b1 (1) b2 .. . (k) = bk+1 b(k) k+2 . .. (k) bn . (3.1.3) Wir setzen aus Notationsgründen Für die Ausführung des k-ten Schrittes werden die Faktoren (k−1) lik := aik (k−1) akk , i = k + 1, . . . , n, benötigt. Die Verbindung unseres Vorgehens mit der gesuchten LR-Zerlegung von A ist nun, daß A(k) aus A(k−1) durch Multiplikation mit eine speziellen Linksdreiecksmatrix ergibt: Setzt man 1 .. . 1 (3.1.4) Lk := , −l 1 k+1,k .. .. . . −ln k 1 so kann man nachrechnen (Übung!), daß gilt: A(k) = Lk A(k−1) und b(k) = Lk b(k−1) , k = 1, . . . , n − 1. (3.1.5) Man erhält also A(n−1) = Ln−1 Ln−2 · · · L1 A(0) = Ln−1 Ln−2 · · · L1 A. Da alle auftretenden Linksdreiecksmatrizen Lk regulär sind (vgl. Sätze 3.1.4, 3.1.5), können wir dies umschreiben als LR = A, wobei −1 −1 L := L−1 1 L2 · · · Ln−1 , 30 R = A(n−1) . Hier ist R eine Rechtsdreiecksmatrix nach Konstruktion (vgl. dreiecksmatrix nach Satz 3.1.4. Aus Satz 3.1.5 erhalten wir 1 .. . 1 L−1 k = lk+1,k 1 .. ... . ln k 1 und damit—wiederum aus Satz 3.1.5—für die Einträge in L 1 .. l21 . .. . 1 l31 −1 −1 L = L−1 1 L2 · · · Ln−1 = . .. lk+1,k .. .. . . ln1 ln2 · · · ln k (3.1.3)), und L ist eine Links (3.1.6) ganz explizit: 1 .. . .. . · · · ln,n−1 1 (3.1.7) Wir haben also eine explizite Konstruktion einer LR-Zerlegung von A gefunden: Die Einträge der Linksdreiecksmatrix L sind die Faktoren lik , die im Laufe des Algorithmus bestimmt werden und die Rechtsdreiecksmatrix R ist gerade das Endschema des Gaußschen Algorithm, die Matrix A(n−1) . Wir können unser Vorgehen in dem folgenden abstrakten Algorithmus, der Gaußschen Elimination ohne Pivotsuche festhalten: Algorithmus 3.1.8 (Rohfassung der LR-Zerlegung ohne Pivotsuche) A(0) := A for k from 1 to n − 1 do { 1. bestimme Matrix Lk (vgl. (3.1.4)) durch Berechnung der Faktoren (k−1) lik = Aik (k−1) Akk , i = k + 1, . . . , n 2. setze A(k) := Lk A(k−1) } LR-Zerlegung von A ist A = LR mit R = A(n−1) und L gegeben durch (3.1.7). Für eine Computerimplementierung von Algorithmus 3.1.8 müssen die Matrixmultiplikationen noch explizit ausgeschrieben werden. In tatsächlichen Implementierungen wird man direkt “auf” der Matrix A operieren, d.h. sie während des Algorithmus verändern. Dies geschieht aus Speicherplatzgründen, weil man nicht Speicher für die n Matrizen A(0) , A(1) , . . . bereitstellen kann/will. In dieser Form erhält man dann 31 Algorithmus 3.1.9 (LR-Zerlegung ohne Pivotsuche) input: Matrix A output: Linksdreiecksmatrix L und Rechtsdreiecksmatrix R mit LR = A L := Idn = Identitätsmatrix der Größe n × n for k from 1 to n − 1 do { for i from k + 1 to n do { Aik Lik := % k-te Spalte von L Akk for j from k to n do { % k-te Zeile von R und updaten der Zeilen k + 1, . . . , n von A Aij := Aij − Lik Akj } } } setze R := Rechtsdreiecksanteil von A return (L,R) In der formulierten Form geht die Matrix A in Algorithmus 3.1.9 verloren, da sie mit der Rechtsdreiecksmatrix R überschrieben wird. In der rechentechnischen Praxis wird zudem weiter Speicher gespart: Nach Beendigung von Algorithmus 3.1.9 enthält die Matrix im oberen Teil die gesuchte Rechtsdreiecksmatrix R. Der untere Teil enthält noch den unteren Teil der Originalmatrix A (man überzeuge sich davon, daß Algorithmus 3.1.9 den unteren Teil von A nicht verändert). Der untere Teil der Matrix A hat genausoviele Einträge wie zum Abspeichern der Linksdreiecksmatrix L genötigt werden (die Diagonaleinträge von L sind alle 1 und müssen daher nicht gesondert abgespeichert werden). In den meisten Implementierungen von LRZerlegungen wird deshalb einfach nur die Matrix A ∈ Rn×n übergeben, und zurückgegeben wird wieder eine Matrix à ∈ Rn×n , in der die wesentliche Information über die Faktoren L und R gespeichert ist: ( Rij falls j ≥ i Ãij = (3.1.8) Lij falls j < i Eine Implementierung dieses Algorithmus ist dann wie folgt: Algorithmus 3.1.10 (LR-Zerlegung ohne Pivotsuche: klassische Implementierung) input: Matrix A output: überschreibt die Matrix A mit ihrer LR-Zerlegung (vgl. (3.1.8)) for k from 1 to n − 1 do { for i from k + 1 to n do { Aik Aik := % k-te Spalte von L Akk for j from k+1 to n do { %k-te Zeile von R und updaten der Zeilen k + 1 . . . , n von A Aij := Aij − Aik Akj } } } return (A) Das Lösen eines linearen Gleichungssystems (3.0.1) wird deshalb wie folgt durchgeführt: 32 1 n(n − 1)(n + 1) 3 1 n(n − 1) Vorwärtssubst. (Algorithmus 3.1.1 unter Ausnutzung von Lii = 1) 2 1 Rückwärtssubst. (Algorithmus 3.1.2) n(n + 1) 2 1 3 1 1 Gesamtkosten n + n2 − n ≈ n3 3 3 3 Tabelle 3.1: Kosten für das Lösen eines linearen Gleichungssystems mit Algorithmus 3.1.11. LR-Zerlegung (Algorithmus 3.1.11) Algorithmus 3.1.11 (Gauß-Algorithmus ohne Pivotsuche) 1. Bestimme LR-Zerlegung von A mithilfe von Algorithmus 3.1.10. 2. Löse Ly = b mithilfe der Vorwärtssubstitution Algorithmus 3.1.1. Dabei beachtet man, daß die Diagonalelemente von L gilt: Lii = 1. 3. Löse Rx = y mithilfe der Rückwärtssubstitution Algorithmus 3.1.2. In Tabelle 3.1 sind die Kosten beim Lösen eines linearen Gleichungssystems mithilfe von Algorithmus 3.1.11 zusammengestellt. Wir haben nur die Multiplikationen/Divisionen gezählt und die Additionen vernachlässigt. Wie man sieht, sind die Kosten (für große n) dominiert durch die LR-Zerlegung. Bereits für n = 100 machen die Vorwärts- und Rückwärtssubstitionen zusammen nur 3% der Gesamtkosten aus. Ein positiver Nebeneffekt ist, daß, falls eine LR-Zerlegung erst einmal aufgestellt ist, das lineare Gleichungssystem (3.0.1) für viele verschiedene rechte Seiten b billig gelöst werden kann. Bemerkung 3.1.12 In der LR-Zerlegung in Algorithmus 3.1.10 haben wir nicht den Fall abge(k−1) fangen, daß ein sog. Pivot Akk = 0 sein könnte. Algorithmus 3.1.10 versagt deshalb bereits bei dem trivialen Beipiel 0 1 . A= 1 0 Der Behandlung solcher Fälle werden wir uns im Abschnitt 3.3 zuwenden. Abschließend stellen wir einen zu Algorithmus 3.1.10 äquivalenten Algorithmus zur Bestimmung der LR-Zerlegung vor. Algorithmus 3.1.13 (Doolittle Variante der LR-Zerlegung) for k from 1 to n do { Lkk = 1 for j from k to % Berechne k-te Zeile von R P n do { L R %Konvention: leere Summe = 0 Rkj := Akj − k−1 kl lj l=1 } for i from k + 1 to n do { ! % Berechne k-te Spalte von L k−1 X 1 Lik := Lil Rlk Aik − %Konvention: leere Summe = 0 Rkk l=1 33 } } Man beachte, daß der Algorithmus wohldefiniert ist, da die Rechtsdreiecksmatrix R zeilenweise und die Linksdreiecksmatrix L spaltenweise aufgebaut wird. Für jedes k werden von L nur die Spalten 1 bis k − 1 und von R nur die Zeilen 1 bis k − 1 benötigt, die bereits berechnet wurden. Algorithmus 3.1.13 stellt die Matrizen L und R in genau derselben Reihenfolge auf wie Algorithmus 3.1.10. Von Interesse ist jedoch, daß er aus folgenden Überlegungen hergeleitet werden kann: Für jedes i, j gilt für die LR-Zerlegung von A: Aij = n X Lil Rlj . l=1 Aus der Tatsache, daß L Linksdreiecksmatrix, R Rechtsdreiecksmatrix und Lii = 1, folgt damit Aij = i−1 X Lil Rlj + Rij , l=1 j−1 Aij = X Lil Rlj + Rjj Lij . l=1 Auflösen dieser beiden Gleichungen nach Rij und Lij ergibt dann die Ausdrücke in Algorithmus 3.1.13. 3.1.3 LR-Zerlegung für schwach besetzte Matrizen Die LR-Zerlegung in Algorithmus 3.1.10 geht von einer vollbesetzten Matrix A aus. In der Praxis (z.B. in der Strukturmechanik und bei der Diskretiersierung von partiellen Differentialgleichungen) sind die auftretenden Matrizen oft schwach besetzt (engl. sparse), d.h. viele Einträge von A sind gleich Null. Dies kann in zweierlei Hinsicht ausgenutzt werden: 1. Speicherersparnis: Man speichert nicht die gesamte Matrix A ab, sondern nur die wesentliche Information, d.h. welche Einträge von Null verschieden sind und was ihre Werte sind. 2. Die Matrizen L, R der LR-Zerlegung von A sind ebenfalls schwach besetzt. Auch hier kann Speicher und Rechenzeit eingespart werden, indem nur die nicht-trivialen Einträge von L und R berechnet werden. Im folgenden stellen wir zwei Typen von schwach besetzten Matrizen vor: Bandmatrizen und Skyline-Matrizen. Selbstverständlich decken diese beiden Typen nicht alle in der Praxis auftretenden Fälle von schwach besetzten Matrizen ab. Bandmatrizen Definition 3.1.14 Eine Matrix A ∈ Rn×n heißt eine Bandmatrix mit Bandbreite p + q + 1, falls es p, q ∈ N0 mit aij = 0 für j > i + p oder i > j + q. Die Zahl p heißt die oberere Bandbreite und q die untere Bandbreite. 34 Bandmatrizen haben also nichtverschwindende Einträge höchstens auf den p Nebendiagonalen über der Hauptdiagonalen und auf den q Nebendiagonalen unter der Hauptdiagonalen: a11 a12 · · · a1,p+1 0 ··· ··· 0 a21 a22 · · · ··· a2,p+2 0 ··· 0 . . . . . .. .. .. 0 . .. .. aq+1,1 aq+1,2 . . 0 (3.1.9) . . 0 . an−p,n aq+2,2 .. .. .. .. . . . 0 . . .. .. .. .. .. . . . . 0 0 ··· 0 an,n−q · · · an,n−1 ann − q(q+1) reelle Zahlen Um diese Matrix darzustellen, brauchen wir nur (p + q + 1)n − p(p+1) 2 2 abzuspeichern. Auch die LR-Zerlegung einer Bandmatrix erbt die spezielle Struktur: Theorem 3.1.15 Sei A ∈ Rn×n eine Bandmatrix mit oberer Bandbreite p und unterer Bandbreite q und LR-Zerlegung LR = A. Dann haben L, R Bandstruktur, und es gilt: Lij = 0 Rij = 0 falls j > i oder j < i − q falls j < i oder j > i + p. Beweis: Die Ausssage des Satzes folgt durch sorgfältige Untersuchung von Algorithmus 3.1.13. Man sieht recht einfach, daß die Aussage richtig ist für die erste Zeile von R und die erste Spalte von L. Dann schließt man induktiv für die weiteren Zeilen/Spalten mithilfe von Algorithmus 3.1.13. 2 finis Satz 3.1.15 sagt aus, daß die Matrizen L, R der LR-Zerlegung der Bandmatrix A aus (3.1.9) folgende Struktur haben: 1 0 ··· ··· ··· ··· ··· 0 l21 1 0 ··· ··· ··· ··· 0 . .. .. .. . . . 0 . . .. .. lq+1,1 lq+1,2 . . 0 L = .. .. .. 0 . . . lq+2,2 .. .. .. .. . . . 0 . 0 .. .. 0 . . 0 0 0 0 · · · 0 ln,n−q · · · ln,n−1 1 35 2.DS LR-Zerlegung (Algorithmus 3.1.16) ≈ nqp Vorwärtssubst. (Alg. 3.1.1; Ausnutzen der Bandstruktur von L) ≈ nq Rückwärtssubst. (Alg. 3.1.2; Ausnutzen der Bandstruktur von R) ≈ np Gesamtkosten Multiplikationen/Divisionen ≈ n(pq + p + q) Tabelle 3.2: Kosten beim Lösen von Gleichungssystemen mit Bandmatrizen R = r11 r12 · · · r1,p+1 0 ··· ··· 0 0 r22 · · · · · · r2,p+2 0 · · · 0 .. .. .. . . 0 . 0 .. .. . . .. .. . . . . 0 . .. .. .. .. . . . rn−p,n . .. .. .. .. .. . . . . . .. .. .. .. .. .. . . . . . . 0 0 ··· ··· ··· 0 rnn Die Tatsache, daß die Matrizen L und R auch wieder schwach besetzt sind, wird bei Algorithmen zur Bestimmung von LR-Zerlegungen von Bandmatrizen ausgenutzt. Es brauchen insbesondere nur die nicht-trivialen Einträge von L, R berechnet zu werden. Dies führt auf die folgende Variante von Algorithmus 3.1.10, bei dem die beiden inneren Schleifen verkürzt werden können. Algorithmus 3.1.16 (LR-Zerlegung für Bandmatrizen) input: Matrix A mit oberer Bandbreite p und unterer Bandbreite q output: überschreibt die Matrix A mit ihrer LR-Zerlegung for k from 1 to n − 1 do { for i from k + 1 to min {n, k + q} do { Aik Aik := Akk for j from k + 1 to min {n, k + p} do { Aij := Aij − Aik Akj } } } return (A) Die Bandstruktur von L und R wird ebenfalls bei der Vorwärts- und Rückwärtssubstitution ausgenutzt (Übung: Man formuliere die entsprechenden Varianten von Algorithmen 3.1.1, 3.1.2). Die Kosten der Algorithmen sind in Tabelle 3.2 zusammengestellt. Es werden nur Multiplikationen und Divisionen gezählt und vereinfachend n max {p, q} angenommen. Skyline-Matrizen Ein wichtiger weiterer Spezialfall der schwach besetzten Matrizen sind die sog. Skyline-Matrizen (engl.: skyline matrices). Dies sind Matrizen, wie auf der linken Seite in Fig. 3.1 illustriert. 36 Figur 3.1: Striche deuten von Null verschiedene Einträge an. Links: Skyline-Matrix, bei der die Besetzungsstruktur bei LR-Zerlegung erhalten bleibt. Rechts: Keine Skyline-Matrix und die LR-Zerlegung erhält nicht die Besetzungsstruktur. 1 1 1 1 1 2 2 1 1 3 3 1 > A= 1 2 3 5 18 L=R = 1 2 3 1 1 5 1 1 6 1 1 2 3 18 5 6 92 1 2 3 4 5 6 1 Figur 3.2: A ∈ R7×7 und ihre LR-Zerlegung. Eine Matrix A ∈ Rn×n heißt eine Skyline-Matrix, falls es für i = 1, . . . , n Zahlen pi , qi ∈ N0 gibt, so daß Aij = 0 falls j < i − pi oder i < j − qj . (3.1.10) Es gilt dann Theorem 3.1.17 Sei A ∈ Rn×n eine Skyline-Matrix, d.h. es gebe pi , qi mit (3.1.10). Möge A die LR-Zerlegung A = LR haben. Dann gilt für die Einträge von L und R: Lij = 0 für j < i − pi , Rij = 0 für i < j − qj . Beweis: Wie in Satz 3.1.15 kann die Aussage mithilfe von Algorithmus 3.1.13 eingesehen werden (Übung). 2 Satz 3.1.17 besagt, daß die Faktoren L und R der LR-Zerlegung einer Skyline-Matrix A dieselbe Besetzungsstruktur haben wie A. Figur 3.2 zeigt dies für ein einfaches Beispiel. Das Erhalten der Besetzungsstruktur kann natürlich algorithmisch ausgenutzt werden, sowohl was Speicher angeht als auch bzgl. Rechenzeit, indem nur die nicht-trivialen Einträge von L und R ausgerechnet und abgespeichert werden. Dies führt auf Varianten von Algorithmus 3.1.13, die analog zum Fall der Bandmatrizen sind. Man beachte, daß man die Matrizen in Fig. 3.1 nicht als Bandmatrix behandeln will, da die Bandbreiten p, q je gleich n wären. Das rechte Beispiel in Fig. 3.1 ist keine Skyline-Matrix im Sinne obiger Definition, und die Besetzungsstruktur geht bei der LR-Zerlegung verloren: L ist i.a. eine volle Linksdreiecksmatrix und R eine volle Rechtsdreiecksmatrix (Man spricht bei Zerstörung der Besetzungsstruktur von fill-in). 37 3.2 Symmetrisch positiv definite Matrizen In vielen Anwendungen treten symmetrische, positiv definite Matrizen auf, die oft zudem schwach besetzt sind. Der Grund hierfür ist, daß diese Matrizen meist von physikalischen Modellen stammen, bei denen der Ausdruck x> Ax eine Energie darstellt. Definition 3.2.1 Sei A ∈ Rn×n . Die transponierte Matrix A> ist gegeben durch (A> )ij := Aji ∀i, j ∈ {1, . . . , n}. Eine Matrix A ∈ Rn×n heißt 1. symmetrisch, falls A = A> ; 2. positiv definit, falls x> Ax > 0 ∀0 6= x ∈ Rn ; 3. positiv semi-definit, falls x> Ax ≥ 0 ∀0 6= x ∈ Rn . Eine symmetrische, positiv definite Matrix A ∈ Rn×n heißt kurz SPD. Theorem 3.2.2 Sei A ∈ Rn×n SPD. Dann gilt: 1. A ist regulär (invertierbar); 2. Aii > 0 für alle i ∈ {1, . . . , n}; 3. |Aij | < 12 (Aii + Ajj ) für i 6= j und damit maxij |Aij | = maxi Aii . Beweis: Übung. 2 Theorem 3.2.3 Sei A ∈ Rn×n SPD. Dann existiert ein L ∈ L1n und eine Diagonalmatrix D mit Dii > 0, i = 1, . . . , n, so daß A = LDL> . Die Matrizen L und D sind eindeutig. Zudem ist L, R := DL> die LR-Zerlegung von A, die mithilfe von Algorithmus 3.1.10 bestimmt werden kann. Beweis: Wir partitionieren die Matrix A wie folgt: A11 A(0) = A = z z> B , wobei z > = (A12 , . . . , A1n ). Im ersten Schritt der Gaußelimination erhält man A11 z> 1 0 −l21 1 A(1) = L1 A(0) = .. , L = , . 1 . 0 . . . . . B −ln1 1 0 38 (3.2.11) wobei li1 = Ai1 /A11 . Man beachte, daß nach Satz 3.2.2 A11 > 0. Eine Rechnung zeigt nun, daß A11 0 · · · 0 0 (1) > L1 AL> . .. 1 = A L1 = 0 . B 0 Hier ist insbesondere die Matrix B 0 unverändert aus (3.2.11) übernommen. Man rechnet nun nach (oder verwendet den Trägheitssatz von Sylvester2 ), daß B 0 wieder SPD ist, denn die 0 Matrix L1 AL> 1 ist wieder SPD. Mithin kann man dieselbe Argumentation für B wiederholen. Induktiv schließt man dann, daß A11 d22 > > > Ln−1 · · · L1 AL1 L2 · · · Ln−1 = =: D. . . . dnn Nach Konstruktion sind die Matrizen Lk , k = 1, . . . , n − 1 gerade die Linksdreiecksmatrizen, die in Algorithmus 3.1.11 berechnet werden. Das hier vorgestellte Induktionsargument zeigt, daß der Algorithmus nicht abbricht, weil in jedem Eliminationsschritt das Pivotelement nicht verschwindet (die Diagonalelemente einer SPD-Matrix sind nach Satz 3.2.2 strikt positiv!). Die Eindeutigkeit von L (die dann die Eindeutigkeit von D nach sich zieht) folgt aus Satz 3.1.7, weil A = LDL> = L(DL> ) eine LR-Zerlegung von A ist. 2 Satz 3.2.3 ist die Basis für die Cholesky3 -Zerlegung einer SPD-Matrix A. Korollar 3.2.4 Sei A ∈ Rn×n SPD. Dann existiert eine eindeutige Linksdreiecksmatrix L ∈ Ln > mit Lii > 0, i = 1, . . . , n, so daß A = L · L . Die Matrix L heißt der Cholesky-Faktor von A. > Umgekehrt gilt: Sei L ∈ Ln regulär. Dann ist A := L · L SPD. Beweis: Nach Satz 3.2.3 existiert ein L ∈ L1n und eine Diagonalmatrix D mit Dii > 0, so daß A = LDL> . Wir setzen nun 1/2 L := LD 1/2 , D 1/2 ij := δij Dii . > Dann gilt offensichtlich L · L = A. Eindeutigkeit des Cholesky-Faktors: Sei L eine Links> dreiecksmatrix mit Lii > 0, i = 1, . . . , n und L · L = A. Definiere die Diagonalmatrix D durch Dij = δij Lii . Dann ist D invertierbar und L := LD −1 ist ein Element von L1n . Wir haben also > A = L · L = LDD > L> = L(DD > )L> . 2 3 Sylvester, James Joseph 1814–1897 Cholesky, André-Louis, 1875-1918 39 Dies ist eine Zerlegung wie in Satz 3.2.3. Aus der Eindeutigkeitsaussage von Satz 3.2.3 folgt damit, daß L und DD > eindeutig bestimmt sind. Weil die Diagonalmatrix D positive Diagonaleinträge hat, ist damit auch D eindeutig bestimmt. > Der Beweis der Aussage, daß für eine reguläre Linksdreiecksmatrix L die Matrix L · L SPD ist: Übung. 2 Für SPD-Matrizen benutzt man anstelle der LR-Zerlegung in der Praxis die Cholesky-Zerlegung. Algorithmisch bestimmt man sie mithilfe einer Variante von Algorithmus 3.1.13: Algorithmus 3.2.5 (Cholesky-Zerlegung) input: SPD-Matrix A ∈ Rn×n output: Cholesky-Faktor L von A for k from 1 to n do { !1/2 k−1 X 2 Lkk := Akk − Lkj %Konvention: leere Summe = 0 j=1 } for i from k + 1 to n do { ! k−1 X 1 Lik := Lij Lkj Aik − Lkk j=1 % Berechne k-te Spalte von L %Konvention: leere Summe = 0 } Daß der Algorithmus das Gewünschte leistet, sieht man in ähnlicher Weise wie bei Algorith> mus 3.1.13, indem man den Anzatz A = LL macht und dann Bestimmungsgleichungen für die Einträge von L herleitet: n X Aik = Lij Lkj . j=1 Wegen der Symmetrie von A reicht es, k ≤ i zu betrachten. Nutzt man die Tatsache aus, daß L eine untere Dreiecksmatrix ist, dann folgt: für k = i: Akk = i−1 X 2 2 Lkj + Lkk , j=1 für k < i: Aik = k−1 X Lij Lkj + Lik Lkk . j=1 Auflösen nach Lij und Lii ergibt dann die Ausdrücke, die in Algorithmus 3.2.5 auftreten. Betrachten wir die Kosten der Cholesky-Zerlegung. Aus Algorithmus 3.2.5 geht hervor, daß die Cholesky-Zerlegung einer SPD-Matrix A mit 1 ∼ n3 6 Multiplikationen/Divisionen und n Quadratwurzeln berechnet wird. Vernachlässigt man die Kosten für das Wurzelziehen, dann ist die CholeskyZerlegung ungefähr halb so teuer wie die LR-Zerlegung. Die Reduktion um den Faktor 2 liegt 40 daran, daß wegen der Symmetrie der Matrix und der Zerlegung nur ein Faktor der Zerlegung berechnet werden muß. Da viele in der Praxis auftretenden SPD-Matrizen Bandstruktur haben, formulieren wir noch die Variante der Cholesky-Zerlegung, die die Bandstruktur ausnutzt. Algorithmus 3.2.6 (Cholesky-Zerlegung für SPD Bandmatrizen) input: SPD-Matrix A ∈ Rn×n ; oberere Bandbreite p = untere Bandbreite q output: Cholesky-Faktor L von A for k from 1 to n do { k−1 X Lkk := Akk − j=max {1,k−p} } 2 1/2 Lkj for i from k+ 1 to min {n, k + p} do{ k−1 X 1 Lik := Lij Lkj Aik − Lkk j=max {1,k−p} } Bemerkung 3.2.7 Algorithmus 3.2.5 zur Bestimmung der Cholesky-Zerlegung kann auch dazu benutzt werden, zu prüfen, ob eine gegebene symmetrische Matrix positiv definit ist. Man führt Algorithmus 3.2.5 durch; bricht er ab, weil eine Division durch Null auftritt oder weil eine Wurzel aus einer negativen Zahl gezogen werden soll, dann war die Matrix nicht SPD. Andernfalls ist sie SPD (vgl. die zweite Aussage aus Korollar 3.2.4). 3.3 3.3.2 Pivotstrategien & Nachiteration Spaltenpivotstrategie (k−1) Bei unserer Herleitung der LR-Zerlegung nahmen wir stets an, daß die Pivots Akk muß nicht immer der Fall sein, wie die Matrix 0 1 A= 1 0 6= 0. Dies zeigt. Die Matrix A ist jedoch regulär, und man kann Gleichungssysteme von der Form Ax = b lösen, indem man zuerst die Zeilen 1 und 2 vertauscht. Die nach Vertauschung dieser Zeilen erhaltene Matrix Aper hat dann ein von Null verschiedenes Pivot (Aper )11 ; in diesem Fall hat Aper sogar bereits Rechtsdreiecksgestalt. Man erwartet, daß auch bei kleinen Pivots numerische Schwierigkeiten auftauchen. Folgendes Beispiel erfüllt diese Erwartung: Beispiel 3.3.11 Wir bestimmen in 4-stelliger Gleitkommaarithmetik F (d.h. β = 10, t = 4) die Lösung x des folgenden linearen Gleichungssystems: 3.1 · 10−4 1 −3 A= , b= . 1 1 −7 41 Es ist dann l21 = 1/(3.1 · 10−4 ) ≈ 3.226 · 103 und die LR-Zerlegung von A ist 1 0 3.1 · 10−4 1 3.1 · 10−4 1 L= , R= ≈ . 3.226 · 103 1 0 1 − l21 0 −3.225 · 103 Die Lösung von Ly = b führt dann auf −1 y=L b= −3 9.671 · 103 und damit ist die Lösung x von Rx = y 1 −3.226 −4 (−3 − (−2.999)) −1 3.1·10 . = x=R y= −2.999 −2.999 Das “exakte” Ergebnis ist x = (−4.001246 . . . , −2.99875 . . .)> . Hier sind beim Rückwärtseinsetzen in der x1 -Komponente durch Auslöschung alle Ziffern verloren gegangen. Der Grund ist die schlechte Pivotwahl. Wir starteten mit einem sehr kleinen Pivot und erhielten dadurch sehr große (und auch sehr kleine) Einträge in der LR-Zerlegung. Dies führt dann zu Auslöschung bei der Vorwärts- und Rückwärtssubstitution. Beispiel 3.3.11 zeigt, daß kleine Pivots zu numerischen Instabilitäten bei Vorwärts- und Rückwärtssubstitution führen können. Daß kleine Pivots gemieden werden sollen, legt folgende Betrachtung nahe: Wir nehmen an, daß die rechte Seite b und die gesuchte Lösung Einträge haben, die von vergleichbarer Größenordnung sind (wie in Beispiel 3.3.11). Wird bei der Vorwärtsoder Rückwärtssubstitution mit großen Zahlen multipliziert, so entstehen Zwischenergebnisse, die groß sind (wie in Beispiel 3.3.11). Da das Endergebnis wieder moderat ist, erwartet man, daß dies durch Subtraktion vergleichbarer Zahlen erreicht wird—bei diesen Subtraktionen tritt dann die Gefahr der Auslöschung auf. Dies ist im obigen Beispiel 3.3.11 eingetreten. Um das Problem des kleinen Pivots in den Griff zu bekommen, wird deshalb nicht eine LR-Zerlegung der Matrix A gesucht, sondern die LR-Zerlegung einer Matrix Aper , die durch geeignetes Vertauschen von Zeilen von A entstanden ist. Man beachte, daß für das Lösen von Gleichungssystemen das Vertauschen von Zeilen keine Rolle spielt (wenn man beim Vektor auf der rechten Seite die entsprechende Vertauschung ebenfalls durchführt). Daß Zeilenvertauschen numerisch vorteilhaft sein kann, zeigt folgende Fortsetzung von Beispiel 3.3.11: Beispiel 3.3.12 Wir lösen das lineare Gleichungssystem aus Beispiel 3.3.11, indem wir die beiden Zeilen von Ax = b vertauschen, d.h. wir betrachten −7 1 1 . , bper = Aper = −3 3.1 · 10−4 1 Nun ist l21 = 3.1 · 10−4 und 1 0 , Lper = 3.1 · 10−4 1 Rper = 1 1 0 1 − l21 ≈ Für die Lösungen y, x von Ly = b, Rx = y erhalten wir damit −4.001 −7 . , x= y= −2.999 −2.998 42 1 1 0 0.9997 . Wir erhalten also das korrekte Ergebnis bis auf Rundungsgenauigkeit. Da die Permutationsmatrix 0 1 P = 1 0 bei Multiplikation von links an die Matrix A die Zeilen 1 und 2 vertauscht, haben wir also folgende Zerlegung erhalten: Lper Rper = Aper = P A. In Beispiel 3.3.12 konnte das lineare Gleichungssystem numerisch stabil gelöst werden, indem die beiden Zeilen des Gleichungssystems vertauscht wurden. Für eine allgemeine Matrix A ist die richtige Zeilenanordnung natürlich nicht im Voraus bekannt. Sie muß also während des Algorithmus mitbestimmt werden. Man geht deshalb algorithmisch wie folgt vor (siehe (k−1) Algorithmus 3.3.15 unten): In jedem Eliminationsschritt wird nicht einfach Akk als Pivot (k−1) benutzt, sondern es wird in der Spalte k das betragsgrößte Element Aik mit Zeilenindex i ≥ k gesucht; anschließend werden die Zeilen k und i vertauscht und dann der Eliminationsschritt durchgeführt. Das Vertauschen von Zeilen in einer Matrix beschreibt man formal am besten im Permutationsmatrizen: Definition 3.3.13 (Permutationsmatrizen) Sei π : {1, . . . , n} → {1, . . . , n} eine Permutation der Zahlen 1, . . . , n (d.h. π ist eine bijektive Abbildung) und bezeiche e1 , . . . , en die n Einheitsvektoren: (ei )j = δij . Dann heißt Pπ := eπ(1) , eπ(2) , . . . , eπ(n) die zu π gehörige Permutationsmatrix. Lemma 3.3.14 (Eigenschaften von Permutationsmatrizen) Sei π : {1, . . . , n} → {1, . . . , n} eine Permutation und Pπ die zugehörige Permutationsmatrix. Dann gilt: (i) Pπ ei = eπ(i) für i ∈ {1, . . . , n}. (ii) Pπ−1 = Pπ> . (iii) Die Matrix Pπ A entsteht aus A durch Zeilenpermutation, d.h. die i-te Zeile von A ist die π(i)-te Zeile von Pπ A, i = 1, . . . , n. Beweis: Übung. 2 Der Algorithmus zur LR-Zerlegung mit Pivotsuche ist damit wie folgt: Algorithmus 3.3.15 (LR-Zerlegung mit Spaltenpivotsuche) A(0) := A for k from 1 to n − 1 do { (k−1) 1. suche i ∈ {k, . . . , n} mit |Aik (k−1) | ≥ |Ai0 k 43 | für alle i0 ∈ {k, . . . , n} 2. setze π k : {1, . . . , n} → {1, . . . , n} die Permutation, die i und k vertauscht: falls j = k, i πk (j) = k falls j = i, j sonst 3. A(k−1) := Pπk A(k−1) % vertausche Zeilen k und i in A(k−1) 4. bestimme Matrix Lk (vgl. (3.1.4)) durch Berechnung der Faktoren (k−1) lik = Aik (k−1) Akk , i = k + 1, . . . , n 5. setze A(k) := Lk A(k−1) } setze π := πn−1 ◦ πn−2 ◦ · · · ◦ π1 setze P := Pπ setze R := A(n−1) , L gegeben durch (3.1.7) return(P,L,R) % LR-Zerlegung von P A ist P A = LR. Bemerkung 3.3.16 Der Algorithmus wird in der Praxis etwas anders realisiert: wie beim Fall ohne Pivotsuche, Algorithmus 3.1.8, operiert man direkt auf der Matrix A und erhält am Schluß das Endschema R anstelle von A. Außerdem wird wie in Algorithmus 3.1.10 der Linksdreiecksfaktor L ebenfalls im unteren Teil von A abgespeichert. Die Permutationsmatrix P wird nicht explizit aufgestellt, sondern es wird nur ein Vektor mit natürlichen Zahlen zurückgegeben, der angibt, wie die Zeilen von A permutiert werden. Wir führen das Vorgehen an einem einfachen Beispiel vor. Beispiel 3.3.17 1 2 A = 2 −7 1 24 Bei der Pivotsuche in der 1. Spalte, stoßen wir auf die 2. 2 A(0) = 1 1 2 2 0 Zeile. Man vertauscht also die 1. und 2. Zeile: −7 2 2 2 24 0 und führt dann den Eliminationsschritt durch. Es ist l21 = 0.5, l31 = 0.5 und damit 2 −7 2 1 . A(1) = 0 5.5 0 27.5 −1 (1) (1) (1) Bei der Pivotsuche in der 2. Spalte müssen wir nun nur die Elemente A22 und A32 vergleichen. Da A32 (1) betragsmäßig größer ist als A22 , vertauschen wir die 2. und die 3. Zeile: 2 −7 2 A(1) = 0 27.5 −1 . 0 5.5 1 44 5.5 Beim nächsten Eliminationsschritt entsteht l32 = 27.5 = 0.2. Wir erhalten 1 2 −7 2 L = 0.5 R = A(2) = 0 27.5 −1 , 0.5 0 0 1.2 als Endschema und als Matrix L 0 0 1 0 . 0.2 1 Es bleibt, die Permutationsmatrix P zu bestimmen. In Algorithmus 3.3.15 wurde die Permutationen π1 , π2 aufgestellt mit π1 (1) = 2, π1 (2) = 1, π1 (3) = 3 π2 (1) = 1, π2 (2) = 3, π2 (3) = 2. Damit ergibt sich für π = π2 ◦ π1 : π(1) = 3, π(2) = 1, π(3) = 2 und somit für die Permutationsmatrix Pπ 0 1 P = Pπ = 0 0 1 0 0 1 . 0 Man hätte die Permutation π auch weniger formal durch Verfolgen der Zeilenvertauschungen erhalten können: die ursprünglich 1. Zeile ist zur 3. Zeile geworden (im ersten Schritt wurden Zeilen 1 und 2 vertauscht, in zweiten Schritt Zeilen 2 und 3), die ursprüngliche 2. Zeile ist zur 1. Zeile geworden, und die ursprünglich 3. Zeile ist am Schluß die 2. Zeile. Die Permutation π ist damit π(1) = 3, π(2) = 1, π(3) = 2. Man überzeugt sich davon, daß in der Tat LR = P A. Das Lösen von Gleichungssystemen erfolgt dann so: Algorithmus 3.3.18 input: reguläre Matrix A ∈ Rn×n , b ∈ Rn , output: Lösung x von Ax = b 1. Bestimme P , L, R mithilfe von Algorithmus 3.3.15 so, daß P A = LR. 2. Setze b0 := P b und löse Ly = b0 mithilfe von Algorithmus 3.1.1. 3. Löse Rx = y mihilfe von Algorithmus 3.1.2. Bemerkung 3.3.19 Im 2. Schritt von Algorithmus 3.3.18 wird die Multiplikation P b nicht als Matrix-Vektor Multiplikation ausgeführt, sondern es werden natürlich nur die entsprechenden Zeilen in b vertauscht. Daß Algorithmus 3.3.15 tatsächlich die LR-Zerlegung einer Zeilenpermutation von A liefert, garantiert der folgende Satz. Theorem 3.3.20 Zu jeder regulären Matrix A ∈ Rn×n existiert eine Permutationsmatrix Pπ , so daß eine Dreieckszerlegung LR = Pπ A möglich ist. Hier ist L ∈ L1n und R ist eine Rechtsdreiecksmatrix. Zudem gilt |Lij | ≤ 1 ∀i, j ∈ {1, . . . , n}. 45 Beweis: Die LR-Zerlegung und die Permutationsmatrix, deren Existenz im Satz behauptet wird, konstruieren wir mithilfe von Algorithmus 3.3.15. Im ersten Schritt von Algorithmus 3.3.15 wird (falls nötig) eine Zeilenvertauschung von zwei Zeilen durchgeführt, so daß die neue Matrix A(0) := Pπ1 A, (0) so daß A11 das betragsmäßig größte Element der ersten Spalte von A(0) ist. Die Permutationsmatrix Pπ1 vermittelt dabei die Vertauschung der beiden Zeilen (Pπ1 = Id falls keine (0) Vertauschung nötig ist). Zudem ist A11 6= 0, denn sonst wäre die erste Spalte identisch Null (0) im Widerspruch zur Annahme, daß A regulär ist. Weil A11 das betragsgrößte Element in der (0) (1) ersten Spalte von A(0) ist, gilt für die Einträge li1 = Ai1 /A11 , daß |li1 | ≤ 1. Wir erhalten also nach dem ersten Eliminationsschritt mit L1 gegeben durch (3.1.4): (1) A11 ∗ · · · ∗ 0 A(1) = L1 A(0) = L1 Pπ1 A = . . (1) .. B 0 (1) Aus der Regularität von L1 , Pπ1 und A folgt also 0 6= det A(1) = A11 det B (1) . Mithin ist die Untermatrix B (1) regulär. Wir können also mit Algorithmus 3.3.15 fortfahren und erhalten schließlich R = A(n−1) = Ln−1 Pπn−1 Ln−2 Pπn−2 · · · L1 Pπ1 A, (3.3.12) wobei die Matrizen Lk alle Einträge haben, die betragsmäßig durch 1 beschränkt sind. Um die Frobeniusmatrizen Lk von den Permutationsmatrizen Pπk zu separieren, schieben wir in der Darstellung von R aus (3.3.12) zwischen die Faktoren Lk und Pπk die Identität Pk−1 Pk , wobei die Permutationsmatrix Pk gegeben ist durch: Pk := Pπn−1 Pπn−2 · · · Pπk+1 (Pn−1 = Idn ). Wir erhalten damit −1 −1 −1 −1 R = Ln−1 Pn−1 Pn−1 Pπn−1 Ln−2 Pn−2 Pn−2 Pπn−2 Ln−3 Pn−3 Pn−3 Pπn−3 Ln−4 Pn−4 Pn−4 · · · L1 P1−1 P1 Pπ1 A. Weil Pk Pπk = Pk−1, ergibt sich mit der Abkürzung L̂k := Pk Lk Pk−1 (3.3.13) für R: R = L̂n−1 L̂n−2 · · · L̂1 P0 A. Da P0 als Verkettung von Permutationsmatrizen eine Permutationsmatrix ist, bleibt zu zeigen, daß das Produkt der Matrizen L̂k tatsächlich eine Linksdreiecksmatrix ist. Sei π : {1, . . . , n} → {1, . . . , n} eine beliebige Permutation, die nur die Zahlen ≥ k + 1 permutiert (d.h. π(j) = j für j ≤ k). Dann überzeugt man sich davon, daß für eine Frobeniusmatrix Lk von der Form (3.1.4) gilt: 1 .. . 1 L̂k = Pπ Lk Pπ−1 = Pπ Lk Pπ> = (3.3.14) . −lπk (k+1),k 1 .. .. . . −lπk (n),k 1 46 Die oben eingeführten Permutationen Pk sind genau von der Art, daß bei den zugehörige Permutationen der Zahlen 1 bis n nur die Zahlen ≥ k + 1 permutiert werden. Also haben die Matrizen L̂k aus (3.3.13) die Darstellung (3.3.14). Aus Satz 3.1.5 folgt damit, daß −1 −1 L := L̂−1 1 L̂2 · · · L̂n−1 tatsächlich ein Element von L1n ist. Zusätzlich liefert Satz 3.1.5 die 1 lπ (2),1 1 1 lπ (3),1 lπ (3),2 1 L= 1 2 .. .. .. . . . lπ1 (n),1 lπ2 (n),2 · · · lπn−1 (n),n−1 1 explizite Darstellung Die Permutationsmatrix P0 gehört nach Definition zu einer Permutation der Zahlen 1 bis n, die gerade die Vertauschung der Zeilenindizes während Algorithmus 3.3.15 angibt. 2 Bemerkung 3.3.21 Satz 3.3.20 zusammen mit Algorithmus 3.3.15 kann (zumindest bei der Handrechnung) dazu benutzt werden, festzustellen, ob eine gegebene Matrix A regulär ist, da Satz 3.3.20 zeigt, daß Algorithmus 3.3.15 nur abbricht, wenn die gegebene Matrix nicht regulär ist. Bemerkung 3.3.22 (Rechtfertigung der Spaltenpivotsuche) Beispiel 3.3.12 zeigte, daß Spaltenpivotsuche die numerische Stabilität von Algorithmen erhöhen kann. Wie unsere Plausibilitätsbetrachtungen im Anschluß an Beispiel 3.3.11 gezeigt haben, ist die Spaltenpivotsuche eine sinnvolle Strategie unter einer Annahme an die Skalierung des Problems; wir nahmen nämlich an, daß die Einträge der Lösung und der rechte Seite des linearen Gleichungssystems von vergleichbarer Größe sind. Diese Art der Skalierung kann man erreichen, indem man nicht das lineare Gleichungssystem Ax = b, sondern das System (D1 AD2 )x0 = b0 := D2 b, x = D2 x0 betrachtet, wobei D1 , D2 geeignete Diagonalmatrizen sind. Algorithmisch ist es jedoch sehr schwer, D1 , D2 zu finden; Programme zum Lösen linearer Gleichungssysteme überlassen deshalb die Skalierung meist dem Benutzer und verwenden höchstens die Spaltenpivotsuche. Bemerkung 3.3.23 (Vollpivotsuche) Die Spaltenpivotsuche bei der LR-Zerlegung verursacht zusätzliche Kosten O(n2 ), die im Verhältnis zu den Gesamtkosten O(n3 ) relativ klein sind. (Übung: Geben Sie genau an, wieviele Vergleiche bei der Spaltenpivotsuche gemacht werden müssen.) Alternativ zur Spaltenpivotsuche kann auch eine Vollpivotsuche durchgeführt werden. Dabei wird in jedem Schritt des Gaußalgorithmus das betragsmäßig größte Element der Restmatrix gesucht und durch Zeilen- und Spaltenvertauschungen zum Pivot gemacht. Man erhält auf diese Weise eine Zerlegung Pπ APπ0 = LR 47 der Matrix A, wobei die Permutationen π, π 0 die Zeilen- und Spaltenvertauschungen repräsentieren. Die Einträge der berechneten Faktoren L̃, R̃ sind betragsmäßig kleiner als bei Spaltenpivotsuche, so daß man erwartet, daß Gaußelimination mit Vollpivotsuche numerisch stabiler ist. Sie wird jedoch aus Kostengründen nur sehr selten eingesetzt, denn der zusätzliche Aufwand ist nun O(n3). 3.3.3 Existenz von LR-Zerlegungen ohne Spaltenpivotsuche Pivotstrategien sind oft nötig, um numerische Stabilität beim Lösen von Gleichungssystemen zu gewährleisten. Nachteile sind: 1. Mehraufwand: Für die Pivotsuche werden zusätzliche O(n2 ) Operationen benötigt. 2. Verlust der Besetzungsstruktur: Bei Matrizen mit bestimmten Besetzungsstrukturen (z.B. Skyline-Matrizen) kann die Besetzungsstruktur durch die Zeilenvertauschungen verloren gehen. Damit erhöhen sich die Kosten für die Berechnung und die Speicherung der Faktoren L und R. Es ist deshalb von Interesse, Klassen von Matrizen auszumachen, bei denen die LR-Zerlegung auch ohne Pivotsuche durchgeführt werden kann. Der folgende Satz charakterisiert die Menge der Matrizen, die eine LR-Zerlegung besitzen: Theorem 3.3.24 Sei A ∈ Rn×n regulär. Dann besitzt A eine LR-Zerlegung genau dann wenn alle Hauptminoren Ak , k = 1, . . . , n regulär sind. Hierbei ist Ak ∈ Rk×k gegeben durch (Ak )ij = Aij , i, j = 1, . . . , k. Beweis: Übung. 2 In der Praxis ist die Regularität der Hauptminoren nur schwer überprüfbar. Für die folgenden beiden Klassen von Matrizen ist jedoch die die Existenz einer LR-Zerlegung gesichert: 1. Symmetrisch positiv definite Matrizen: Satz 3.2.3 garantiert, daß die Cholesky-Faktorisierung ohne Pivotsuche durchgeführt werden kann. 2. Diagonal dominanten Matrizen: der folgende Satz 3.3.25 zeigt, daß diagonal dominante Matrizen eine LR-Zerlegung besitzen. Wir rekapitulieren: Eine Matrix A ∈ Rn×n heißt Zeilen diagonaldominant, falls X |Aii | > |Aij | ∀i ∈ {1, . . . , n}. j6=i Theorem 3.3.25 Es gilt: eine diagonal dominante Matrix hat eine LR-Zerlegung, die mithilfe der Gauss Elimination ohne Pivotsuche, d.h. Algorithmus 3.1.9, bestimmt werden kann. Beweis: Übung (vgl. Aufgabe 13). 2 48 3.3.4 Nachiteration Bei schlecht konditionierten Problemen kann es passieren, daß die Lösung, die man mit Algorithmus 3.3.18 erhält, stark fehlerbehaftet ist. Durch Rundungsfehler hat man z.B. nicht die eR. e Anstatt nun die approxiexakte LR-Zerlegung von P A sondern nur eine Approximation L mative LR-Zerlegung zu verwerfen und mit erhöhter Rechengenauigkeit die gesamte Rechnung erneut durchzuführen, wendet man Nachiteration (engl.: iterative refinement/improvement) an. eR e Es soll Ax = b berechnet werden, und es existiere eine (approximative) LR-Zerlegung L eRx e = b mithilfe der Algorithmen 3.1.1, 3.1.2 von A. Es wird zunächst eine Lösung x von L e und R) e kann bestimmt. Durch Rundungsungenauigkeiten (auch schon beim Aufstellen von L es sein, daß die berechnete Lösung x zu ungenau ist. Um eine Verbesserung der Lösung zu erhalten, wird nun eine Korrektur ∆x der berechneten Lösung x gesucht, d.h. wir verlangen, daß x + ∆x die Gleichung A(x + ∆x) = b erfüllt. Somit erhalten für die gesuchte Korrektur ∆x die sog. Residualgleichung A∆x = r := b − Ax. (3.3.15) Man beachte, daß das Residuum r 6= 0, weil x nicht die exakte Lösung unseres ursprünglichen Problems ist. Da für A bereits eine (approximative) LR-Zerlegung vorliegt, erfolgt das Lösen der Residualgleichung (3.3.15) wieder einfach nur durch eine Vorwärts- und eine Rückwärtssubstitution. Der folgende Algorithmus formalisiert dieses Vorgehen. Algorithmus 3.3.26 (Nachiteration) input : (approximative) LR-Zerlegung einer Matrix A, rechte Seite b output: Lösung x von Ax = b 1. Bestimme Lösung x von LRx = b mithilfe von Algorithmen 3.1.1, 3.1.2 2. Bestimme das Residuum r = b − Ax mit erhöhter Rechengenauigkeit 3. Falls das Residuum r zu groß ist (in einer geeigneten Norm), finde Korrektur ∆x als Lösung von LR∆x = r mithilfe von Algorithmen 3.1.1, 3.1.2. 4. setze x := x + ∆x und gehe zu 2. Wesentlich in der Praxis ist dabei, daß das Residuum im 2. Schritt mit erhöhter Genauigkeit ausgewertet wird; wurde die LR-Zerlegung z.B. nur in einfacher Genauigkeit bestimmt, so wird das Residuum in doppelter Genauigkeit ausgewertet. Da wir bereits gesehen hatten, daß die Vorwärts- und Rückwärtssubstitution relativ billig im Vergleich zur LR-Zerlegung sind, ist die Nachiteration vom Standpunkt des Aufwandes eine attraktive Möglichkeit, die Genauigkeit einer rundungsfehlerbehafteten Lösung zu verbessern. 49