Introduction
La méthode de dichotomie permet de calculer une valeur approchée de la solution α d’une équation f(x) = 0, dont l’existence est assurée par le théorème des valeurs intermédiaires. Ce sixième chapitre commence par un rappel du théorème et de son corollaire (théorème de la bijection).
Le principe est expliqué pas à pas : couper l’intervalle en deux et garder la moitié qui contient α, jusqu’à atteindre la précision voulue. Un exemple est traité entièrement à la main avec f(x) = x³ + x − 1 sur [0 ; 1], puis viennent l’algorithme général et sa variante pour résoudre f(x) = k.
Les programmes sont donnés en algorithme, en Python et sur TI-82, avec les erreurs classiques et des exercices, dont une approximation de ln 3 sans la touche ln et un calcul du nombre d’étapes nécessaires.
Chapitre précédent : chapitre 5 – approcher une limite ou une constante · chapitre suivant : chapitre 7 – lire, compléter, corriger un programme (type bac). Retrouvez tous les chapitres dans la rubrique Algorithmique et Python.
Cours proposé par Pr. Elakili sur Mission Maths 360.
Rappel : le théorème des valeurs intermédiaires et son corollaire (théorème de la bijection)
Si
est continue et strictement monotone sur
, alors pour tout réel
compris entre
et
, l’équation
admet une unique solution
dans
. En particulier, si
et
sont de signes contraires,
s’annule une seule fois sur
.
Le théorème donne l’existence de
, mais pas sa valeur : la dichotomie permet d’en calculer une valeur approchée.
1. Le principe : couper l’intervalle en deux
On part de
avec
et
de signes contraires. On calcule le milieu
:
- si
et
sont de signes contraires, c’est-à-dire
, alors
: on remplace
par
; - sinon,
: on remplace
par
.
On recommence tant que l’amplitude
est supérieure à la précision
voulue. À la fin,
avec
. À chaque étape, l’amplitude est divisée par
: après
étapes, elle vaut
.
Exemple à la main :
sur
, précision ![]()
est continue et
, donc
est strictement croissante sur
;
et
. D’après le théorème de la bijection,
a une unique solution
.
| étape | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| a | 0 | 0,5 | 0,5 | 0,625 | 0,625 | 0,656 25 | 0,671 875 |
| b | 1 | 1 | 0,75 | 0,75 | 0,687 5 | 0,687 5 | 0,687 5 |
| m | 0,5 | 0,75 | 0,625 | 0,687 5 | 0,656 25 | 0,671 875 | 0,679 687 5 |
| signe de f(m) | − | + | − | + | − | − | − |
Après 7 étapes :
, amplitude
. Donc
à
près (en réalité
).
2. L’algorithme
Pack 1 – cas général :
et
de signes contraires
Algorithme
Saisir a, b, ε
Tant que b − a > ε
m ← (a + b)/2
Si f(a) × f(m) ⩽ 0 alors
b ← m
Sinon
a ← m
Fin Si
Fin Tant que
Afficher a et b
Python
def f(x):
return x**3 + x - 1
def dichotomie(a, b, eps):
while b - a > eps:
m = (a + b) / 2
if f(a)*f(m) <= 0:
b = m
else:
a = m
return a, b
TI-82
:Prompt A,B,E
:TantQue B-A>E
:(A+B)/2→M
:Si Y1(A)*Y1(M)⩽0
:Alors
:M→B
:Sinon
:M→A
:Fin
:Fin
:Disp A,B
(avec Y1=X^3+X-1 ; deux Fin :
un pour Si, un pour TantQue)
Essai : dichotomie(0, 1, 0.01) renvoie (0.6796875, 0.6875) : on retrouve le tableau. Avec eps = 10**-6, on obtient 0,682 327… en 20 étapes.
Combien d’étapes ? (une recherche de seuil, chapitre 4)
Après
étapes, l’amplitude vaut
. Sur
, on cherche le plus petit
tel que
, c’est-à-dire
:
| ε | ||||
|---|---|---|---|---|
| étapes | 4 | 7 | 10 | 20 |
car
,
,
,
. À retenir : environ 3,3 étapes par décimale. C’est sûr mais lent, comparé à la méthode de Héron (chapitre 5) qui double le nombre de décimales à chaque étape.
Pack 2 – l’équation
avec
strictement croissante
On résout
sur
. La fonction
est continue et strictement croissante (somme de deux fonctions strictement croissantes),
et
: l’équation
a une unique solution
. Comme
est croissante, le test est plus simple : si
, la solution est à droite de
.
Algorithme
Saisir ε
a ← 0 ; b ← 1
Tant que b − a > ε
m ← (a + b)/2
Si em + m < 2 alors
a ← m
Sinon
b ← m
Fin Si
Fin Tant que
Afficher a et b
Python
from math import exp
def g(x):
return exp(x) + x
def solution(k, eps):
a, b = 0, 1
while b - a > eps:
m = (a + b) / 2
if g(m) < k:
a = m
else:
b = m
return a, b
TI-82
:Prompt E
:0→A
:1→B
:TantQue B-A>E
:(A+B)/2→M
:Si Y2(M)<2
:Alors
:M→A
:Sinon
:M→B
:Fin
:Fin
:Disp A,B
(avec Y2=e^(X)+X : 2nde ln)
Résultat : solution(2, 0.001) renvoie (0.4423828125, 0.443359375) après 10 étapes :
à
près.
Remarque
Si
est strictement décroissante, on inverse le test : si
, la solution est à droite de
(
).
3. Vérifier sur la TI-82 sans programme
- Par la table :
Y1=X^3+X-1, puis déf table DébTable=0.6, PasTable=0.01 :
, donc
(c’est la méthode du « balayage »). - Par le graphique : tracer la courbe (graphe), puis 2nde trace (menu CALCULS) → zéro : indiquer une borne gauche, une borne droite et une valeur proche ; la TI affiche
X=0.68232780. Pour
, tracer aussi Y3=2et utiliser intersection.
Les erreurs classiques
- Oublier de justifier l’existence et l’unicité de
(continuité, stricte monotonie, valeurs aux bornes) avant de lancer l’algorithme. - Inverser a ← m et b ← m : faire un test sur un exemple simple.
- Sur la TI, oublier l’un des deux
Fin. - Confondre la précision ε (l’amplitude finale) et le nombre d’étapes.
4. À vous de jouer
Exercice 1 · À vous de jouer ★★★
Algorithme + Python + TI-82.
- Montrer que
a une unique solution
dans
, puis en donner un encadrement d’amplitude
par dichotomie. (Attention : la fonction est décroissante sur
.) - Approcher
sans la touche ln : montrer que l’équation
a une unique solution dans
, puis l’approcher à
près. - Combien d’étapes faut-il pour obtenir, sur un intervalle de longueur
, un encadrement d’amplitude
? Écrire le programme qui calcule ce nombre.
Corrigé
1.
sur
,
,
; après 10 étapes :
⇝
(
)
2.
est continue et strictement croissante,
;
⇝
, et en effet ![]()
3.
;
et
.
⇝ ![]()
Télécharger le chapitre en PDF
Pour réviser sur papier, téléchargez le chapitre complet au format PDF (avec les réponses des exercices).
