Aller au contenu

Leçon 9

Méthode de Newton en Python

Vidéo 9 : Méthode de Newton en Python · 4 min 21 s · sous-titres en français

Le cours écrit

9.1 L'idée

On veut résoudre f(x)=0f(x) = 0, lorsqu'aucune formule n'est disponible. L'idée de Newton : on remplace la courbe par sa tangente, car on sait où une droite coupe l'axe des abscisses.

On part d'un nombre x0x_0. La tangente au point d'abscisse x0x_0 coupe l'axe en un nombre x1x_1. La tangente au point d'abscisse x1x_1 le coupe en x2x_2, et ainsi de suite.

9.2 La formule

La tangente au point d'abscisse aa a pour équation y=f(a)+f′(a)(x−a)y = f(a) + f'(a)(x - a). Elle coupe l'axe des abscisses là où y=0y = 0. Si f′(a)≠0f'(a) \neq 0, cela donne x=a−f(a)f′(a)x = a - \dfrac{f(a)}{f'(a)}. On obtient une suite définie par son premier terme et la relation xn+1=xn−f(xn)f′(xn).x_{n + 1} = x_n - \frac{f(x_n)}{f'(x_n)}.

Exemple 34. Pour f(x)=x2−2f(x) = x^2 - 2, on a f′(x)=2xf'(x) = 2x. La solution positive de f(x)=0f(x) = 0 est 2\sqrt2. Avec x0=2x_0 = 2 : x1=2−24=1,5,x2=1,5−0,253=1712≈1,4167.x_1 = 2 - \frac24 = 1{,}5, \qquad x_2 = 1{,}5 - \frac{0{,}25}{3} = \frac{17}{12} \approx 1{,}4167.

9.3 Le programme

def f(x):
    return x**2 - 2

def df(x):
    return 2*x

def newton(x0, n):
    liste = [x0]
    x = x0
    for k in range(n):
        x = x - f(x) / df(x)
        liste.append(x)
    return liste

En langage naturel, l'instruction de la boucle s'écrit x←x−f(x)f′(x)x \leftarrow x - \dfrac{f(x)}{f'(x)}. Chaque tâche a sa fonction : pour changer d'équation, on ne modifie que f et df.

Étape Valeur renvoyée par newton(2, 5) Décimales justes
00 2
11 1.5 aucune
22 1.4166666666666667 22
33 1.4142156862745099 55
44 1.4142135623746899 1111
55 1.4142135623730951 toutes celles affichées

La convergence est très rapide : le nombre de décimales justes double à peu près à chaque étape.

9.4 Une équation sans formule

Exemple 35. Soit f(x)=x3+x−1f(x) = x^3 + x - 1. Sa dérivée, f′(x)=3x2+1f'(x) = 3x^2 + 1, est strictement positive : ff est strictement croissante sur R\mathbb{R}. Sur sa courbe, on voit qu'elle coupe l'axe des abscisses une seule fois, entre 00 et 11. Avec f et df adaptées, newton(1, 4) renvoie [1, 0.75, 0.686046511627907, 0.6823395825973142, 0.6823278039465127]. La solution vaut environ 0,68230{,}6823.

9.5 Des cas favorables

La méthode n'est pas magique. Si la tangente est horizontale, elle ne coupe pas l'axe : la formule diviserait par zéro. Si le point de départ est mal choisi, les nombres obtenus peuvent s'éloigner de la solution.

On se limite donc à des cas favorables : ff est strictement monotone autour de la solution, sa dérivée ne s'y annule pas, et on part assez près. Un calcul numérique donne une très bonne valeur approchée, mais il ne démontre rien sur la solution.

Lire le cours complet du chapitre

Exercices 17 et 18

  • Exercice 17 : Newton à la main
  • Exercice 18 : Newton en Python

Exercices du chapitre (PDF, 163 Ko)

Corrigés

Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.

Corrigés du chapitre (PDF, 152 Ko)

Tu es hors connexion. Les chapitres téléchargés restent disponibles dans Hors connexion.