Newton-Verfahren für Gleichungssysteme

Newton-Verfahren für Gleichungssysteme

Studium
JF(x(k)) Δx(k)=−F(x(k)),x(k+1)=x(k)+Δx(k)J_F(x^{(k)})\,\Delta x^{(k)} = -F(x^{(k)}), \qquad x^{(k+1)} = x^{(k)} + \Delta x^{(k)}

Voraussetzung: F:Rn→RnF: \mathbb{R}^n \to \mathbb{R}^n stetig differenzierbar,, JF(x(k))J_F(x^{(k)}) invertierbar

FF
Funktion, deren Nullstelle F(x) = 0 gesucht ist
x(k)x^{(k)}
Näherungsvektor nach k Schritten
JFJ_F
Jacobi-Matrix von F, Matrix der partiellen Ableitungen ∂F_i/∂x_j
Δx(k)\Delta x^{(k)}
Korrekturvektor im k-ten Schritt

Das Newton-Verfahren für Systeme ersetzt F durch seine Linearisierung und löst in jedem Schritt ein lineares Gleichungssystem.

Erklärung

Das Newton-Verfahren für Gleichungssysteme sucht eine Nullstelle von F(x)=0F(x) = 0 mit nn Gleichungen und nn Unbekannten. Wie im eindimensionalen Fall ersetzt man FF in der Nähe der aktuellen Näherung durch seine Linearisierung

F(x(k)+Δx)≈F(x(k))+JF(x(k)) ΔxF(x^{(k)} + \Delta x) \approx F(x^{(k)}) + J_F(x^{(k)})\,\Delta x

und setzt sie null. Die Rolle von f′f' übernimmt die Jacobi-Matrix JFJ_F mit den Einträgen ∂Fi∂xj\frac{\partial F_i}{\partial x_j}.

Formal ist x(k+1)=x(k)−JF(x(k))−1F(x(k))x^{(k+1)} = x^{(k)} - J_F(x^{(k)})^{-1} F(x^{(k)}). Man berechnet die Inverse aber nicht, sondern löst in jedem Schritt das lineare Gleichungssystem für Δx(k)\Delta x^{(k)}, z.B. mit LU-Zerlegung.

Eigenschaften:

  • Quadratische Konvergenz, wenn der Startwert nahe genug an einer Nullstelle liegt und die Jacobi-Matrix dort invertierbar und Lipschitz-stetig ist.
  • Ohne guten Startwert kann das Verfahren divergieren. Abhilfe schafft eine Dämpfung: x(k+1)=x(k)+τ Δx(k)x^{(k+1)} = x^{(k)} + \tau\,\Delta x^{(k)} mit 0<τ≤10 < \tau \leq 1.
  • Pro Schritt muss man die Jacobi-Matrix aufstellen und ein lineares System lösen. Vereinfachte Varianten verwenden dieselbe Matrix für mehrere Schritte.

Abbruch typischerweise, wenn ∥Δx(k)∥\|\Delta x^{(k)}\| oder ∥F(x(k))∥\|F(x^{(k)})\| klein genug ist.

Beispiele

Gesucht ist eine Lösung von

F(x,y)=(x2+y−3x+y2−5)=0,JF(x,y)=(2x112y)F(x, y) = \begin{pmatrix} x^2 + y - 3 \\ x + y^2 - 5 \end{pmatrix} = 0, \qquad J_F(x, y) = \begin{pmatrix} 2x & 1 \\ 1 & 2y \end{pmatrix}

Eine Lösung ist (1,2)(1, 2). Start bei (1,1)(1, 1): F=(−1; −3)F = (-1;\ -3), und das System

(2112)Δ=(13)\begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix} \Delta = \begin{pmatrix} 1 \\ 3 \end{pmatrix}

hat die Lösung Δ=(−13; 53)\Delta = \left(-\frac{1}{3};\ \frac{5}{3}\right). Neue Näherung: (23; 83)≈(0,6667; 2,6667)\left(\frac{2}{3};\ \frac{8}{3}\right) \approx (0{,}6667;\ 2{,}6667).

Zweiter Schritt: F=(19; 259)F = \left(\frac{1}{9};\ \frac{25}{9}\right), die Jacobi-Matrix ist (4/31116/3)\begin{pmatrix} 4/3 & 1 \\ 1 & 16/3 \end{pmatrix}. Das System hat die Lösung Δ=(59165; −97165)\Delta = \left(\frac{59}{165};\ -\frac{97}{165}\right), also

x(2)=(169165; 343165)≈(1,0242; 2,0788)x^{(2)} = \left(\frac{169}{165};\ \frac{343}{165}\right) \approx (1{,}0242;\ 2{,}0788)

Der größte Komponentenfehler ist 0,0790{,}079 (in yy). Ein weiterer Schritt drückt ihn auf etwa 0,00160{,}0016, der nächste auf etwa 7⋅10−77 \cdot 10^{-7}: Die Zahl der richtigen Stellen verdoppelt sich ungefähr.

Typische Fehler

  • Das Vorzeichen vergessen: Rechts steht −F(x(k))-F(x^{(k)}), nicht F(x(k))F(x^{(k)}).
  • Zeilen und Spalten der Jacobi-Matrix vertauschen. Zeile ii enthält die Ableitungen von FiF_i nach allen Variablen.
  • Die Inverse der Jacobi-Matrix explizit berechnen. Das ist teurer und numerisch ungünstiger als das Lösen des Systems.
  • Bei einer (fast) singulären Jacobi-Matrix weiterrechnen. Dann ist der Schritt nicht oder nur ungenau bestimmt.

Verwandte Formeln