🔢Méthodes numériques : Newton et dichotomie

Cours de mathématiques · Terminale

Résoudre une équation f(x)=0f(x) = 0 de façon approchée : par dichotomie (on coupe en deux un intervalle qui encadre la solution) et par la méthode de Newton (xn+1=xnf(xn)/f(xn)x_{n+1} = x_n - f(x_n)/f'(x_n)). On impose le nombre d'itérations et on arrondit le résultat pour des tests fiables.

Ce que tu vas savoir faire

  • Comprendre le principe d'encadrement d'une racine par dichotomie.
  • Programmer la dichotomie avec un nombre d'itérations imposé.
  • Programmer la méthode de Newton à partir de f et de sa dérivée f'.
  • Renvoyer un résultat arrondi (round) pour obtenir une valeur déterministe.
  • Prévoir ce que renvoie un programme d'approximation après quelques itérations.

Le principe : approcher une solution de f(x) = 0

Règle

Beaucoup d'équations f(x)=0f(x) = 0 n'ont pas de solution exacte simple (par exemple x2=2x^2 = 2, ou x3+x1=0x^3 + x - 1 = 0). On en cherche alors une valeur approchée avec un algorithme.

Idée clé (théorème des valeurs intermédiaires) : si ff est continue et que f(a)f(a) et f(b)f(b) sont de signes contraires, alors il existe une solution entre aa et bb. On va resserrer cet encadrement.

On exécutera un nombre d'itérations fixé et on renverra une valeur arrondie avec round(x, k) : ainsi le résultat est toujours le même, ce qui rend les tests fiables.

⭐ Pour les curieux — pourquoi ça marche ? Imagine que tu traces la courbe de ff sans lever le crayon (c'est ça, « continue ») entre aa et bb. Si f(a)<0f(a) < 0, tu démarres sous l'axe des abscisses ; si f(b)>0f(b) > 0, tu finis au-dessus. Pour passer du dessous au dessus sans décoller le crayon, tu es bien obligé de traverser l'axe au moins une fois : ce point de traversée, c'est une solution de f(x)=0f(x) = 0. C'est tout le théorème des valeurs intermédiaires, et c'est précisément la continuité qui interdit de « sauter » par-dessus l'axe.

Méthode

Pour repérer un encadrement : calcule f(a) et f(b). Si f(a) * f(b) < 0, les signes sont opposés → une solution est piégée entre a et b.

Exemple

Pour f(x)=x22f(x) = x^2 - 2 : f(1)=1<0f(1) = -1 < 0 et f(2)=2>0f(2) = 2 > 0. La solution 21,41\sqrt 2 \approx 1{,}41 est bien entre 1 et 2.

Astuce

round(x, 4) arrondit à 4 décimales : round(1.41421356, 4) donne 1.4142. C'est ce qu'on renvoie pour comparer à une valeur attendue.

La dichotomie (couper en deux)

Règle

On part d'un intervalle [a,b][a, b] qui encadre la solution (f(a)f(a) et f(b)f(b) de signes contraires). À chaque étape :

  1. On calcule le milieu m=(a+b)/2m = (a + b)/2.
  2. On regarde le signe de f(m)f(m) pour savoir dans quelle moitié se trouve la solution.
  3. On remplace aa ou bb par mm : l'intervalle est deux fois plus petit.
def dicho(a, b, n):
    for _ in range(n):
        m = (a + b) / 2
        if (m * m - 2) * (a * a - 2) <= 0:  # f(m) et f(a) signes opposés
            b = m        # la racine est dans [a, m]
        else:
            a = m        # la racine est dans [m, b]
    return round((a + b) / 2, 4)

Ici f(x)=x22f(x) = x^2 - 2. Après n étapes, l'intervalle a été divisé par 2n2^n : on s'approche très vite de la solution.

⭐ Pour les curieux — pourquoi ça marche ? À chaque étape on garde la moitié de l'intervalle où ff change encore de signe (la racine y reste donc emprisonnée), et cette moitié a exactement la moitié de la largeur précédente. En partant d'une largeur L0=baL_0 = b - a, on obtient L1=L02L_1 = \dfrac{L_0}{2}, puis L2=L04L_2 = \dfrac{L_0}{4}, et ainsi de suite : c'est une suite géométrique de raison 12\frac{1}{2}, donc après nn étapes la largeur vaut Ln=L02nL_n = \dfrac{L_0}{2^n}. Ce 2n2^n au dénominateur explose vite : 10 étapes divisent déjà l'intervalle par plus de 1000 (210=10242^{10} = 1024), ce qui garantit qu'on approche la racine d'aussi près qu'on veut.

Méthode

Pour programmer une dichotomie sur f(x)=0f(x) = 0 :

  1. Boucle for _ in range(n): (nombre d'itérations imposé).
  2. Milieu m = (a + b) / 2.
  3. Compare les signes : if f(m) * f(a) <= 0: → la racine est à gauche, donc b = m ; sinon a = m.
  4. Renvoie round((a + b) / 2, k) (le milieu final, meilleure estimation).
Exemple

Pour f(x)=x22f(x) = x^2 - 2 sur [1,2][1, 2] avec n = 1 : m=1,5m = 1{,}5, f(1,5)=0,25>0f(1{,}5) = 0{,}25 > 0 (même signe que f(2)f(2)), donc on garde [1;1,5][1 ; 1{,}5]. Milieu final : round(1.25, 4) = 1.25.

Astuce

Comparer les signes avec un produit f(m) * f(a) <= 0 évite d'écrire plein de if. Si le produit est négatif ou nul, les signes sont opposés (racine entre a et m).

La méthode de Newton

Règle

La méthode de Newton approche une racine de ff en suivant la tangente à la courbe. À partir d'un point de départ x0x_0, on itère :

xn+1=xnf(xn)f(xn).x_{n+1} = x_n - \dfrac{f(x_n)}{f'(x_n)}.

Géométriquement, xn+1x_{n+1} est l'endroit où la tangente en xnx_n coupe l'axe des abscisses. Quand ça converge, c'est beaucoup plus rapide que la dichotomie.

def newton(x0, n):
    x = x0
    for _ in range(n):
        x = x - (x * x - 2) / (2 * x)   # f(x)=x^2-2, f'(x)=2x
    return round(x, 4)

Pour f(x)=x22f(x) = x^2 - 2, on a f(x)=2xf'(x) = 2x. En partant de x0=2x_0 = 2, on converge vers 21,4142\sqrt 2 \approx 1{,}4142 en très peu d'étapes.

⭐ Pour les curieux — pourquoi ça marche ? La formule de Newton n'est pas magique : elle tombe de l'équation de la tangente, déjà connue en Tle. La tangente à la courbe au point xnx_n a pour équation y=f(xn)+f(xn)(xxn)y = f(x_n) + f'(x_n)\,(x - x_n). On cherche où cette droite coupe l'axe des abscisses, c'est-à-dire où y=0y = 0 : on résout f(xn)+f(xn)(xxn)=0f(x_n) + f'(x_n)\,(x - x_n) = 0, ce qui donne x=xnf(xn)f(xn)x = x_n - \dfrac{f(x_n)}{f'(x_n)}. C'est exactement xn+1x_{n+1} : on glisse le long de la tangente jusqu'à l'axe, et on recommence. On comprend du coup pourquoi f(xn)=0f'(x_n) = 0 casse tout : une tangente horizontale ne croise jamais l'axe !

Méthode

Pour programmer Newton :

  1. Initialise x = x0.
  2. Boucle for _ in range(n):.
  3. À chaque tour : x = x - f(x) / fprime(x) (remplace f et fprime par leurs expressions).
  4. Renvoie round(x, k).
Exemple

Newton pour 2\sqrt 2, départ x0=2x_0 = 2 :

  • x1=2(42)/4=1,5x_1 = 2 - (4-2)/4 = 1{,}5
  • x2=1,5(2,252)/3=1,41666x_2 = 1{,}5 - (2{,}25-2)/3 = 1{,}41666\dots

newton(2, 2) renvoie donc round(1.41666..., 4) = 1.4167.

Astuce

Newton converge en peu d'étapes mais il faut un bon point de départ et f(x)0f'(x) \ne 0. Sinon on divise par zéro ! La dichotomie, elle, est plus lente mais toujours sûre dès qu'on a un bon encadrement de départ.

Arrondir pour des résultats reproductibles

Règle

Une méthode approchée donne un nombre avec beaucoup de décimales (1.4142135623730951). Pour pouvoir comparer à une valeur attendue, on arrondit avec round(x, k) :

round(1.4142135623730951, 4)   # -> 1.4142
round(1.41666666, 4)           # -> 1.4167

Le deuxième argument k est le nombre de décimales gardées. On choisit k (souvent 3 ou 4) et on l'indique dans l'énoncé pour que tout le monde obtienne la même réponse.

Méthode

Renvoie toujours round(resultat, k) à la fin d'une méthode approchée. Fais bien tes calculs sans arrondir dans la boucle, et arrondis seulement à la fin : sinon tu accumules des erreurs.

Exemple

round(2.5, 0) peut surprendre : Python utilise l'arrondi « au pair le plus proche » et renvoie 2.0. En pratique, avec k ≥ 3, ce détail n'a aucun impact sur nos exercices.

Astuce

Arrondis uniquement la valeur renvoyée, pas les valeurs intermédiaires : tu gardes ainsi toute la précision pendant les itérations.

Comparer dichotomie et Newton

Règle

Les deux méthodes résolvent f(x)=0f(x) = 0, mais différemment :

DichotomieNewton
Donnéesun intervalle [a,b][a,b]un point x0x_0 et ff'
Vitesselente (÷2 par étape)très rapide
Sûretétoujours si bon encadrementdépend du départ

En pratique : la dichotomie est robuste et facile à écrire ; Newton est ultra-rapide quand on connaît ff' et qu'on part assez près de la solution.

Méthode

Choisis la dichotomie quand tu as un encadrement sûr et que tu veux un résultat garanti. Choisis Newton quand tu connais f(x)f'(x) et que tu veux peu d'itérations.

Exemple

Pour 2\sqrt 2 à 10410^{-4} près : la dichotomie depuis [1,2][1, 2] demande une quinzaine d'étapes ; Newton depuis x0=2x_0 = 2 y arrive en 4 étapes.

Astuce

Newton qui « part en vrille » (diverge) est souvent dû à un mauvais point de départ ou à f(x)f'(x) proche de 0. Dans le doute, encadre d'abord avec quelques dichotomies, puis affine avec Newton.

Tu as lu le cours ? Passe à la pratique.

Un coach IA te guide sans jamais donner la réponse, avec des exercices et des quiz sur ce chapitre. Version d'essai gratuite, sans limite de durée.

S'entraîner avec le coach IA — gratuit