Supposons que j'ai une fonction et que je veuille trouver tel que . Je pourrais utiliser la méthode Newton-Raphson. Mais cela nécessite que je connaisse la fonction dérivée . Une expression analytique pour peut ne pas être disponible. Par exemple, peut être défini par un morceau de code informatique compliqué qui consulte une base de données de valeurs expérimentales.
Mais même si est compliquée, je peux approcher pour tout particulier en choisissant un petit nombre et calculting .
J'ai entendu dire qu'il y avait des inconvénients distincts à cette approche, mais je ne sais pas ce qu'ils sont. Wikipedia laisse entendre que "L'utilisation de cette approximation entraînerait quelque chose comme la méthode sécante dont la convergence est plus lente que celle de la méthode de Newton."
Quelqu'un peut-il développer ce point et fournir une référence qui traite en particulier des problèmes de cette technique?
la source
Réponses:
Par souci de notation, supposons que (c'est-à-dire que c'est une fonction à valeur vectorielle qui prend un vecteur en entrée et génère un vecteur de la même taille). Il y a deux préoccupations: le coût de calcul et la précision numérique.f:Rn→Rn
Calcul de la dérivée (la matrice jacobienne, J ( x ) ou ( ∇ f ( x ) )Df(x) J(x) , ou tout ce que vous préférez) en utilisant des différences finies va nécessiternévaluations de fonctions. Si vous pouviez calculer la dérivée en utilisant l'arithmétique à virgule flottante directement à partir de la définition, vous devriez calculer le quotient de différence(∇f(x))T n
pour chaque , en supposant que vous ne faites aucune sorte de «différenciation finie intelligente» (comme Curtis-Powell-Reid) parce que vous connaissez (ou pouvez détecter) le modèle de rareté de D f . Si n est grand, cela pourrait être beaucoup d'évaluations de fonctions. Si vous avez une expression analytique pouri=1,…,n Df n , alors le calculer pourrait être moins cher. Des méthodes de différenciation automatiques (également appelées algorithmes) peuvent également être utilisées dans certains cas pour calculer D f à environ 3 à 5 fois le coût d'une évaluation de fonction.Df Df
Il y a aussi des préoccupations numériques. De toute évidence, sur un ordinateur, nous ne pouvons pas prendre la limite d'un scalaire car il va à zéro, donc lorsque nous approchonsDf , nous choisissons vraiment pour être "petit" et calculonsε
où signifie que c'est une approximation, et nous espérons que c'est une très bonne approximation. Le calcul de cette approximation en arithmétique à virgule flottante est difficile car si vous choisissez ε trop grand, votre approximation pourrait être mauvaise, mais si vous choisissez ε trop petit, il pourrait y avoir une erreur d'arrondi significative. Ces effets sont traités dans l'article de Wikipedia sur la différenciation numérique en détail superficiel; des références plus détaillées peuvent être trouvées dans l'article.≈ ε ε
Si l'erreur dans la matrice jacobienne n'est pas trop grande, les itérations de Newton-Raphson convergeront. Pour une analyse théorique détaillée, voir le chapitre 25 de Précision et stabilité des algorithmes numériques de Nick Higham , ou l'article de Françoise Tisseur sur lequel il est basé.Df
Les bibliothèques s'occupent généralement de ces détails algorithmiques pour vous, et généralement, les implémentations de bibliothèque de l'algorithme de Newton-Raphson (ou des variantes de celui-ci) convergeront assez bien, mais de temps en temps, il y aura un problème qui causera des problèmes en raison des inconvénients au dessus. Dans le cas scalaire , j'utiliserais la méthode de Brent , en raison de sa robustesse et de son bon taux de convergence en pratique.(n=1)
la source