Institut für Numerische Simulation der Universität Bonn Prof. Dr. Mario Bebendorf

Ähnliche Dokumente
KAPITEL 3. Lineare Gleichungssysteme, direkte Lösungsverfahren

Optimale Steuerung. Sequentielle Quadratische Programmierung. Kevin Sieg. 14. Juli Fachbereich für Mathematik und Statistik Universität Konstanz

Lineare Ausgleichsprobleme. Lineare Ausgleichsprobleme. Normalgleichungen. Normalgleichungen

Lineare Gleichungssysteme

Mathematik für Informatiker II. Beispiellösungen zur Probeklausur. Aufgabe 1. Aufgabe 2 (5+5 Punkte) Christoph Eisinger Sommersemester 2011

Numerisches Programmieren

Praktikum Wissenschaftliches Rechnen 3. Aufgabenblatt

Kevin Caldwell. 18.April 2012

Lösungen zum 3. Aufgabenblatt

Eigenwerte und Eigenvektoren von Matrizen

Einführung in die Vektor- und Matrizenrechnung. Matrizen

2 Lineare Gleichungssysteme

Technische Universität Berlin Institut für Mathematik. Bachelorarbeit im Studiengang Technomathematik

Vorlesung bzw. 23. Januar Determinanten 1. Cramersche Regel

7 Die Determinante einer Matrix

KAPITEL 4. Lineare Ausgleichsrechnung Beispiel 4.1. Das Ohmsche Gesetz: U = RI. Eine Meßreihe von Daten:

Bestimmung einer ersten

Übungen zur Ingenieur-Mathematik III WS 2009/10 Blatt

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Optimalitätskriterien

Numerische Behandlung des Eigenwertproblems

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Lineare Gleichungssysteme

Kapitel 15. Lösung linearer Gleichungssysteme

Matrizennorm. Definition 1. Sei A M r,s (R). Dann heißt A := sup die Matrixnorm. Wir wissen zunächst nicht, ob A eine reelle Zahl ist.

Optimierung für Wirtschaftsinformatiker: Analytische Optimierung ohne Nebenbedingungen

1 Lineare Gleichungssysteme

Lineare Gleichungssysteme

Lösung des Kleinste-Quadrate-Problems

Lineare Algebra - alles was man wissen muß

TEILWEISE ASYNCHRONE ALGORITHMEN

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen:

Dünn besetzte Matrizen. Unterschiede in Speicherbedarf und Rechenzeit im Vergleich zu voll besetzten Matrizen. Besetzungsmuster mit spy.

Modellierung, Simulation, Optimierung Diskretisierung 1

Untersuchung dünnbesetzter QR-Verfahren bei der Berechnung dünnbesetzter approximativer Inverser

Seminararbeit für das SE Reine Mathematik- Graphentheorie

Berechnung von Eigenwerten und Eigenvektoren

Lineare Algebra und Lösung linearer zeitinvarianter Differentialgleichungssysteme

A Matrix-Algebra. A.1 Definition und elementare Operationen

Elemente der Analysis II

Lösungen zu den Übungsaufgaben aus Kapitel 5

Lineare Algebra (Mathe I) für Wirtschaftsinformatiker; Zusammenfassung

Apfelmännchen Theorie und Programmierung

Numerisches Programmieren

klar. Um die zweite Bedingung zu zeigen, betrachte u i U i mit u i = 0. Das mittlere -Zeichen liefert s

Rekursionen (Teschl/Teschl )

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung.

6 Lösung linearer Gleichungssysteme I: LR-Zerlegung und Verwandte

Leitfaden Lineare Algebra: Determinanten

Finite Differenzen und Elemente

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Lineare Gleichungssysteme. Lineare Gleichungssysteme. LR Zerlegung ohne Pivotsuche. Zerlegung regulärer Matrizen

Algorithmen II Vorlesung am

Gleitkommaarithmetik und Pivotsuche bei Gauß-Elimination. Lehrstuhl für Angewandte Mathematik Wintersemester 2009/

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Einführung in die finite Elemente Methode

11 Normalformen von Matrizen

Distributed Graph Layout for Sensor Networks

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Schnelle Lösung großer Gleichungssysteme

Primzahlzertifikat von Pratt

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008

6 Symmetrische Matrizen und quadratische Formen

Mathematik für Bioinformatik und Systembiologie. - Kapitel Einführung in die Optimierung - Roland Herzog und Dirk Lebiedz

17. Penalty- und Barriere-Methoden

Optimierung I. 1 Einführung. Luise Blank. Wintersemester 2012/13. Universität Regensburg

> Seminar, Erlangen > Achim Basermann DSC Erlangen Basermann.pptx >

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

3.3 Eigenwerte und Eigenräume, Diagonalisierung

ARBEITSUNTERLAGEN ZUR VORLESUNG UND ÜBUNG AN DER UNIVERSITÄT DES SAARLANDES LINEARE OPTIMIERUNG

Nichtlineare Optimierung ohne Nebenbedingungen

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

Didaktik der Algebra Jürgen Roth Didaktik der Algebra 4.1

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von.

OPERATIONS-RESEARCH (OR)

u + v = v + u. u + (v + w) = (u + v) + w. 0 V + v = v + 0 V = v v + u = u + v = 0 V. t (u + v) = t u + t v, (t + s) u = t u + s u.

Numerisches Programmieren

Fotografie * Informatik * Mathematik * Computer-Algebra * Handreichung für Lehrer

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

Zur Numerik großdimensionaler Eigenwertprobleme. Werner Vogt Technische Universität Ilmenau Institut für Mathematik Postfach Ilmenau

H. Gruber, R. Neumann. Erfolg im Mathe-Abi. Übungsbuch für die optimale Vorbereitung in Analysis, Geometrie und Stochastik mit verständlichen Lösungen

Lineare Algebra und Computer Grafik

Standardisierte kompetenzorientierte schriftliche Reifeprüfung. Mathematik. Probeklausur März Teil-1-Aufgaben

Algebraische Kurven. Vorlesung 26. Die Schnittmultiplizität

Bildverarbeitung Herbstsemester Kanten und Ecken

2 Die Darstellung linearer Abbildungen durch Matrizen

Vorwort. Günter M. Gramlich. Lineare Algebra. Eine Einführung ISBN: Weitere Informationen oder Bestellungen unter

Die Gebäudesimulationsplattform NANDRAD

Algorithmen & Datenstrukturen 1. Klausur

Schranken für zulässige Lösungen

Zusammenfassung der 8. Vorlesung

Im Jahr t = 0 hat eine Stadt Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b

Nichtlineare Optimierungsprobleme mit Komplexität

Mathematik 1. Inhaltsverzeichnis. Prof. Dr. K. Melzer.

(λ Ri I A+BR)v Ri = 0. Lässt sich umstellen zu

Kleiner Satz von Fermat

Transkript:

Institut für Numerische Simulation der Universität Bonn Prof. Dr. Mario Bebendorf Praktikum im Sommersemester 2012 Programmierpraktikum numerische Algorithmen (P2E1) (Numerische Lösung der Wärmeleitungsgleichung) Betreuer: Christian Kuske 1 Blatt 2 1 Einführung Auf diesem Blatt werden weitere Verfahren zur Lösung linearer Gleichungssysteme der Form L h u h = f h (1) vorgestellt, wobei L h eine schwach-besetzte (ggf. symmetrische) Matrix ist. Eine solche Matrix entsteht beispielsweise durch eine Diskretisierung des Laplace-Operators, wie sie auf Blatt 1 hergeleitet wurde. Die Implementierung des Gauß-Seidel-Verfahrens auf dem letzten Aufgabenblatt hat gezeigt, dass bei einer Verringerung der Gitterweite der Algorithmus immer langsamer konvergiert. Konvergenzrate Es lässt sich zeigen, dass für das Gauß-Seidel-Verfahren die stationäre Wärmeleitungsgleichung mit ρ(g) = 1 O(n 2 ) < 1 konvergiert, wobei G = D 1 (L + R) die Iterationsmatrix, ρ(g) der Spektralradius und n die Anzahl der Eigenwerte dieser Matrix ist. Bei einer Verringerung der Gitterweite h = 1 n 1 nähert sich diese Konvergenzrate ρ(g) Eins an, so dass für große Gleichungssysteme der Zeitaufwand immer weiter ansteigt. Das SOR-Verfahren (successive over-relaxation) kann einen solchen Effekt vermindern, allerdings bleibt die Ordnung der Konvergenzrate von zwei erhalten. Vorkonditionierung Eine weitere Möglichkeit besteht darin, das Gleichungssystem mit dem CG-Verfahren (conjugated gradients) zu lösen. Da die Konvergenzgeschwindigkeit des CG-Verfahrens von der Kondition der Matrix abhängig ist, stellt sich die Frage, wie diese verringert werden kann. Diese Idee wird durch das PCG-Verfahren (preconditioned conjugated gradients) realisiert. 1 We6 4.002; Tel.: 0228/73-60454; Email: kuske@ins.uni-bonn.de 1

2 SOR-Verfahren Das SOR-Verfahren ist eine Erweiterung des Gauß-Seidel-Verfahrens und kombiniert den letzten mit dem aktuellen Iterationsschritt um eine bessere Konvergenzrate zu erzielen. Für ein Gleichungssystem Ax = b ist x (k+1) i i 1 = ω b i a ii j=1 a ij x (k+1) j n j=i+1 a ij x (k) + (1 ω)x (k) die Iterationsvorschrift des SOR-Verfahrens, wobei ω (0, 2) als Relaxationsparameter bezeichnet wird. j i Relaxationsparameter Für ω = 1 ergibt sich das bereits bekannte Gauß-Seidel-Verfahren. Wird ω < 1 gewählt, so ist das Verfahren unterrelaxiert. Da jeder Iterationsschritt dazu dient, sich der exakten Lösung anzunähern, wird hierbei lediglich ein Teil des neuen Schritts genutzt und der vorherige bleibt teilweise vorhanden. Dies verlangsamt in den meisten Fällen das Verfahren weiter und wird daher zur Lösung von linearen Gleichungssystemen nicht direkt verwendet. Dem entgegen steht die Wahl von ω > 1. In diesem Fall wird das Verfahren Überrelaxationsverfahren oder SOR-Verfahren genannt. Der neue Iterationsschritt wird mit mehr als Eins gewichtet, sodass eine schnellere Annäherung an die Lösung stattfindet. Optimierung Es lässt sich zeigen, dass das SOR-Verfahren für positiv definite Matrizen und ω (0, 2) konvergiert [Beb10, 12.15]. Hierbei kann der optimale Relaxationsparameter durch ω opt := 2 1 + 1 ρ(g) gewählt werden, wobei für den diskretisierten Laplace-Operator ρ(g) = cos 2 ( π n ) gilt. Dass die Konvergenzrate des SOR-Verfahren für ω opt optimal ist, wird in [Hac91, Satz 6.6.5] bewiesen. Da ρ(g) nicht für jede Iterationsmatrix bekannt ist, wird oft ein ω zwischen 1,2 und 1,6 gewählt. Dadurch ergibt sich bereits eine Beschleunigung des Gauß-Seidel-Verfahrens. Ebenfalls ist im Fall von schwach-besetzten Matrizen darauf zu achten, dass lediglich die Einträge, die nicht Null sind, berechnet werden müssen. 3 CG-Verfahren Beim CG-Verfahren handelt es sich zunächst um ein direktes Verfahren, das heißt, dass das Verfahren nach n Iterationsschritten die exakte Lösung ermittelt hat. Der Beweis dazu ist in [Beb10, Lemma 12.22] zu finden. Bei großen n ist dies wenig hilfreich. Allerdings ist eine geringere Anzahl von CG-Schritten ausreichend, um den Fehler unter eine gegebene Schranke zu drücken. Der Fehler wird maßgeblich von Kondition beeinflusst und wird durch [Beb10, Satz 12.27] abgeschätzt. Der Algorithmus ist ein Spezialfall von dem vorkonditionierten CG- Verfahren 4.1, bei dem C = I gesetzt wird. 2

Matrix-Vektor-Multiplikation Da in jedem Iterationsschritt die Suchrichtung orthogonal zu den vorherigen Richtungen bezüglich der Matrix gewählt werden, ist es nötig, eine Matrix-Vektor-Multiplikation durchzuführen. Diese Operation kostet O(n 2 ) Schritte. Bei schwach-besetzten Matrizen, die bei der Diskretisierung durch finite Differenzen auftreten, lässt sich der Aufwand auf O(n) reduzieren. Dadurch wird der Algorithmus beschleunigt und ein Aufstellen oder Abspeichern der gesamten Matrix entfällt. 4 Vorkonditionierung Da die Konvergenzrate vieler Iterationsverfahren zum Lösen linearer Gleichungssysteme von der Kondition der Matrix A abhängt, ist es von Vorteil, diese zu verringern. Diese Idee wird durch die Vorkonditionierung verwirklicht. Im folgenden wird das Gleichungssystem Ax = b (2) betrachtet, wobei das PCG-Verfahren hierfür wie folgt ausgeführt wird: r 0 = b Ax 0, d 0 = h 0 = Cr 0 do x k+1 = x k + α k d k, α k = rt k h k d T k Ad k r k+1 = r k α k Ad k h k+1 = Cr k+1 d k+1 = h k+1 + β k d k, β k = rt k+1 h k+1 r T k h k until r k+1 < ε Algorithmus 4.1: PCG-Verfahren Links-Vorkonditionierung Bei dieser Vorkonditionierung wird eine reguläre Matrix C auf das Gleichungssystem (2) multipliziert, so dass ein neues System CAx = Cb entsteht. Dabei soll C so gewählt werden, dass CA eine geringere Kondition als A besitzt, also C A 1. Auf dieses veränderte Gleichungssystem lassen sich Iterationsverfahren anwenden. Allerdings ist darauf zu achten, dass sich durch die Multiplikation mit der Matrix C ebenfalls das Residuum zu r k := Cb CAx k = C(b Ax k ) ändert. Daher ist eine Überprüfung von r k := b Ax k auf die zu erreichende Genauigkeit, im Gegensatz zu r k, sinnvoll. Rechts-Vorkonditionierung In diesem Fall wird das lineare Gleichungssystem (2) durch y := C 1 x verändert und es ergibt sich ACy = b. Wie für die Links-Vorkonditionierung soll C leicht zu berechnen sein und die Kondition der Matrix A reduzieren. Die Berechnung des Residuums zeigt, dass dieses unverändert bleibt: r k = b ACy k = b ACC 1 x k = b Ax k. 3

Ist die vorgegebene Genauigkeit unterschritten, muss im letzten Schritt x k = Cy k berechnet werden, um eine Lösung der Gleichung (2) zu erhalten. Symmetrische Vorkonditionierung Durch Kombination der Links- und Rechts-Vorkonditionierung kann (2) mit Hilfe von C = (KK T ) 1 durch das folgende Gleichungssystem ersetzt werden: K T AKy = K T b, y := K 1 x. Der Vorteil der symmetrischen Variante ist, dass die Matrix K T AK symmetrisch und positiv definit ist, falls dies für A gilt. Allerdings lässt sich dies auch bei den unsymmetrischen Verfahren CA beziehungsweise AC zeigen, falls A, C beide Eigenschaften besitzen. Es sei (x, y) C 1 := (C 1 x, y) ein Skalarprodukt. Dann gilt für alle x, y R n (CAx, y) C 1 = (Ax, y) = (x, Ay) = (CC 1 x, Ay) = (C 1 x, CAy) = (x, CAy) C 1. Daraus folgt, dass CA symmetrisch und positiv definit bezüglich (x, y) C 1 für AC bezüglich (x, y) C. ist. Analoges gilt 5 Vorkonditionierer Einige wichtige und häufig Vorkonditionierer sollen kurz beschrieben werden. Jacobi Als erstes ist der Jacobi-Vorkonditionierer zu nennen. Dieser besteht, ähnlich zum Jacobi- Verfahren, aus den inversen Diagonaleinträgen der Matrix A, das heißt C = D 1. Daher hat die im PCG-Verfahren zusätzlich auftretende Matrix-Vektor-Multiplikation für den Vorkonditionierer einen Rechenaufwand von O(n). Dieses Verfahren verringert die Kondition vorallem bei Systemmatrizen, die durch eine nicht äquidistante Gitterweite diskretisiert wurden. Gauß-Seidel Dieser Vorkonditionierer leitet sich aus dem Gauß-Seidel-Verfahren ab. Dabei wird C = (D + L) 1 gesetzt, wobei D die Diagonale und L die strikte untere Diagonalmatrix von A ist. Aufgrund der Dreiecksgestalt werden für die Matrix-Vektor-Multiplikation 1 2 n2 Schritte benötigt. Im Fall schwach-besetzter Matrizen reduziert sich der Aufwand auf O(n). Symmetrisches SOR Hierbei handelt es sich um eine symmetrische Version des SOR-Verfahren. Für die Matrix des Vorkonditionierers gilt C = (2 ω)ω(d + ωr) 1 D(D + ωl) 1, wobei R die rechts oberen Einträge der Matrix A darstellt. Ähnlich zum Gauß-Seidel- Verfahren wird der Multiplikationsaufwand auf n 2 +n Schritte berechnet und kann bei schwachbesetzten Matrizen auf O(n) verringert werden. 4

ILU Normalerweise entstehen bei einer LR-Zerlegung vollbesetzte Matrizen, auch wenn eine schwachbesetzte Matrix vorliegt. Dadurch beträgt der Aufwand bei der Matrix-Vektor-Multiplikation durch die Vorkonditionierung O(n 2 ) und zusätzlich entsteht ein Aufwand von O(n 3 ) zur Berechnung einer LR-Zerlegung. Beide Effekte können durch die ILU-Zerlegung (incomplete lower upper) beseitigt werden. Es wird eine Zerlegung der Form A = LR + E gesucht, wobei E die Fehlermatrix ist. Der Fall (E) ij 0 wird lediglich zugelassen, falls (A) ij = 0 gilt. Genauer bleiben die Nullen in der Matrix A in LR an den gleichen Stellen vorhanden. Dadurch entsteht eine schwach besetzte Zerlegung mit der O(n) Operationen für die Matrix- Vektor-Multiplikation benötigt werden. IC Analog zur LR-Zerlegung ist die Cholesky-Zerlegung aufwendig. Mit der gleichen Idee wie bei der ILU-Zerlegung kann die IC-Zerlegung (incomplete Cholesky) eine schwach-besetzte Matrix erzeugen. Diese hat die Form A = LL T + E. Die für die Cholesky-Zerlegung vorausgesetzte Symmetrie der Matrix A ist in vielen in der Praxis vorkommenden Problemen gegeben, sodass die IC-Zerlegung meistens anwendbar ist. 6 Aufgaben a) Implementiere das SOR-Verfahren für die Gleichung (1) und verwende dazu: - unsigned int SOR(const unsigned int n, double ** u, const double eps, const double omega), wobei der Rückgabewert der Anzahl der benötigten Iterationen entspricht. Das Verfahren soll abbrechen, sobald u (k+1) u (k) < ε ist. b) Erstelle eine Tabelle für n = 50, ε = 10 4, ω i = i 100, 1 i < 200 und stelle die Anzahl der Iterationen gegenüber! c) Implementiere eine Matrix-Vektor-Multiplikation für die schwach-besetzte Diskretisierung des Laplace-Operators in symmetrischer Form mit Hilfe der Matrix-Klasse: - void LaplaceMatrix::multMatVec(const double * const x, double * const y) const, wobei y = L h x berechnet wird und L h symmetrisch positiv definit ist. (Hinweis: Betrachte ein kleines Beispiel fuer n = 5 (L h R 25 25 ) und überlege wie L h symmetrisch wird.) d) Implementiere das CG-Verfahren mit Hilfe der Matrix-Klasse und verwende folgende Funktionen: - unsigned int CG(const Matrix& L, const double * const f, double * const u, const double eps, const uint maxit), wobei das lineare Gleichungssystem L h u = f h mit r k+1 < ε und maximal maxit Iterationsschritten gelöst wird. - void scal(const unsigned int n, const double alpha, double * const x), wobei x mit α skaliert wird. 5

- void copy(const unsigned int n, const double * const x, double * const y), wobei x nach y kopiert wird. - void axpy(const unsigned int n, const double alpha, const double * const x, double * const y), wobei y + αx in y gespeichert wird. - double nrm2(const unsigned int n, const double * const x), wobei der Rückgabewert der euklidischen Norm x 2 entspricht. - double scpr(const unsigned int n, const double * const x, const double * const y), wobei der Rückgabewert der Skalarprodukt x, y entspricht. - void initrhs(const unsigned int n, double * const f), wobei die rechte Seite des symmetrischen Gleichungssystem L h u = f h initialisiert wird. Hinweis: Gehe Schritt für Schritt vor und überprüfe an Hand eines kleinen Beispiels (n = 5) jede geschriebene Funktion. e) Implementiere das PCG-Verfahren mit dem symmetrischen SOR-Vorkonditionierer und mit Hilfe der Matrix-Klasse: - void LaplaceMatrixSSOR::applyPrecond(const double * const x, double * const y) const, wobei y = Cx berechnet wird und C der Vonkonditioniere des SSOR-Verfahren ist. (Hinweis: Die Matrix C wird dabei nicht aufgestellt, sondern mit Vorwärts- und Rückwärtssubstitution berechnet.) f) Erstelle eine Tabelle in der Rechenzeiten und Iterationsschritte für Gauß-Seidel, SOR, CG und PCG mit unterschiedlichen n verglichen werden. Literatur [Beb10] Bebendorf, Mario: Algorithmische Mathematik 2 Vorlesungsskript SS2010. http://bebendorf.ins.uni-bonn.de/teaching/alma2_ss10/alma2.pdf. Version: 2010 [Hac91] Hackbusch, Wolfgang: Iterative Lösung großer Gleichungssysteme. Teubner, 1991 6