III. Iterative Löser III.1 Direkte Löser und ihre Nachteile III.2 Klassische Iterationsverfahren III.3 GMRES und CG-Verfahren Kapitel III (0) 1
Erinnerung: Lineares Gleichungssystem bei FDM Diskretisierung einer linearen PDGL 2. Ordnung mit Finiten Differenzen/FEM führt zu einem linearen Gleichungssystem Ax = b, welches groß ist (typischerweise: Dimension = O(h d )), dünn besetzt ist (O(h d ) nicht-null Einträge) schlecht konditioniert ist (κ(a) = O(h 2 )), häufig symmetrisch, positiv definit ist, und bei geeigneter Nummerierung eine Bandstruktur besitzt. Kapitel III (numalg65) 2
Gauß-Elimination Zerlege die invertierbare Matrix A R n n in das Produkt zweier Dreiecksmatrizen L (untere Dreiecksmatrix mit 1 als Diagonaleinträge) und U (obere Dreiecksmatrix), so dass PA = LU, mit einer Permutationsmatrix P. Damit lässt sich das Gleichungssystem durch Substitution lösen: Lz = P T b, Ux = z Aufwand bei vollbesetzten Matrizen: Berechnung der LU Zerlegung: O(n 3 ) Rückwärts/Vorwärts Substitution: O(n 2 ) Kapitel III (numalg66,) 3
Cholesky-Zerlegung Für spezielle Matrizen kann die LU-Zerlegung auch einfacher berechnet werden. Eine wichtige Klasse sind die symmetrischen, positiv definiten Matrizen. Eine Pivotisierung ist hier unnötig und würde die Symmetrie der Matrix zerstören. Auch die Zerlegung hat eine symmetrische Gestalt A = L T DL mit einer unteren Dreiecksmatrix L und einer Diagonalmatrix D. Der Aufwand wächst ebenfalls mit der Ordnung O(n 3 ), ist jedoch geringer als bei der Gauß-Elimination. Kapitel III (numalg68) 4
Verschiedene Löser: MATLAB Aus der Matlab Dokumentation: Direkte Löser Kapitel III (numalg69) 5
Verschiedene Löser: MATLAB Aus der Matlab Dokumentation: Iterative Löser Kapitel III (numalg69) 6
Verschiedene Löser: COMSOL Aus den Einstellungen von COMSOL: Kapitel III (numalg69) 7
Verschiedene Löser: FEniCS FEniCS, PETSc linear algebra backend: $ python >>> from dolfin import * >>> list_lu_solver_methods(); LU method Description -------------------------------------------------------------------------- default default LU solver umfpack UMFPACK (Unsymmetric MultiFrontal sparse LU factorization) mumps MUMPS (MUltifrontal Massively Parallel Sparse direct Solver) petsc PETSc builtin LU solver >>> list_krylov_solver_methods(); Krylov method Description -------------------------------------------------------------- default default Krylov method cg Conjugate gradient method gmres Generalized minimal residual method minres Minimal residual method tfqmr Transpose-free quasi-minimal residual method richardson Richardson method bicgstab Biconjugate gradient stabilized method Kapitel III (numalg69) 8
Einfluss der Bandstruktur auf Fill-In Permutationsmatrizen P erlauben die Vertauschung der Zeilen (bei Multiplikation von links) und der Spalten (bei Multiplikation von rechts) einer Matrix A. Für diese gelten P 1 = P. Ax = b (PA)x = Pb, AP Px = b (AP )ˆx = b mit ˆx = Px. Die Bandstruktur der Matrix A bleibt bei der LU-Zerlegung erhalten, d.h. außerhalb der Bandstruktur treten keine weiteren Einträge auf, jedoch können die Nulleinträge innerhalb der Bandstruktur verschwinden (Fill-In). Ziel: Finden von geeigneten Permutationen der Matrix A, so dass möglichst geringe Bandbreite entsteht. Hierzu gibt es Minimierungsalgorithmen z.b. von Cuthill-McKee. Kapitel III (numalg11) 9
LU Zerlegung: Matrix-Struktur Beispiel: 5-Punkte-Stern aus Finite-Differenzen Diskretisierung (lexikographische Numerierung) n = 64 n = 256 n = 1024 A nz = 288 nz = 1216 nz = 4992 L nz = 519 nz = 4111 nz = 32799 Kapitel III (numalg12) 10
LU Zerlegung: Matrix-Struktur Beispiel: 5-Punkte-Stern aus Finite-Differenzen Diskretisierung (Zufalls-Numerierung) n = 64 n = 256 n = 1024 A nz = 288 nz = 1216 nz = 4992 L nz = 622 nz = 5900 nz = 79321 Kapitel III (numalg14) 11
LU Zerlegung: Rechenzeit 40 Zufall Lexikographisch 30 20 10 0 0 1000 2000 3000 4000 n Rechenzeit stark (asymptotisch) von Nummerierung abhängig! Kapitel III (numalg15) 12
Iterative Löser: Einführung Massenmatrix Strukturiertes Gitter auf (0,1) 2, Gitterweite h = 1/(N 1), N N, Knoten x ij = (hi,hj), 1 i,j N, Matrixeinträge zu x ij aus 1/36 1/9 1/36 0 5 Struktur der Matrix 1/9 4/9 1/9 10 15 1/36 1/9 1/36 0 5 10 15 n = 16 = N 2,A R n n Kapitel III (numalg15) 13
Iterative Löser: Einführung Aufwandsabschätzung für die Massenmatrix Bandbreite: ω = O(N) Die Anzahl der Nicht-Nulleinträge wächst mit O(n) Anwendung von z.b. LU-Zerlegung erfordert Aufwand von O(n 2 ) Matrix-Vektor-Multiplikation hat Aufwand von O(n) Kapitel III (numalg15) 14
Iterative Löser: Einführung Massenmatrix 0.6 0.4 Zeit, bis Fehler < 10 8 LU (voll) GS CG Zeit 0.2 0 0 200 400 600 800 1000 n 2 Gut geeignet um große, gut konditionierte, dünnbesetzte Matrizen zu lösen Kapitel III (numalg15) 15
Lineare Iterationsverfahren Ein allgemeines konsistentes lineares Iterationsverfahren zur Lösung von Ax = b hat die Form x k+1 = Mx k +Nb mit M = (Id NA). Mit der Zerlegung A = L+D +U erhalten wir folgende Verfahren: Jacobi-Verfahren: x k+1 = D 1 (L+U)x k +D 1 b vorwärtiger Gauß Seidel: x k+1 = (D+L) 1 Ux k +(D +L) 1 b rückwärtiger Gauß Seidel: x k+1 = (D +U) 1 Lx k +(D+U) 1 b SOR Verfahren für ω (0,2): (D+ωL)x k+1 = ( (1 ω)d ωu ) x k +ωb Kapitel III (numalg24) 16
Historische Bemerkungen C.F. Gauß in einem Brief vom 26.12.1823 an Gerling: Ich empfehle Ihnen diesen Modus zur Nachahmung. Schwerlich werden Sie je wieder direct eliminieren, wenigstens nicht, wenn Sie mehr als 2 Unbekannte haben. Das indirecte Verfahren lässt sich halb im Schlafe ausführen, oder man kann während desselben an andere Dinge denken. [C.F. Gauß: Werke Bd. 9, S. 280f, Göttingen 1903] Block Gauß Seidel Verfahren: (1819-1822) Supplementum theoriae combinationis observationum erroribus minime obnoxiae C.G. Jacobi: 1845 Über eine neue Auflösungsart der bei der Methode der kleinsten Quadrate vorkommenden linearen Gleichungen Kapitel III (numalg25) 17
A R n n,a = A T, mit I,B R N N, n = N 2, Vergleich iterativer Lösungsverfahren Poisson-Matrix A := B := B I I............ I I B 4 1 1............ 1. 1 4 Kapitel III (numalg39) 18
SOR für verschiedene Dämpfungsparameter Poisson-Matrix Fehlernorm 10 0 10 4 w = 0.2 w = 0.6 w = 1 w = 1.4 w = 1.8 Fehlernorm 10 0 10 4 w = 0.8 w = 0.9 w = 1 w = 1.1 w = 1.2 10 8 0 50 100 150 200 Anzahl der Iterationen Figure 1: Dämpfungsparameter im Bereich [0.2, 1.8] 10 8 0 10 20 30 Anzahl der Iterationen Figure 2: Dämpfungsparameter im Bereich [0.8, 1.2] Kapitel III (numalg30) 19
Konvergenz für SOR-Verfahren Für die Matrix M ω des SOR-Verfahrens gilt M ω = (D+ωL) 1( (1 ω)d ωu ). Konvergenz liegt vor, falls für den Spektralradius ρ(m ω ) < 1 0 < ω < 2 gilt. Der Spektralradius ρ(m ω ) nimmt sein Minimum für den optimalen Dämpfungsparameter 2 ω opt = 1+ 1 ρ 2 J an, wobei ρ J den Spektralradius der Iterationsmatrix M J = D 1 (L+U) des Jacobi-Verfahrens bezeichnet. Dann gilt für die Konvergenzrate Allgemein gilt ρ(m ωopt ) = 1 1 ρ 2 J 1+. 1 ρ 2 J ρ(m ω ) = { ω 1 für ωopt ω 2, 1 ω + 1 2 ω2 ρ 2 J +ωρ J 1 ω + 1 4 ω2 ρ 2 J für 0 ω ω opt. Kapitel III (numalg27) 20
Asymptotische Konvergenzrate für SOR-Verfahren 1 Konvergenzrate ρ 0.8 0.6 0.4 0.2 ρ J = 0.3 ρ J = 0.5 ρ J = 0.7 ρ J = 0.9 0 0 0.5 1 1.5 2 Dämpfungsparameter ω Kapitel III (numalg28) 21
Jacobi und Gauß Seidel im Vergleich Ax = b A= 1 a a a 1 a, M J = 0 a a 0 a a a 0 a, M GS = 0 a 2 a 2 a a a 1 a a 0 0 a 3 +a 2 a 3 +2a 2 Spektralradius ρ 3 2.5 2 1.5 1 0.5 Spektralradii von A, M J, M GS A M J M GS Konvergenzbereich: Jacobi Konvergenzbereich: GS Anzahl der Iterationen 500 400 300 200 100 Jacobi GS Konvergenzbereich: Jacobi Konvergenzbereich: GS 0 0.5 0 0.5 1 a 0 0.5 0 0.5 1 a Kapitel III (numalg45) 22
Jacobi, Gauß-Seidel und optimales SOR im Vergleich Poisson-Matrix Number of iterations 7000 6000 5000 4000 3000 2000 1000 opt. SOR Gauss Seidel Jacobi 0 0 20 40 60 Number of unknowns n 2 Anzahl d. Iterationen η Faustregel: 1 0.9 0.8 0.7 0.6 0.5 0.4 0 10 20 30 40 50 60 Konvergenzraten ρ Faustregel: η J 2η GS ρ GS ρ 2 J ρ J 1 c J h 2 ρ SOR 1 c SOR h Kapitel III (numalg35) 23
Vergleich iterativer Lösungsverfahren Poisson-Matrix, Fehler gegen Anzahl der Iterationen, n = p = 100 10 0 10 4 10 8 Jacobi GS SGS CG 0 20 40 60 80 Kapitel III (numalg40) 24