Gauß-Seidel-Verfahren
aus Wikipedia, der freien Enzyklopädie
In der numerischen Mathematik ist das Gauß-Seidel-Verfahren oder Einzelschrittverfahren, (nach Carl Friedrich Gauß und Ludwig Seidel) ein Algorithmus zur näherungsweisen Lösung von linearen Gleichungssystemen. Es ist, wie das Jacobi-Verfahren und das SOR-Verfahren, ein spezielles Splitting-Verfahren. Das Verfahren wurde zuerst von Gauß entwickelt, aber nicht veröffentlicht, später wurde es, bevor dessen Anwendung von Gauß bekannt war, von Seidel veröffentlicht.
Entwickelt wurde das Verfahren, da das Gaußsche Eliminationsverfahren, ein exakter Löser, für Rechenfehler sehr anfällig ist. Eine iterative Vorgehensweise hat diesen Nachteil nicht.
Inhaltsverzeichnis |
[Bearbeiten] Beschreibung des Verfahrens
Gegeben ist ein lineares Gleichungssystem in n Variablen mit n Gleichungen.
Um dieses zu lösen, wird die k-te Gleichung nach der k-ten Variablen xk aufgelöst, d.h. für den (m+1)-ten Iterationsschritt:
,
wobei die vorher berechneten Werte des aktuellen Iterationsschritts mit verwendet werden, im Gegensatz zum Jacobi-Verfahren. Diese Ersetzung wird, ausgehend von einer willkürlichen Startbelegung der Variablen, sukzessive wiederholt. Als minimale Bedingung lässt sich hier festhalten, dass die Diagonalelemente ak;k von Null verschieden sein müssen.
Als Algorithmusskizze mit Abbruchbedingung ergibt sich:
- wiederhole
- fehler := 0
- für k=1 bis n
- nächstes k
- m := m+1
- bis fehler<fehlerschranke
Dabei wurde die Erstbelegung des Variablenvektors und eine Fehlerschranke als Eingangsgrößen des Algorithmus angenommen, die Näherungslösung ist die vektorielle Rückgabegröße. Die Fehlerschranke misst hier, welche Größe die letzte Änderung des Variablenvektors hatte.
[Bearbeiten] Herleitung des Verfahrens
[Bearbeiten] Beschreibung des Verfahrens in Matrixschreibweise
Die Matrix des linearen Gleichungssystems
wird zur Vorbereitung in eine Diagonalmatrix
, eine strikte obere Dreiecksmatrix
und eine strikte untere Dreiecksmatrix
zerlegt, so dass gilt:
In jedem Iterationsschritt gilt dann . Nach Umstellen ergibt sich formal
und daraus
.
Man legt dann einen Startvektor fest und setzt ihn in die Iterationsvorschrift ein:
.
Da es der erste Iterationsschritt ist, hat dabei den Wert Null. Das Ergebnis der Rechnung ist ein erster Näherungswert
für den gesuchten Lösungsvektor
. Diesen Näherungswert kann man seinerseits in die Iterationsvorschrift einsetzen und gewinnt einen besseren Näherungswert
, den man wieder einsetzen kann. Wiederholt man diesen Vorgang, gewinnt man eine Folge von Werten, die sich dem Lösungsvektor immer mehr annähern, wenn die Konvergenzbedingungen (s. unten) erfüllt sind:
[Bearbeiten] Diagonaldominanz und Konvergenz
Die Konvergenzgeschwindigkeit des Verfahrens hängt sowohl vom Spektralradius der Iterationsmatrix − (D + L) − 1U als auch von der Nummerierung der Unbekannten ab.
Allgemein gilt: Ist A strikt diagonaldominant, sind also sowohl D − 1U als auch D − 1L "kleine" Matrizen im Sinne der Operatornorm (z.B. der Spektralnorm), ist also die Bedingung
erfüllt, so ist das Verfahren konvergent. In diesem Falle ist der Fixpunktsatz von Banach anwendbar. Dabei ist die Kontraktionskonstante des Gauß-Seidel-Verfahrens kleinergleich der Kontraktionskonstante des Jabobi-Verfahrens.
Das einfachste und gebräuchlichste Kriterium für Diagonaldominanz ergibt sich in der Supremumsnorm der Vektoren und deren induzierter Matrixnorm
. Es verlangt die Erfüllung des Zeilensummenkriteriums, also der Ungleichung
für
.
Je größer die kleinste Differenz zwischen rechten und linken Seiten der Ungleichung ist, desto schneller konvergiert das Verfahren.
[Bearbeiten] Anwendungen
Für moderne Anwendungen wie die Lösung großer dünnbesetzter Gleichungssysteme die aus der Diskretisierung partieller Differentialgleichungen stammen, ist das Verfahren ungeeignet. Es wird jedoch mit Erfolg als Vorkonditionierer in Krylow-Unterraum-Verfahren oder als Glätter in Mehrgitterverfahren eingesetzt.