TD n°2 - Algorithmes
Encadrer la solution d’une équation
Objectif
Concevoir des algorithmes permettant d’encadrer la solution d’une équation du typef(x)=0, où f est une fonction connue.
Première partie
Algorithmes de dichotomie
On suppose que la fonctionf est continueetstrictement monotonesur un intervalle [a;b] avec f(a) etf(b) de signes opposés.
Laméthode de dichotomieest un algorithme de recherche d’un zéro d’une fonction qui consiste à répéter des partages d’un intervalle en deux parties (on divise la longueur par 2) puis à sélectionner le sous-intervalle dans lequel existe un zéro de la fonction.
Concrètement, on part d’un intervalle [a;b] dans lequel on sait qu’il existe une solution à l’équa- tion f(x)=0. On calcule le centremde l’intervalle et on teste si la solution se trouve dans [a;m]
ou dans [m;b].
Si la solutionαest dans [a;m] donc sif(a) et f(m) sont de signes opposés soit :
f(a)×f(m)<0
y
b b b b b
a b
bf (a) m f (m)
b
α
Si la solutionαest dans [a;m], on recommence ce procédé dans [a;m] et donc on aura l’affec- tation :
b←−m et donc [a;b] devient [a;m]
Si la solutionαest dans [m;b] donc sif(a) et f(m) sont de même signe soit :
f(a)×f(m)>0 y
b b b b b
a
)b
b
f (b)
m
f (m)
bα
f (a)
Si la solutionαest dans [m;b], on recommence ce procédé dans [m;b] et donc on aura l’affec- tation :
a←−m et donc [a;b] devient [m;b]
Dichotomie
TD n°2 - Algorithmes - Encadrer la solution d’une équation
Exercice 1.
On reprend la fonction du TD n°1 (encadrement par balayage).
Soit la fonctionf définie sur [−2; 10] par :f(x)=x3−6x2+6.
1. On a montré (vous pouvez le refaire) que l’équationf(x)=0 admet 3 solutions sur [−2; 10].
Une solution uniqueαsur cet [−2; 0],βsur cet [0; 4] etγsur [4; 10]. Voici le tableau de variations attendu.
x Signe de f′(x)
Variations de f
−2 0 4 10
+ 0 −
−26
−26
66
−26
−26
406 406 α
0
β
0
γ
0
−0,94<α< −0,93 et 1,1<β<1,11 et 5,8<γ<5,81 On va utiliser ces résultats pour tester nos algorithmes.
2. Sous python, écrire une fonctiondichotomie(e,a,b,k)qui permet de trouver un encadrement d’une solution de l’équationf(x)=ksur l’intervalle [a;b].
On donne le pseudo code suivant à compléter :
On suppose ici que l’équation f(x)=0 admet une solutionαsur [a; b] et que la fonction f est monotone sur [a;b].
Fonction dichotomie(e,a,b)
’ ’ ’In : e la longueur de l’intervalle cherché,[a;b]l’intervalle de départ qui contient la solutionα Out : Les bornes de l’intervalle contenant la solutionαde f(x)=0’ ’ ’
#On a donc a<b et on suppose que la fonction f a été définie et est monotone sur[a;b]
Tant que (b−a>e) Faire m←− · · ·
Si· · · ·Alors #dans ce casαest dans[a;m]
· · · ←−m
Sinon #sinonαest dans[m;b]
· · · ←−m
Fin Tant que Envoyer (a,b)
Pseudo Code
3. Avec votre algorithme, retrouver les résultats de la question (1.).
4. On cherche le nombre de boucles exécutées lors du calcul de l’encadrement deαà 10−nprès avec [a;b]=[−2 ; 0].
En introduisant par exemple un compteur dans votre programme, compléter le tableau suivant : Encadrement deαsur [−2; 0] à 10−kprès 10−1près 10−2près 10−3près 10−4près
Nombres de boucles observées · · · ·
5. Faire de même avecβ.
Encadrement deβsur [0; 4] à 10−kprès 10−1près 10−2près 10−3près 10−4près
Nombres de boucles observées · · · ·
www.math93.com / M. Duffaud 2/3
TD n°2 - Algorithmes - Encadrer la solution d’une équation
6. Pournentier, on note [an;bn] l’intervalle sur lequel on se place à chaque étape dans l’algorithme de dichotomie et dans lequel appartient la solutionαde l’équationf(x)=0. On a donc :
• [a0;b0]=[a;b] de longueurb−a,
• Au 1erpassage : [a1;b1] de longueurb−a 2 ,
• Au 2epassage : [a2;b2] de longueur b1−a1
2 ...
6. a. Démontrer rapidement par récurrence qu’aunepassage, la solutionαse trouve dans un intervalle de lon- gueurb−a
2n .
6. b. On se place dans la configuration 1, avecαdans [a;b]=[−2; 0] . Résoudre à l’aide de la calculatrice, pourk=1,2,3,4 l’inéquation
b−a 2n ≤10−k Retrouver alors les résultats obtenus dans la question (4.).
6. c. On se place dans la configuration 2, avecβdans [a;b]=[0; 4] . Résoudre à l’aide de la calculatrice, pourn=1,2,3,4 l’inéquation
b−a 2n ≤10−k Retrouver les résultats obtenus dans la question (5.)
6. d. AVEC LA FONCTION LOGARITHME (on peut passer cette question).
La fonction logarithme népérien (la touche ln de la calculatrice) va nous permettre de résoudre des équations de ce type.
On peut montrer (on le fera plus tard dans l’année) que pournentier, l’inéquation avec b>aetkentier fixé, équivaut à :
b−a
2n ≤10−k ⇐⇒n≥k×ln 10
ln 2 +ln(b−a) ln 2 Retrouver alors les résultats précédents.
Remarque
6. e. La vitesse de convergence.
Lavitesse de convergence de la méthode de dichotomieest ditelinéairepar rapport au nombrekde décimales souhaitées.
A chaque étape l’erreur (longueur de l’intervalle) est divisée par 2.
Si on souhaitekdécimales exactes,e=10−kennitérations il faut que : b−a
2n ≤10−k ⇐⇒n≥k×ln 10
ln 2 +ln(b−a) ln 2 Sib−a=1 on an>3,3k, soit 4 étapes pour gain de 1 décimale.
Remarque
7. L’algorithme proposé ne teste pas le cas oùf(m)=0, c’est à dire le cas où la valeur exacte de la solution peut être donnée. Tester-le avec la fonctiongdéfinie sur [−2; 10] parg(x)=(x−1)(x−10).
8. Écrire un nouvel algorithme qui renvoie la solution exacte lorsque cela est possible.
[ Fin du devoir \
www.math93.com / M. Duffaud 3/3