DM 11 dichotomie

publicité
DM 11 : algorithme de dichotomie
Compétences testées : Pratiquer une activité expérimentale ou algorithmique et Utiliser les outils logiciels adaptés à la résolution d’un problème.
Présentation d’un algorithme de dichotomie
Soit f une fonction définie sur un intervalle [a ; b]. On suppose que l’équation
f(x) = 0 admet une solution unique x0 dans l’intervalle ]a ; b[.
b[ On applique
l’algorithme ci-contre à la fonction f :
1°) Recopiez et complétez le tableau suivant pour la fonction f telle que f(x)=7xf(x)=7x
1 sur [0 ; 1] en prenant N=4.
Explication de cet algorithme
intervalle)
Ici a = 0 et b = 1 (ce sont les bornes de l’intervalle)
La boucle Pour k=1 jusqu’à N va être faite 4 fois car N = 4.
Que calcule cette boucle ? La variable m, qui correspond à la valeur moyenne
entre a et b (le milieu de l’intervalle [a ; b]).
Ensuite elle compare l’image
image par f de ce milieu et de la borne inférieure a. Si
ces images ont le même signe cela signifie que la courbe de f de coupe pas l’axe
l
des abscisses sur [a ;m] mais sur [m ; b] donc on prend pour nouvelle valeur de
a la valeur de m précédente. Sinon c’est
est b qui est changé en m. Puis on
recommence... Ainsi l’intervalle
intervalle qui contient la valeur x0 se réduit de plus en
plus et cela permet d’avoir
avoir une estimation de la valeur qui annule la fonction f
Pour k = 1 m prend la valeur (0+1)/2=0,5 . Or f(m)=f(0,5)=7x0,5-1=2,5
f(m
et
f(a)=f(0)=-1
1 donc f(a) et f(m) sont de signe contraire donc c’est
c
b qui prend la
valeur de m. Ainsi de suite...
k
m
a
b
0
1
1
0,5
0
0,5
2
0,25
0
0,25
3
0,125
0,125
0,25
4
0,1875
0,125
0,1875
2°) Représentez la fonction f précédente ainsi que les différentes valeurs prises
par a et b lorsque k varie.
3°) Quelle semble être l’utilité de cet algorithme (imaginez un N très grand)
Ce qui a été dit dans l’explication : permettre d’avoir un encadrement d’une
valeur qui annule la fonction que l’on étudie.
Programmation de l’algorithme
En vous aidant du fascicule de votre livre pages XV et XXVIII sur l’algorithmique, programmez cet algorithme sur votre
calculatrice.
Essais du programme
Appliquez votre programme aux fonctions suivantes et choisir un N tel que (b-a) final soit inférieur à 0,01. Ecrivez vos résultats.
1°) f(x) = x²-4x+1 sur [0 ; 1] puis sur [3 ; 4]
On trouve sur [0 ; 1] a=0,265625 ; b = 0,2734375 pour N = 7 avec b-a = 0,0078125
On trouve sur [3 ; 4] a=3,7265625 ; b = 3,734375 pour N = 7 avec b-a = 0,0078125
3
2°) f(x) = x +2x-2 sur [0 ; 1]
On trouve sur [0 ; 1] a=0,765625 ; b = 0,7734375 pour N = 7 avec b-a = 0,0078125
Modification de l’algorithme
L’algorithme précédent suppose que l’on décide à l’avance le nombre d’itérations (de boucles) que le programme devra réaliser
(c’est le nombre N). Cela n’est pas pratique. On va donc modifier l’algorithme et remplacer la boucle « Pour... » par une boucle
« Tant que... » (While en anglais). Voici les programmes écrits avec cette modification :
Pour les TI :
Pour les Casio :
1°) Ici P est une variable correspondant à la précision souhaitée. Expliquez pourquoi.
La sortie de la boucle Tant que est conditionnée par la valeur de B-A. Lorsque B-A devient inférieure à P le calcul s’arrête. P
correspond donc à la précision de l’estimation de la valeur de x0.
2°) Ecrivez l’algorithme correspondant à ce programme (en prenant le modèle de l’algorithme du début)
Entrées
Saisir A, B : les bornes de l’intervalle d’étude
Saisir f : la fonction étudiée
Saisir P : la précision attendue
Traitement
Tant que (B-A) est supérieure à P
C prend la valeur (A+B)/2
Si f(C) et f(A) sont de même signe alors
A prend la valeur C
sinon
B prend la valeur C
FinSi
Fin Tant que
Sortie
Afficher A
Afficher B
3°) Programmez votre calculatrice et vérifiez vos réponses obtenues aux questions 1°) et 2°) de la partie Essais du programme.
On retrouve bien les mêmes valeurs
4°) Utilisez ce programme pour trouver la valeur de x précise à 0,0001 près annulant la fonction f telle que
f(x)= x²-x-4 sur [2 ; 3].
On trouve a=2,561523438 et b=2,561584473 ce qui donne pour x0 à 0,0001 près la valeur 2,5615
Téléchargement