Vous êtes sur la page 1sur 1

Programme Turbo-Pascal relatif à la méthode de dichotomie :

Etymologie du mot dichotomie : du grec ancien ” couper en deux”


car dikha = en deux et thomos, de temnein = couper.
PROGRAM dichotomie ;
VAR eps, a, b, c : REAL ;

FUNCTION f (x :REAL) : REAL ;


BEGIN
f :=exp(x)-2 ;
END ;

BEGIN
REPEAT
WRITELN(’Entrer la valeur de epsilon > 0 : incertitude maximale recherchée’) ; READLN(eps) ;
UNTIL eps>0 ;
REPEAT
WRITELN(’Entrer la valeur de a’) ; READLN(a) ;
WRITELN(’Entrer la valeur de b’) ; READLN(b) ;
UNTIL (f(a)*f(b) <= 0) ;

REPEAT
c :=(a+b)/2 ;
IF f(b)*f(c)<=0 THEN a :=c ELSE b :=c ;
UNTIL abs(b-a)<=2*eps ;
c :=(a+b)/2 ;
WRITELN(’Une valeur approchée de la solution à ’,eps, ’près est ’, c) ;
END.

Les question suivantes ont pour but de vous aider à déterminer la finalité de ce programme Turbo-Pascal.
1. Représenter graphiquement la fonction f définie en sous-programme.
2. Comment est choisi epsilon par l’utilisateur ? et a et b ?
A quoi servent les deux premières boucles REPEAT ... UNTIL ?
3. Exécuter à la main le programme pour les valeurs initiales a = −2, b = 2 et epsilon = 1/2 : commencer par
vérifier que a, b et epsilon sont des données acceptables puis exécuter le reste du programme étape par étape.
4. Utiliser la représentation graphique de f pour visualiser toutes les valeurs successives de a, b, et c.
Que représentent a et b au cours du programme ? et c ?
5. Que dire sur le signe de f (a) et de f (b) au cours du programme ?
6. Quelle est la question à laquelle répond ce programme ?
7. A quoi sert epsilon ? et la dernière instruction c :=(a+b)/2 ?

Réponses :
1. La fonction f est définie sur R par f (x) = ex − 2.
2. L’utilisateur doit choisir eps strictement positif ; et a et b tels que f (a)f (b) ≤ 0 c’est-à-dire tels que l’intervalle
de bornes a et b contienne un zéro de f . Les repeat until font office de garde-fou pour ces données.
3. eps = 1/2 > 0 et f (−2) < 0, f (2) > 0 donc f (−2)f (2) < 0. Les données sont donc acceptables.
c= a= b= b-a=
-2 2 on entre dans la boucle repeat
0 0 2 2 >2*eps donc on poursuit
1 0 1 1≤ 2*eps donc la boucle repeat s’arrête et le programme renvoie c = 1/2

4. L’intervalle de bornes a et b voit son amplitude diminuer, par emboı̂tement de sous-intervalles [a; b], tels que le
sous- intervalle choisi contienne toujours un zéro de f (i.e. encadre la solution).
c représente à chaque étape le milieu des intervalles [a; b] emboı̂tés et devient a ou b à l’étape suivante.
5. La méthode est telle que f (a) ≤ 0 et f (b) ≥ 0 tout au long du programme. Remarquer que si la fonction était
localement décroissante on aurait le contraire.
6. L’exécution du programme doit conduire à une valeur approchée de la solution α = ln(2) ' 0, 6931471 de
l’équation f (x) = 0, pour n’importe quelles valeurs initiales a et b (avec a < b), par dichotomie.
7. Sans cette ligne, on aurait une valeur approchée à 2*eps près car la boucle repeat until s’arrète quand l’encadre-
ment [a,b] de la solution est de taille inférieure à 2*eps. Donc on reprend le milieu une dernière fois pour avoir
une précision de 2*eps/2=eps.
Remarque : La méthode de dichotomie est une méthode simple mais plutôt efficace car dans notre exemple, il ne
faudrait que 11 manipulations pour obtenir une valeur approchée de la solution à 0.001 près.