Verfasst am: 30.11.2012, 20:27
Titel: Referat über das Newton-Verfahren!
Hallo Leute,
ich muss demnächst in meinem Matlab-Fach ein Referat über das Newtonverfahren halten. Ich will mich nicht blamieren und wollte euch deshalb fragen, wie ich das Referat am besten strukturieren soll?
Wie sollte eurer Meinung nach der Aufbau aussehen? Was sollte ich beachten? Vielleicht habt ihr irgendwelche Vorschläge welche Aufgaben ich vorrechnen soll usw?
Ich habe hier eine Aufgabe in der das Newtonverfahren anhand eines Beispiels erklärt wird. Nur verstehe ich nicht, warum man 2 M-Files benutzt. Eine für die Funktion und eine für die erste Ableitung der Funktion.
Aufgabe:
Implementieren wir jetzt das Newton-Verfahren in MATLAB für die Funktion f(x)=sin(x) − x/2. Die Definition der Funktion und ihre Ableitung f '(x) = cos(x) − 1/2 packen wir in separate M-Files:
Unsere Funktion newton für das Newton-Verfahren hat den Startwert x0 als Übergabeparameter und versucht immer bessere Approximationen x_next (= xn+1) für die Nullstelle zu finden, bis der zugehörige Funktionswert y_next näher als die MATLAB-Genauigkeit eps an null liegt. Um im Fall der Nicht-Konvergenz eine Endlosschleife zu vermeiden, wird die Zahl der Iterationen auf n = 1000 begrenzt.
Code:
function newton( x0 )
x_n = x0;
n = 0; %Start bei n = 0, mit x_n = x0
gefunden = 0;
% bis Nullstelle gefunden oder Zahl der Iterationen zu groß while( gefunden == 0 && n < 1000)
n = n + 1; % Zahl der Iterationen
y_n = f0( x_n ); % = y(xn) Wert der Funktion bei x_n
y_1 = f1( x_n ); % = y'(xn) Wert der Ableitung
Das kann man genauso gut auch in einem M-File machen. Das ist nur eine Frage des Geschmacks.
Häufig ist aber bei realen Anwendungen die Ableitung nicht explizit vorhanden. Dann wird die Ableitung numerisch bestimmt (siehe Differenzen-Quotienten). Dies kann auch hilfreich sein, wenn die Ableitung zwar analytisch vorliegt, die enthaltenen Ausdrücke aber dermassen kompliziert sind, dass die Berechnung des Differenzen-Quotienten viel schneller ist.
zur eigentlichen Frage. Um dir Tipps zur Struktur des Referats zu geben, müssten wir wissen, wo du stehst. Wenn du bereits eine Numerikvorlesung besucht hast, könnte man ganz anders herangehen. Ich würde dann beispielsweise den Banach'schen Fixpunktsatz erwähnen und einen Beweis für die Konvergenz des Verfahrens angeben.
Ich habe hier noch ein Beispiel gefunden, vielleicht ist es ein wenig verständlicher.
Würde sich jemand bereit erklären, Zeile für Zeile mit mir durchzugehen um mir die einzelnen Schritte zu erklären.
Ich wäre euch sehr dankbar dafür, denn ich muss am Montag das Referat halten und würde das gerne verstehen.
Ein Beispiel für die Implementierung eines iterativen Algorithmus' ist das folgende Programm, das die Nullstelle einer Funktion mit dem Newton-Verfahren bestimmt.
realisiert werden. Allerdings muss im allgemeinen auch mit einem Fehlschlagen des Verfahrens gerechnet werden. Es ist daher sinnvoll, die maximale Iterationszahl zu beschränken (max_iter) und auch eine größere Toleranz (tol) als die Maschinengenauigkeit eps zu wählen, um Rundungsfehler zu berücksichtigen. Auch soll ein Fehlschlagen ( $ f^\prime(x) = 0$ oder Divergenz) durch entsprechende Meldungen angezeigt werden. Die obige Programmversion zeigt, wie dies üblicherweise bei einem iterativen Verfahren realisiert wird.
Eine flexiblere Programmversion erhält man, wenn die Parameter max_iter und tol als optionale Eingabevariablen übergeben werden können. Ebenso können die Fehlermeldungen auch in einer optionalen Ausgabevariablen ausgegeben werden.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.