Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique Chapitre 7 LES ALGORITHMES D’APPROXIMATIONS I. introduction : Les algorithmes d’approximations, peuvent être utilisés pour déterminer les valeurs approchées de la solution de certains problèmes dont on ne peut pas déterminer la valeur exacte de la solution. En effet, pour résoudre un tel problème, on doit balayer toute une plage de valeurs de données avec un pas choisi. La valeur de ce pas donne la précision sur la valeur approchée de la solution. Dans certains problèmes la variation du pas amène un ensemble de solutions réalisables, mais il existe toujours une meilleure solution. Un problème d’optimisation consiste à travers la meilleure solution dite solution optimale dans un ensemble de solutions réalisables. II. Problèmes d’optimisation : 1. Résolution d’un problème d’optimisation : Soit une feuille de carton carrée de 10 cm de coté, on découpe aux quatre coins quatre carrés de coté x cm, puis en relevant les quatre bords restants, on obtient une boite de forme parallélépipédique. On veut trouver la valeur de x telle que le volume de la boîte trouvé soit maximal. x On relevant les bords on trouve cette boîte 10 cm Prof : Soussi Ezzeddine Page 1 Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique Travail demandé : Déterminer le volume de la boite en fonction de x. Chercher la valeur approchée de x tel que le volume de la boîte est maximum. Réponse : Le volume = largeur * longueur * hauteur Avec Largeur = 10 – 2 * x Longueur = 10 – 2 * x Hauteur = x Donc Volume = (10 – 2 * x) * (10 – 2 * x) * x V = 4 * x3 – 40 * x2 + 100 * x = 4*x*(carré (x) – 10*x +25) Remarque : La détermination du volume de la boîte en fonction de x a donné une fonction numérique. L’étude de la variation de cette fonction montre que cette fonction admet un maximum. Le domaine de variation de x est de 0 à 5 (c-à-d de 0 à la moitié de la mesure du coté du carré). La feuille de carton peut être rectangulaire donc x variera de 0 à la moitié de la mesure de la largeur. Ce type de problème est appelé un problème d’optimisation. La résolution de ce problème consiste à déterminer une valeur approchée de x où la fonction admet un maximum. Pour déterminer la valeur approchée de x on peut utiliser la fonction suivante : Fonction valeur_app_x (pas : réel) : réel D’où (pas) représente le pas de variation de x. Analyse de la fonction valeur_app_x. Résultat = x Le domaine de variation de x est de 0 à 5. Il faut initialiser X_max et V_max à 0. La solution comporte une structure itérative à condition d’arrêt (Répéter … jusqu’à) pour parcourir tout le domaine de x avec une variation de pas donné. Pour chaque répétition, nous allons : Varier la valeur de x de pas. Calculer la valeur du volume. Echanger la valeur du volume maximum par la valeur calculée si ce dernier est strictement supérieur. La fonction retourne la valeur de x. Algorithme de la fonction Valeur_app_x : 0) Fonction Valeur_app_x (pas : réel) : réel 1) X0 2) V_max0 3) Répéter x x + pas v 4* x *(carré (x) – 10 * x – 25) si V > V_max alors X_max x V_max v Fin si Jusqu’à (x ≥5) Prof : Soussi Ezzeddine Page 2 Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique 4) Valeur_app_x X_max 5) Fin Valeur_app_x T.D.O : Objet V_max X_max Type Réel Réel Rôle Calcul du volume Recherche de x Algorithme du programme principal : 0) Début app_1 1) Ecrire (‘’ Donner la valeur du pas : ‘’) , Lire (pas) 2) X valeur_app_x (pas) 3) V 4*x*(carré (x) – 10 *x -25) 4) Ecrire (‘’ La valeur approchée de x = ‘’, x : 2 : 5 , ‘’cm’’) 5) Ecrire (‘’ Le volume maximum de la boite = ‘’, v : 2 : 5 , ‘’cm3’’) 6) Fin app_1 T.D.O : Objet pas v x Type Réel Réel Réel Rôle Variation de x Le volume maximum La valeur approchée de x Programme Pascal : program app_1; uses wincrt; var pas,v,x:real; function valeur_app_x(pas:real):real; var x_max,v_max:real; begin x:=0; v_max:=0; repeat x:=x+pas; v:=4*x*(sqr(x) - 10*x + 25); if v>v_max then begin v_max:=v; x_max:=x; end; until (x >= 5); valeur_app_x:=x_max; end; begin write('Donner la valeur de pas : '); readln(pas); x:=valeur_app_x(pas); Prof : Soussi Ezzeddine Page 3 Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique v:=4*x*(sqr(x)- 10*x + 25); writeln('la valeur de x = ',x:2:5,' cm'); write('Le volume maximum de la boîte = ',v:2:5,' cm3'); end. 2. Application : On se propose de déterminer le taux d’intérêt maximal choisi pour doubler un capital placé dans une banque durant une période de 5 ans. La valeur du capital et le pas de variation du taux d’intérêt sont des données. Solutions : A la fin du 1er mois, le capital devient : Cm1 = Cap + (Cap * taux / 100) A la fin du 2ème mois, le capital devient : Cm2 = Cm1 + (Cm1 * taux / 100) A la fin du 60ème mois, le capital devient : Cm60 = Cm59 + (Cm59 * taux / 100) Cm60 représente la valeur du capital après 5 ans qui doit être égale ou très proche de 2 * Cap. On doit refaire le calcul avec chaque fois la nouvelle valeur de taux qui est égale à taux + pas. Cap : représente le capital initial placé dans la banque. Pas : représente la valeur de variation du taux d’intérêt. Pour trouver la valeur approchée de taux on peut utiliser la fonction suivante : Algorithme de la fonction valeur_taux : 0) Fonction valeur_ taux (Cap, pas : réel) : réel 1) Tx pas 2) Répéter Cp Cap Pour i de 1 à 60 faire Cp Cp + (Cp * tx / 100) Fin pour Tx Tx + pas Jusqu’à (Cp>= 2 * Cap) 3) Valeur_ taux tx – pas 4) Fin valeur_ taux T.D.O : Objet Cp I Tx Type Réel Entier Réel Prof : Soussi Ezzeddine Rôle Capital à atteindre Compteur La valeur approchée du taux Page 4 Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique L’algorithme du programme principal : 0) Début app_2 1) Ecrire (‘'Donner la capital à placer à la banque : ‘'), Lire (cap) 2) Ecrire (‘'Donner la valeur du pas : '’), Lire (pas) 3) Taux valeur_taux(cap,pas) 4) Ecrire (‘'La valeur approchée du taux = ‘',taux:2:5) 5) Ecrire (‘'La nouvelle valeur du capital à placer à ‘',calcul_cap(cap,taux):2:5) 6) Fin app_2 T.D.O : Objet Cap Pas Taux Type Réel Réel Réel la banque après 5 ans: Rôle Capital initial Le pas de variation du taux La valeur approchée du taux Le programme principal : program app_2; uses wincrt; var cp,Cap,pas,taux:real; Function valeur_taux (Cap, pas : real) : real; var i:integer; cp:real; begin Taux := pas; Repeat Cp := Cap; For i := 1 to 60 do Cp := Cp + (Cp * taux / 100); Taux := Taux + pas; until (Cp>= 2 * Cap); Valeur_taux := taux - pas; end; function calcul_cap(cap,taux:real):real; var i:integer; cp:real; begin Cp := Cap; For i := 1 to 60 do Cp := Cp + (Cp * taux / 100); calcul_cap:=cp; end; begin write('Donner le capital à placer à la banque : '); readln(cap); Prof : Soussi Ezzeddine Page 5 Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique write('Donner la valeur du pas : '); readln(pas); taux:=valeur_taux(cap,pas); writeln('La valeur approchée du taux = ',taux:2:5); write('La nouvelle valeur du capital à placer à la banque après 5 ans: ',calcul_cap(cap,taux):2:3); end. III. Problèmes d’approximations : 1. Résolution d’un problème d’approximation : Dans un triangle ABC rectangle en A avec AB = 3 cm et AC = 2 cm ; on place un point M sur le segment [AB] tel que AM = x. N est la projection de M sur (BC) parallèlement à (AC). P est la projection de N sur (AC) parallèlement à (AB). B M N 3 x A P C 2 On veut trouver la valeur de x pour que le rectangle AMNP ait pour valeur 1 cm2. Pour résoudre ce problème, on doit : Exprimer l’aire du rectangle AMNP en fonction de x. Ecrire une fonction permettant de trouver la valeur de x qui donne une aire de rectangle très proche de 1 cm2. On doit exprimer l’aire du rectangle en fonction de x. on se basant sur les données suivantes : Le triangle ABC est rectangle en A. AB = 3. AC = 2. Sachant aussi que le triangle ABC est formé par : Le triangle MBN rectangle en M. Le rectangle AMNP. Le triangle PNC rectangle en P. L’aire du triangle = (3*2)/2 = 3 cm2 L’aire du triangle ABC = aire (MBN) + aire (AMNP) + aire (PNC) On suppose que x représente la longueur du rectangle AMNP et y représente sa largeur, on aura : Aire de (AMNP) = (x*y). Aire de (MBN) = (3-x)*y/2. Aire de (PNC) = x*(2-y)/2. Aire de (ABC) = (x*y) + (3-x)*y/2 + (2-y)*x/2 = 3 Prof : Soussi Ezzeddine Page 6 Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique (x*y) + (3*y/2) – (x*y/2) + (x) – (y*x/2) = 3 (x*y) + (3*y/2) – (x*y) = 3 – x 3*y/2 = 3 –x Se qui donne la largeur y = (2 – 2/3 *x). Donc l’aire de rectangle (AMNP) : x*y = x * (2 – 2/3 *x) = 1 -2/3 *x2 + 2*x -1 = 0 C’est un polynôme de second degré dont les solutions ne sont pas des valeurs exactes. Donc on doit trouver la valeur approchée de x qui est la solution, pour cela on doit faire appel à une fonction et avec pas représente la précision sur la valeur approchée de x. Donc soit l’algorithme de la fonction suivant : 0) Fonction Valeur_x (pas :réel) :réel 1) x 0 2) Répéter x x + pas a -2/3 * carré (x) + 2 * x jusqu’à (a>= 1) 3) Valeur_x x-pas 4) Fin Valeur_x T.D.O : Objet Type Rôle x Réel Calcul de x A Réel Calcul d’aire Algorithme du programme principal : 0) Début rectangle 1) Ecrire (‘’ Donner la valeur de pas : ‘’), lire (pas) 2) x Valeur_x (pas) 3) A -2/3 * carré (x) + 2 * x 4) Ecrire (‘’ La valeur approchée de x = ‘’ , x :2 :5 , ‘’ la valeur approchée de l’aire = ‘’ , A :2 :5) 5) Fin rectangle T.D.O : Objet Type Rôle x Réel Calcul de x A Réel Calcul d’aire Pas Réel Pas de variation de x Programme Pascal : program rectangle; uses wincrt; var pas,a,x:real; Function valeur_x ( pas : real) : real; var a,x:real; begin x := 0; Repeat x := x + pas; a := -2/3*sqr(x)+ 2*x; until (a>=1); Valeur_x := x - pas; Prof : Soussi Ezzeddine Page 7 Chapitre 7 : Les algorithmes d’approximations 3ème Sciences de l’informatique end; begin write('Donner la valeur du pas : '); readln(pas); x:=valeur_x(pas); a := -2/3*sqr(x)+ 2*x; writeln(' La valeur approchée de x = ' , x :2 :5 , ' la valeur approchée de l''aire = ' , A :2 :5); end. Prof : Soussi Ezzeddine Page 8