Splitting-Verfahren
In der numerischen Mathematik sind Splitting-Verfahren klassische iterative Verfahren zum Lösen linearer Gleichungssysteme <math>Ax=b</math> mit einer Matrix <math>A\in\Complex^{n\times n}</math> und rechter Seite <math>b\in\Complex^n.</math> Im Unterschied zu direkten Verfahren nähert man sich dabei ausgehend von einer Startnäherung schrittweise der gesuchten Lösung an und bricht ab, sobald die Genauigkeit hoch genug ist.
Herleitung[Bearbeiten]
Zu Beginn spalten wir die Systemmatrix auf
- <math>A = B + (A-B),</math>
wobei <math>B\in\Complex^{n\times n}</math> invertierbar ist. Nun können wir das lineare Gleichungssystem äquivalent umformen
- <math>
A x=b \quad \iff \quad B^{-1}(B+(A-B))x = B^{-1}b. </math>
Daraus ergibt sich die Fixpunktgleichung
- <math>
x = B^{-1}(B-A)x + B^{-1}b. </math>
Setzt man
- <math>
M := B^{-1}(B-A) = I - B^{-1}A, </math>
wobei <math>I</math> die Einheitsmatrix bezeichnet, so folgt die Fixpunktiteration.
Iterationsvorschrift[Bearbeiten]
Das zugehörige Splitting-Verfahren lautet:
- Wähle einen Startvektor <math>x_0\in\Complex^n</math>, beispielsweise <math>x_0=b</math>.
- Berechne iterativ für <math> k \in \mathbb{N} </math> mit vorheriger Schätzung <math>x_{k-1}</math> und <math> \; M = (I-B^{-1}A) </math> den nächsten Vektor
- <math>
x_k \leftarrow Mx_{k-1}+B^{-1}b . </math>
Richardson-Iteration[Bearbeiten]
Mit dem Residuum
- <math>
r_{k-1}=b-Ax_{k-1} </math>
lässt sich die Iteration schreiben als
- <math>
x_k=x_{k-1}+B^{-1}r_{k-1}, </math>
denn <math>
x_{k-1}+B^{-1}(b-Ax_{k-1}) = (I-B^{-1}A)x_{k-1}+B^{-1}b </math>.
Damit ist jedes Splitting-Verfahren dieser Form äquivalent zu einer vorkonditionierten Richardson-Iteration mit Vorkonditionierer <math>B</math>. Für <math>B=I</math> erhält man die klassische Richardson-Iteration.
Abbruchkriterium[Bearbeiten]
Die Iteration kann abgebrochen werden, sobald die Norm des Residuums <math> r_k=b-Ax_k </math> eine vorgegebene Fehlerschranke unterschreitet.
Konvergenz[Bearbeiten]
Mit dem Fehler zu einem Fixpunkt <math> e_k := x_k - x^* </math> lässt sich der Fehler ausdrücken
- <math>
e_k = M^k e_0 . </math>
<math> M^k \to \textbf{0} </math> konvergiert genau dann, wenn der Spektralradius der Iterationsmatrix <math>M</math> kleiner als <math>1</math> ist, i.e.
- <math>
\rho(M)<1. </math>
Dabei bezeichnet
<math>\sigma(M)</math> das Spektrum von <math>M</math>, also die Menge der Eigenwerte von <math>M</math>, und <math> \rho(M) := \max_{\lambda \in \sigma(M)} |\lambda| </math>
den Spektralradius von <math>M </math>.
Mit Hilfe des banachschen Fixpunktsatzes folgt außerdem die lineare Konvergenzgeschwindigkeit der gesamten Verfahrensklasse. Je kleiner der Spektralradius ist, desto schneller konvergiert das Verfahren.
Falls sich <math>B</math> und <math>A</math> nur wenig unterscheiden, kann man mit dem Störungslemma zeigen, dass auch der Spektralradius von <math>M</math> klein ist.
Übersicht klassischer Splitting-Verfahren[Bearbeiten]
Die klassischen Splitting-Verfahren basieren auf der Zerlegung <math>A = L + D + R</math>, wobei <math>D := \operatorname{diag}(A)</math> die Diagonalmatrix, <math>L := \operatorname{tril}(A,-1)</math> die strikte untere Dreiecksmatrix und <math>R := \operatorname{triu}(A,1)</math> die strikte obere Dreiecksmatrix von <math>A</math> bezeichnet.
- Jacobi-Verfahren: <math>B=D</math>.
- Richardson-Verfahren: <math>B=(1/\tau)I</math> mit einem Parameter <math>| \tau | > 1 </math>.
- Gauß-Seidel-Verfahren: <math>B=D+L</math>.
- SOR-Verfahren: <math>B=(1/\omega)D+L</math> mit einem Relaxationsparameter <math>\omega\neq 0</math>.
- SSOR-Verfahren: symmetrisierte Variante des SOR-Verfahrens.
- Eine Möglichkeit der Nachiteration für das gaußsche Eliminationsverfahren ergibt sich durch <math>B=L_{\mathrm{LU}}U_{\mathrm{LU}}</math>, wobei <math>L_{\mathrm{LU}}U_{\mathrm{LU}}</math> eine LU-Zerlegung von <math>A</math> bezeichnet.
Aufwand und praktische Bedeutung[Bearbeiten]
Damit ergibt sich ein Gegensatz zwischen schneller Konvergenz und geringen Kosten pro Iteration:
- Schnelle Konvergenz wird erreicht, wenn <math>B</math> die Matrix <math>A</math> gut approximiert.
- Geringe Kosten pro Iteration erhält man, wenn <math>B</math> einfach invertierbar ist.
Insgesamt sind Splitting-Verfahren für viele praktische Probleme als eigenständige Verfahren zu langsam. Aufgrund ihrer einfachen Anwendbarkeit eignen sie sich jedoch gut als Vorkonditionierer. Darüber hinaus können viele Splitting-Verfahren als Glätter in einem Mehrgitterverfahren verwendet werden.
Modifikationen[Bearbeiten]
Man unterscheidet zwischen stationären Verfahren mit konstanter Iterationsmatrix und instationären Verfahren, wo die Matrizen <math>M</math> vom Index <math>i</math> abhängen dürfen.
Literatur[Bearbeiten]
- Andreas Meister: Numerik linearer Gleichungssysteme. 2. Auflage. Vieweg, Wiesbaden 2005, ISBN 3-528-13135-7.
- Christian Kanzow: Numerik linearer Gleichungssysteme. Direkte und iterative Verfahren. Springer, Berlin/Heidelberg 2005, ISBN 978-3-540-20654-5.
- Wolfgang Hackbusch: Iterative Lösung großer schwachbesetzter Gleichungssysteme. 2. Auflage. Teubner, Stuttgart 1993, ISBN 3-519-12372-X.