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 ) )Tn
D f( x ) eich= limε → 0f( x + ε eich) - f( x )ε
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 , ... , nD fnD fD 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ε
D f( x ) eich≈ f( x + ε eich) - f( x )ε,
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 )