• Keine Ergebnisse gefunden

Einführung in die Informatik Newton-Verfahren

N/A
N/A
Protected

Academic year: 2021

Aktie "Einführung in die Informatik Newton-Verfahren"

Copied!
10
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

13.1

Einführung in die Informatik Newton-Verfahren

Wolfram Burgard Cyrill Stachniss

(2)

13.2

Einführung

Das Newton oder Newton-Raphson Verfahren ist eine mächtige Technik zum Finden von Nullstellen oder lokalen Extremwerten

Es zeichnet such durch „schnelle“ Konvergenz aus (quadratisch)

Wir betrachten am Beispiel des Newton Verfahren wie schwierig es sein kann, eine einfach Technik korrekt in einer Programmiersprache

umzusetzen

(3)

13.3

Newton Verfahren

Diese Technik nutzt eine Gerade um eine Nullstelle zu schätzen

(4)

13.4

Umsetzung

Man kann dies durch eine einfache rekursive Gleichung ausdrücken

und auch einfach in Java umsetzen

void newton(Function f, double x, int n) { for (int i=0; i<n; i++) {

x = x – f.f(x)/f.df(x);

}

return x;

}

(5)

13.5

Probleme

Ganz so einfach ist dies allerdings in der Praxis nicht, denn

das Verfahren kann divergieren.

(6)

13.6

Newton Verfahren mit Konvergenztest

Durch Test auf Konvergenz kann man diesen Fall umgehen

double newton2(Function fkt, double x, double eps) { for (int i=0; i<MAXIT; i++) {

double dx = fkt.f(x)/fkt.df(x);

x = x - dx;

if (Math.abs(dx) < eps) return x;

}

System.out.println("Maximum number of iterations exceeded");

return 0.0;

}

(7)

13.7

Verbessertes Newton Verfahren

Auch durch Begrenzung des Newton Verfahrens kann dieser Fall abgefangen werden. Mann muss aber die Begrenzung kennen

double newton3(Fkt fkt, double x1, double x2, double eps) { double x=0.5*(x1+x2);

for (int j=0; j<MAXIT; j++) {

double dx=fkt.f(x)/fkt.df(x);

x -= dx;

if ((x1-x)*(x-x2) < 0.0) {

System.out.println("Jumped out!");

return 0.0;

}

if (Math.abs(dx) < eps) return x;

}

System.out.println("Maximum number of iterations exceeded");

return 0.0;

}

(8)

13.8

Weitere Probleme

Trotz Beschränkung muss das Verfahren nicht konvergieren.

Der Konvergenztest mit der maximalen Anzahl an Iterationen verhindert aber eine Endlosschleife.

(9)

13.9

Numerical Recipes

Sichere Lösungen zu mathematischen Verfahren findet man in den

„Numerical Recipes in C/C++/Fortran/(Java – in Bearbeitung)“

Das Buch ist abschnittsweise als PDF im Netz verfügbar

(10)

13.10

Zusammenfassung

Mathematische Verfahren sind nicht immer leicht zu implementieren, da viele Sonderfälle betrachtet werde müssen.

Wir haben uns das Newton Verfahren beispielhaft angesehen.

Einige Lösungen findet man in den Numerical Recipes.

Referenzen

ÄHNLICHE DOKUMENTE

Wir wenden jetzt das Störungslemma für Operatoren an, um zu zeigen, dass B k+1 invertierbar ist.

Wenn ihr eine oder mehrere Kugeln auslenkt und loslasst, wird das Pendel in Bewegung versetzt?. Beobachtet

Visualisiert werden sollen eine ruhende Kugel im Aufhängungspunkt des Pendels sowie eine als Pendel schwingende Kugel. Implementiert die Schwingung zunächst mit konstanter

Dass es dort kein vorsortiertes Schwarz gibt, zeigt experimentell derselbe Blendentest wie eben: Wer in die schwarze Mitte hinter dem Prisma einen Schirm mit kleiner

Schreiben Sie zudem eine Matlab-Funktion Horner, welche das Interpolationspolynoms in Newton-Darstellung durch das Horner-Schema an der Stelle x auswertet.. Die Matlab-Funktionen

Universit¨ at T¨ ubingen T¨ ubingen, den 11.01.2013 Mathematisches

Viel- mehr sollen die Eintr¨ age der Restmatrix R, die normierten Householdervektoren u i und die skalaren Gr¨ oßen α i in der um eine Zeile erweiterten Matrix A geschickt

Geben Sie in jedem Schritt der Iteration das berechnete Residuum aus und visualisieren Sie die Entwicklung der Residuen in einem