Méthode des tangentes
pour l'équation f(x) = 0
programme JavaScript @ Pas de théorie, je veux utiliser le programme | @ Version tableur | Autres méthodes |
Cette méthode de résolution d'une équation du type f(x) = 0 est due à Isaac Newton; elle fut complétée par Raphson.
Conditions de validité de la méthode :
On se place dans un voisinage V isolant une solution α de l'équation f(x) = 0 sur lequel f est continue et deux fois dérivable, de nombres dérivés premier et second non nuls : pour tout x de V, f '(x) et f ''(x) sont non nuls.
La condition sur f'' exprime que la restriction à V de la courbe (C) représentative de f garde une même concavité.
Étude :
Notons xo une valeur approchée initiale de α dans V. La tangente To en Mo(xo,yo) à (C) coupe l'axe des abscisses en x1 que nous rappelons en M1 sur (C). La tangente à (C) en M1 coupe l'axe des abscisses en x2 , entre α et x1 , etc.
Graphiquement et du fait de la concavité constante de la courbe, on constate que la suite (xn) converge vers α. Prouvons ce résultat :
Utilisant l'équation de la tangente en un point M(x,y) de (C), on obtient successivement :
x1 = xo - yo/y'o , x2 = x1 - y1/y'1
et, plus généralement : si xo est donné dans V :
Posons h(x) = x - f(x)/f '(x) . Nous avons xn+1 = h(xn). Nos hypothèses permettent d'écrire :
Le critère du point fixe indique qu'il y a convergence de (xn) vers α tel que h(α) = α, d'où f(α) = 0 à condition que, pour tout x de V, nous ayons : 0 < | h'(x) | < M < 1, le réel M étant indépendant de x.
Or si nous choisissons xo assez voisin de α, f(x) sera voisin de zéro et la relation (*) ci-dessus assure l'encadrement 0 < |h'(x)|< 1 petit à condition que ni f '(x), ni f ''(x) ne soient pas proches de zéro : la fonction dérivée seconde ne doit donc pas s'annuler : (C) doit garder la même concavité sur V.
Cas de zéros d'ordre p > 1 :
La méthode ne devrait donc pas converger au voisinage de zéros multiples : qui annulent simultanément la fonction f et sa dérivée f'. Par exemple f(x) = x3 - 2x2 - 4x + 8 = (x + 2)(x - 2)2. Qu'en est-il de tels zéros dans le cas général ?
Supposons la fonction f de classe Cp (p fois continûment dérivable, p > 2) et admettant une dérivée d'ordre p + 1 sur le voisinage V du zéro α. Les fonctions f' et f'' admettent le même zéro d'ordre p - 1 et p - 2 respectivement et f, f' et f'' admettent alors des développements de Taylor-Lagrange d'ordre p + 1 sur l'intervalle ]x,α[ ou ]α,x[ inclus dans V.
Vu que f(k)(α) = 0 pour k élément de {0,1,..., p-1}, on peut écrire :
où cx, c'x et c"x sont éléments de ]x,α[ . Ainsi h'(x) s'écrira pour x élément de V :
Par suite pour x suffisamment voisin de α, ce qui est le cas dans V, on aura f (p)(cx), f (p)(c'x) et f (p)(c"x) sensiblement égaux et, par là :
h'(x) ≅ 1 - 1/p < 1
Ce qui assure la convergence du procédé vers α en vertu du critère du point fixe.
Par exemple, pour l'équation 12x5 - 105x4 + 300x3 - 270x2 - 81 = 0, la méthode de Newton converge parfaitement pour le zéro triple a = 3 de f, avec xo = 2 comme approximation initiale.
En remarquant que xn+1 - xn = -yn/y'n , on voit, dans les conditions licites d'utilisation, que la suite (xn) est soit croissante, soit décroissante. Cette propriété permet de combiner cette méthode des tangentes à celle de Lagrange, dite des sécantes.
Programmation de la méthode en JavaScript : » version tableur |
et il est encore plus efficace d'utiliser la formule dite de la dérivée symétrique, utilisée dans ce programme :
Cette méthode d'interpolation est parfois dite regula falsi : » règle de fausse position.
<SCRIPT
LANGUAGE=JavaScript> var fonc; var pi=3.141592653589793 ; var e=2.7182818284590452;
function meth_tg() function fin() function f(x) |
Commentaires :
Pour tester ce programme vous devez entrer votre fonction en utilisant une syntaxe comprise par le langage JavaScript. L'instruction with (Math), placée en début de procédure, évite à l'utilisateur de préciser Math devant chaque fonction mathématique utilisée. Les opérations et fonctions usuelles sont les suivantes :
Discussion :
La précision souhaitée est donnée sous la forme d'un entier e : l'ordinateur compare alors |xn+1 - xn| à 10-e. On peut contrôler la convergence en vérifiant que |xn+1 - xn| tend vers 0.
On pourra vérifier qu'à précision égale, on obtient une solution beaucoup plus rapidement par cette méthode que par la méthode dichotomique : dans la majorité des cas "usuels", on constate que x4 ou x5 est une excellente approximation, alors qu'il faudrait pousser au moins à x20 par dichotomie.
Prendre h de l'ordre de 10-4 est un choix judicieux et efficace. Choisir un h trop petit risque de conduire à f '(xn) = 0 ou à des résultats aberrants car, en soustraction, l'ordinateur fait de grosses erreurs si les opérandes sont sensiblement égaux. Il s'agit aussi de bien choisir la valeur initiale xo : si la fonction admet plusieurs zéros relativement proches l'un de l'autre, la méthode risque de glisser vers une solution non recherchée : c'est le problème de la séparation des racines d'une équation.
Exemple d'exécution :
L'équation résolue est sin(x) - x/2 = 0 au voisinage de x = 1.5 :
Autres méthodes : »