Wichtig: Damit alle benötigten Pakete richtig eingebunden werden, führen Sie die nächste Zelle einmal aus, sobald Sie das Notebook neu öffnen.
# some setup
%matplotlib inline
import numpy as np
import numpy.linalg as linalg
import matplotlib.pyplot as plt
(a) Schreiben Sie ein Programm zur iterativen Lösung nichtlinearer Gleichungssysteme $f(x) = 0$ mit Hilfe des Newton-Verfahrens, wobei $f: R^n \to R^n$ stetig differenzierbar ist.
Der Aufruf des Programms soll mit \begin{equation} \texttt{[x,X] = newton}(\texttt{f, df, x0, tol, kmax}); \end{equation} erfolgen mit den Eingabeparametern \begin{align} \texttt{f, df} \qquad &\text{Funktion } y = f(x), \text{ bzw. Jacobimatrix } J = f'(x) \text{ der Funktion }f \\ \texttt{x0} \qquad &\text{Startvektor } x^{(0)} \text{ der Iteration} \\ \texttt{tol} \qquad &\text{Fehlertoleranz} \\ \texttt{kmax} \qquad &\text{maximale Anzahl der Iterationen} \end{align} und Ausgabeparameter \begin{align} \texttt{[x, X]} \qquad &\text{Approximation der Nullstelle } x^*, f(x^*) = 0, \\ &\text{und Folge der Iterierten } x^{(0)}, x^{(1)}, \ldots \text{ in den Spalten der Matrix } X. \end{align}
Dabei soll die Iteration abgebrochen werden, falls die maximale Iterationszahl $\texttt{kmax}$ überschritten wurde oder \begin{equation} \| f(x^{(k)} ) \|_2 + \| x^{(k-1)} - x^{(k)}\|_2 < \texttt{tol} \end{equation} gilt.
$\textit{Hinweis:}$ Zur Lösung des linearen Gleichungssystems in jedem Schritt können Sie die $\texttt{solve}$-Funktion der $\texttt{linalg}$-Bibliothek benutzen. Die LΓΆsung von $Ay=b$ wird mit Hilfe der ππππππ-Bibliothek und dem Befehl ππππππ.πππππ(π°,π) berechnet.
# Fuegen Sie hier Ihre Loesung ein.
(b) Finden Sie mit Hilfe des Programms eine Nullstelle zu \begin{equation} x_1 + e^{-x_1} + x_2^3 = 0\, , \quad x_1^2 + 2x_1x_2 - x_2^2 + \tan(x_1) = 0\, , \quad x_1,x_2 \in R\, . \end{equation} Wählen Sie $\epsilon = 10^{-8}$, $kmax = 100$ und probieren Sie unterschiedliche Startwerte $x^{(0)}$ aus, z.B. $x^{(0)} = (-1,-1)$.
# Fuegen Sie hier Ihre Loesung ein.
(c) Gegeben sei das nichtlineare Gleichungssystem \begin{align} 3x_2 = 0\, , \quad x_1^2 + \frac{2x_2}{x_2 + 5} = 0\, , \quad x_1,x_2 \in R\, , \end{align} dessen eindeutig bestimmte Lösung $(x_1,x_2) = (0,0)$ ist. Führen Sie das Newtonverfahren mit Startwert $x^{(0)} = (1,0)$ aus (z.B. mit Fehlertoleranz $\epsilon = 10^{-8}$, $kmax = 50$).
# Fuegen Sie hier Ihre Loesung ein.