Module 07 · Leçon 2
Résolution numérique d'équations f(x) = 0
Ce que vous saurez faire
- Encadrer une racine par changement de signe
- Approcher une racine par dichotomie
- Contrôler la précision avec un epsilon
Avant de commencer
Vous voulez calculer √2 (ou plus généralement résoudre x² − 2 = 0).
Pas de formule simple en arithmétique ? Pas grave : on va approcher
la racine itérativement.
1. Théorème des valeurs intermédiaires (rappel)
Si f est continue sur [a, b] et f(a) × f(b) < 0 (signes
opposés), alors il existe au moins une racine c dans [a, b].
2. Méthode de dichotomie
À chaque étape :
- Calculer le milieu
m = (a + b) / 2. - Si
f(m) = 0: on a la racine. - Si
f(a) × f(m) < 0: la racine est dans[a, m]→b ← m. - Sinon :
a ← m.
On répète jusqu'à b − a < ε.
DEF FN Dicho(a, b, eps : réel) : réel
Tant que (b - a) > eps Faire
m ← (a + b) / 2
Si f(a) * f(m) < 0 Alors
b ← m
Sinon
a ← m
FinSi
FinTantQue
Dicho ← (a + b) / 2
Fin Dicho
DEF FN Dicho(a, b, eps : réel) : réel
Tant que (b - a) > eps Faire
m ← (a + b) / 2
Si f(a) * f(m) < 0 Alors
b ← m
Sinon
a ← m
FinSi
FinTantQue
Dicho ← (a + b) / 2
Fin Dicho
FUNCTION f(x : real) : real;
BEGIN
f := x * x - 2; { exemple : √2 }
END;
FUNCTION Dicho(a, b, eps : real) : real;
VAR m : real;
BEGIN
WHILE (b - a) > eps DO
BEGIN
m := (a + b) / 2;
IF f(a) * f(m) < 0 THEN
b := m
ELSE
a := m;
END;
Dicho := (a + b) / 2;
END;
3. Trace : √2 avec ε = 0.01
f(x) = x² − 2, on part de [a=1, b=2] (car f(1) = −1 < 0 et
f(2) = 2 > 0).
| Itération | a | b | m | f(m) | Décision |
|---|---|---|---|---|---|
| 1 | 1.0 | 2.0 | 1.5 | 0.25 | f(a)*f(m) < 0 → b = 1.5 |
| 2 | 1.0 | 1.5 | 1.25 | -0.4375 | f(a)*f(m) > 0 → a = 1.25 |
| 3 | 1.25 | 1.5 | 1.375 | -0.109 | a = 1.375 |
| 4 | 1.375 | 1.5 | 1.4375 | 0.066 | b = 1.4375 |
| 5 | 1.375 | 1.4375 | 1.40625 | -0.024 | a = 1.40625 |
| 6 | 1.40625 | 1.4375 | 1.421875 | 0.021 | b = 1.421875 |
| 7 | 1.40625 | 1.421875 | 1.414 | ... | ε atteint |
Résultat : ≈ 1.414 (≈ √2 = 1.4142…).
4. Précision et nombre d'itérations
Après k itérations, l'intervalle vaut (b₀ − a₀) / 2^k. Pour atteindre
ε :
(b₀ − a₀) / 2^k ≤ ε ⟹ k ≥ log₂((b₀ − a₀) / ε)
Pour [1, 2] et ε = 0.0001 : k ≥ log₂(10000) ≈ 14 itérations.
5. Exercices
Pour f(x) = x³ − 5 sur [1, 2] avec ε = 0.5, donner le premier
milieu et la décision (a ou b mis à jour).
Voir le corrigé
m = 1.5. f(1) = -4, f(1.5) = 3.375 - 5 = -1.625. Même signe que
f(a), donc a := 1.5. Nouvel intervalle : [1.5, 2].
Approcher la racine de f(x) = x³ + x − 1 dans [0, 1] avec ε = 0.001.
Écrire le programme Pascal complet.
Voir le corrigé
PROGRAM Racine;
VAR a, b, eps, x : real;
FUNCTION f(x : real) : real;
BEGIN
f := x*x*x + x - 1;
END;
FUNCTION Dicho(a, b, eps : real) : real;
VAR m : real;
BEGIN
WHILE (b - a) > eps DO
BEGIN
m := (a + b) / 2;
IF f(a) * f(m) < 0 THEN
b := m
ELSE
a := m;
END;
Dicho := (a + b) / 2;
END;
BEGIN
a := 0; b := 1; eps := 0.001;
x := Dicho(a, b, eps);
Writeln('Racine ≈ ', x:8:4);
END.
Résultat ≈ 0.682.
La méthode de Newton converge plus vite que la dichotomie :
x_{n+1} = x_n − f(x_n) / f'(x_n). Implémenter Newton pour f(x) = x² − 2
(donc f'(x) = 2x), avec x_0 = 1 et ε = 10⁻⁶.
Voir le corrigé
FUNCTION Newton(x0, eps : real) : real;
VAR x, xn : real;
BEGIN
x := x0;
REPEAT
xn := x - (x*x - 2) / (2*x);
x := xn;
UNTIL ABS(x*x - 2) < eps; { critère sur la valeur de f(x) }
Newton := x;
END;
Newton converge en ~5 itérations ; la dichotomie en aurait pris 20.
6. Erreurs fréquentes au bac
- Pas vérifier
f(a) * f(b) < 0au départ (sinon pas de racine garantie). WHILE b - a > epsmaisepstrop petit → boucle quasi infinie ou imprécisions flottantes.- Diviser par zéro en Newton si
f'(x) = 0.
7. Quiz
Quiz (5 questions)
La dichotomie nécessite que f soit :
À chaque itération, l'intervalle est :
Pour ε = 0.001 sur [0, 1], il faut environ :
La condition d'arrêt est :
Si f(a) > 0 et f(b) > 0, on peut conclure :