In diesem Kapitel soll es um das Lösen nichtlinearer Gleichungen gehen.
Bisektionsverfahren
Als einfachstes Verfahren zur Lösung skalarer nichtlinearer Gleichungen wollen wir das Bisektionsverfahren (vgl. Vorlesung)
zunächst auf ein Polynom, dessen Nullstellen wir auch analytisch bestimmen können anwenden.
Finden sie die Nullstellen des Polynoms x^2 - 1=0
Nun wollen wir alle Lösungen der Gleichung 4*cos(x)=ln(x) finden. Dazu plotten Sie zunächst die beiden Funktionen um
geeignete Intervallgrenzen für die Bisektion zu finden.
Newtonverfahren
Skalare Gleichungen
Wenden Sie das Newton-Verfahren mit verschiedenen Startwerten auf die skalaren Gleichungen an.
Wie schnell konvergiert das Verfahren? Was beobachten Sie ?
x^3 + 2*x^2 + 3 = 0 für -10 <x < 10
(x-1) * exp(-x) = 0 für x > 0
Nichlineare Systeme
Zunächst wollen wir an dem simplen System für 2 Unbekannte x_1 und x_2
x_1 + 2x_2 -3 =0
4x_1+x_2^2-5=0
das Newtonverfahren testen. Stellen Sie dazu die Jacobimatrix auf und implementieren Sie das Verfahren.
Wählen Sie als Startwert einen Punkt in der Nähe von (1,1)..
Als nächstes wollen wir das Verfahren an einen System mit zwei Lösungen testen, nämlich das System
1/x^2 + 1/y^2 = 13
1/x -1/y=1
Untersuchen Sie für verschiedene Startwerte gegen welche der beiden Lösungen das Newtonverfahren konvergiert.
Matlabs fsolve-Funktion
Nun wollen wir den nichlinearen Solver fsolve von Matlab kennenlernen.
Wie schon bei der Linearen Regression haben wir eine Punktwolke, die durch eine Funktion mit (noch) unbekannten Parametern gefittet werden soll.
Diesmal sind die Parameter aber nichtlinear verbunden, wir verwenden als Beispiel die Funktion
y=a_1*sin(a_2*x)+a_3*cos(a_4*x) für n Punkte (x_1,y_1) ... (x_n,y_n).
Dazu wieder die Punktwolke: nonlin1.txt und das Bild
Kann man mit fsolve dieses Problem lösen ?
Da die Punkte verrauscht sind, werden wir das Nullstellenproblem nicht exakt lösen können.