Gauß-Seidel-Verfahren

Gauß-Seidel-Verfahren

Studium
xi(k+1)=1aii(bi−∑j<iaij xj(k+1)−∑j>iaij xj(k))x_i^{(k+1)} = \frac{1}{a_{ii}} \Bigl( b_i - \sum_{j < i} a_{ij}\,x_j^{(k+1)} - \sum_{j > i} a_{ij}\,x_j^{(k)} \Bigr)

Voraussetzung: Ax=b,A x = b, aii≠0,a_{ii} \neq 0, i=1,…,ni = 1, \ldots, n

xi(k)x_i^{(k)}
i-te Komponente der Näherung nach k Schritten
aija_{ij}
Einträge der Koeffizientenmatrix A
aiia_{ii}
Diagonaleinträge von A
bib_i
Komponenten der rechten Seite b
nn
Anzahl der Gleichungen und Unbekannten

Das Gauß-Seidel-Verfahren arbeitet wie das Jacobi-Verfahren, verwendet neu berechnete Komponenten aber sofort weiter.

Erklärung

Das Gauß-Seidel-Verfahren (auch Einzelschrittverfahren) löst ein lineares Gleichungssystem Ax=bAx = b iterativ. Wie beim Jacobi-Verfahren löst man die ii-te Gleichung nach xix_i auf. Für die Komponenten x1,…,xi−1x_1, \ldots, x_{i-1}, die im aktuellen Schritt schon neu berechnet wurden, setzt man aber sofort die neuen Werte ein.

Mit A=D+L+RA = D + L + R (Diagonale, strikt unteres und strikt oberes Dreieck) lautet ein Schritt

(D+L) x(k+1)=b−R x(k)(D + L)\,x^{(k+1)} = b - R\,x^{(k)}

Man löst also in jedem Schritt ein Dreieckssystem, was durch Vorwärtseinsetzen von oben nach unten geschieht.

Konvergenz:

  • Hinreichend ist, dass AA strikt diagonaldominant ist oder symmetrisch positiv definit.
  • Notwendig und hinreichend ist ein Spektralradius der Iterationsmatrix −(D+L)−1R-(D + L)^{-1} R kleiner als 11.
  • Konvergieren beide Verfahren, ist Gauß-Seidel oft schneller als Jacobi. Nur für konsistent geordnete Matrizen (z.B. tridiagonale Matrizen mit aii≠0a_{ii} \neq 0) gilt ρGS=ρJ2\rho_{\text{GS}} = \rho_{\text{J}}^2. Dann braucht Gauß-Seidel für dieselbe Genauigkeit etwa halb so viele Schritte. Allgemein gibt es keinen solchen Zusammenhang.

Ein Nachteil: Die Komponenten hängen voneinander ab, das Verfahren lässt sich schlechter parallelisieren. Außerdem hängt das Ergebnis eines Schritts von der Reihenfolge der Gleichungen ab.

Beispiele

Dasselbe System wie beim Jacobi-Verfahren, 4x1+x2=64x_1 + x_2 = 6, x1+3x2=7x_1 + 3x_2 = 7, mit Lösung (1,2)(1, 2):

x1(k+1)=6−x2(k)4,x2(k+1)=7−x1(k+1)3x_1^{(k+1)} = \frac{6 - x_2^{(k)}}{4}, \qquad x_2^{(k+1)} = \frac{7 - x_1^{(k+1)}}{3}

Ab x(0)=(0,0)x^{(0)} = (0, 0):

kkx1(k)x_1^{(k)}x2(k)x_2^{(k)}
11,51,8333
21,04171,9861
31,00351,9988

Nach drei Schritten ist der Fehler in x1x_1 etwa 0,00350{,}0035, beim Jacobi-Verfahren noch 0,04170{,}0417. Der Spektralradius ist hier 112≈0,0833\frac{1}{12} \approx 0{,}0833, das Quadrat des Jacobi-Wertes 1/12\sqrt{1/12}. Die Matrix ist tridiagonal, die Beziehung ρGS=ρJ2\rho_{\text{GS}} = \rho_{\text{J}}^2 gilt also.

Typische Fehler

  • Doch die alten Werte verwenden und damit versehentlich das Jacobi-Verfahren rechnen.
  • Die Reihenfolge der Gleichungen ändern, ohne zu prüfen, ob die Diagonaleinträge dann noch passen. Ein Zeilentausch kann Diagonaldominanz herstellen oder zerstören.
  • Annehmen, Gauß-Seidel konvergiere immer, wenn Jacobi konvergiert. Das gilt für viele, aber nicht für alle Matrizen.
  • Bei aii=0a_{ii} = 0 rechnen. Dann ist die Vorschrift nicht definiert.

Verwandte Formeln