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