Angenommen, ich habe eine Funktion und möchte so finden, dass . Ich könnte die Newton-Raphson-Methode verwenden. Dies setzt aber voraus, dass ich die Ableitungsfunktion kenne . Ein analytischer Ausdruck für möglicherweise nicht verfügbar. Zum Beispiel kann durch ein kompliziertes Stück Computercode definiert werden, das eine Datenbank von experimentellen Werten konsultiert.
Aber selbst wenn kompliziert ist, kann ich für jedes bestimmte approximieren , indem ich eine kleine Zahl wähle und f ' ( a ) ≈ f ( a + ϵ ) - f ( a ) berechne. .
Ich habe gehört, dass dieser Ansatz deutliche Nachteile hat, weiß aber nicht, um welche es sich handelt. Wikipedia weist darauf hin, dass "die Verwendung dieser Näherung zu so etwas wie der Sekantenmethode führen würde, deren Konvergenz langsamer ist als die der Newtonschen Methode."
Kann jemand dies näher erläutern und eine Referenz bereitstellen, in der insbesondere die Probleme mit dieser Technik erörtert werden?
quelle
Antworten:
Nehmen wir aus Gründen der Notation an, dass (dh, es ist eine Vektorfunktion, die einen Vektor als Eingabe annimmt und einen Vektor derselben Größe ausgibt). Es gibt zwei Bedenken: Rechenaufwand und numerische Genauigkeit.f: Rn→ Rn
Die Berechnung der Ableitung (der Jacobi-Matrix, J ( x ) oder ( ∇ f ( x ) ) T oder was auch immer Sie bevorzugen) unter Verwendung endlicher Differenzen erfordert n Funktionsbewertungen. Wenn Sie die Ableitung mit Gleitkomma-Arithmetik direkt aus der Definition berechnen könnten, müssten Sie den Differenzquotienten berechnenD f( x ) J( x ) ( ∇ f( x ) )T n
für jedes , vorausgesetzt, Sie führen keine "intelligente finite Differenzierung" (wie Curtis-Powell-Reid) durch, weil Sie das Sparsity-Muster von D f kennen (oder erkennen können) . Wenn n groß ist, kann dies eine Menge von Funktionsbewertungen sein. Wenn Sie einen analytischen Ausdruck für D f haben , kann die Berechnung billiger sein. In einigen Fällen können auch automatische (auch als algorithmische bezeichnete) Differenzierungsmethoden verwendet werden, um D f mit etwa dem 3- bis 5-fachen der Kosten einer Funktionsbewertung zu berechnen .i = 1 , ... , n D f n D f D f
Es gibt auch numerische Bedenken. Offensichtlich können wir auf einem Computer die Grenze eines Skalars nicht nehmen, wenn es auf Null geht. Wenn wir also approximieren, wählen wir wirklich ε als "klein" und berechnenD f ε
Dabei bedeutet dass es sich um eine Annäherung handelt, und wir hoffen, dass es sich um eine wirklich gute Annäherung handelt. Diese Annäherung Berechnung Punktarithmetik in floating ist hart , weil , wenn Sie wählen ε zu groß ist , Ihre Annäherung schlecht sein könnte, aber wenn Sie wählen ε zu klein ist , könnte es erhebliche Rundungsfehler sein. Diese Effekte werden im Wikipedia-Artikel zur numerischen Unterscheidung in oberflächlichen Details behandelt. Detailliertere Referenzen finden Sie im Artikel.≈ ε ε
Wenn der Fehler in der Jacobi-Matrix nicht zu groß ist, konvergieren die Newton-Raphson-Iterationen. Eine detaillierte theoretische Analyse finden Sie in Kapitel 25 ( Genauigkeit und Stabilität numerischer Algorithmen) von Nick Higham oder in der ihr zugrunde liegenden Arbeit von Françoise Tisseur .D f
Bibliotheken kümmern sich im Allgemeinen um diese algorithmischen Details, und in der Regel laufen Bibliotheksimplementierungen des Newton-Raphson-Algorithmus (oder von Varianten davon) recht gut zusammen, aber von Zeit zu Zeit gibt es ein Problem, das aufgrund der Nachteile einige Probleme verursacht über. Im skalaren Fall würde ich wegen seiner Robustheit und guten Konvergenzrate in der Praxis die Brent-Methode verwenden.( n = 1 )
quelle