Vous êtes sur la page 1sur 10

Chapitre7 : Les algorithmes d'approximation

Les algorithmes d'approximation


I- Présentation

 Un algorithme d'approximation permet de déterminer des valeurs approchées de


la solution de certains problèmes dont on ne peut pas déterminer la valeur
exacte de la solution.

Exemple : cas de calculer de la constant Pi

 Un algorithme d'optimisation permet de trouver une solution optimale (meilleur)


à un problème de minimisation ou de maximisation.
Remarque :
Un algorithme d'approximation ne peut pas trouver une solution optimale.

II- Problèmes d'optimisation


1. Activité :
Soit un triangle équilatéral dont le coté mesure a en cm. On inscrit dans ce
triangle un rectangle MNPQ.
A

a
Q P

On pose BM=x B x M N C
On se propose de déterminer la valeur de x tel que l’aire du rectangle soit
maximale.
2. Solution :
SR = long * larg = MN * MQ = ((a-2x)*MQ
MQ = ?
1er méthode
tg(angle MBQ)=tg(60)=QM/x= racine_carrée(3)
QM=racine_carrée(3) * x
D’où S=racine_carrée(3)*x * (a-2x)
 S=a*racine_carrée(3)*x-2*racine_carrée(3) * x²

Page -1-
Chapitre7 : Les algorithmes d'approximation

2ème méthode

Sin 60 = 3 /2
Sin 60= coté opposée / hypotinus = MQ/BQ

 MQ/BQ = 3 /2  MQ = 3 /2 * BQ
Théorème de Talas
AQ/AB=AP/AC=QP/BC
AQ/a=(a-2x)/a
AQ=a-2x  QB=a-(a-2x)=2x

 MQ = 3 /2 * 2x = 3 x
Conclusion :
SR = (a-2x)*MQ
= (a – 2X) * 3 x

Analyse de programme principal

Résultat = écrire ("La valeur de x = ", Xmax, "donne une surface = ",Smax)
Proc Recherche (a, pas, xmax, Smax)
a= donnée
Pas = donnée

Algorithme de programme principal


0) Début Calcul_surface
1) Ecrire (" la longueur de cote ", a) Lire (a)
2) Ecrire (" la valeur de pas ", Pas) Lire (Pas)
3) Proc Recherche (a, pas, xmax, Smax)
4) écrire ("La valeur de x = ", Xmax, "donne une surface = ",Smax)
5) Fin Calcul_surface
T.D.O
Objets Type / nature

a, pas, xmax, Réel


Smax procédure
Recherche

Page -2-
Chapitre7 : Les algorithmes d'approximation
Analyse de la procédure Recherche
[X  0, Smax  0]
Répéter
X  x + pas

S  (a-2x)* 3 x
Si S > Smax alors Smax  S
Xmax  X
Finsi
Jusqu’à (x > = a/2)

Algorithme de la procédure Recherche


0) DEF PROC Recherche (a, pas : réel ; Var Xmax, Smax : réel)
1) X  0
T.D.O
2) Smax  0 Objets Type / nature

3) Répéter X, S Réel
X  x + pas

S  (a-2x)* 3 x
Si S > Smax alors Smax  S
Xmax  X
Finsi
Jusqu’à (x > = a/2)
4) Fin Recherche

III- Problèmes d'optimisation


1. Activité : Soit un triangle ABC rectangle en A tel que 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)

M N
3 Cm
X

A P C
2 Cm

Page -3-
Chapitre7 : Les algorithmes d'approximation

On veut trouver la valeur (ou les valeurs) de x tel que AMNP ait pour aire 1 Cm 2
2. Solution :
 Pour résoudre ce problème, on va suivre la démarche suivante :
 Exprimer l'aire du rectangle AMNP en fonction de x,
 Ecrire l'algorithme d'une fonction permettant de trouver les valeurs de x
qui donne une aire très proche de 1 cm2.
L’aire de rectangle AMNP = AM * AP
= x * AP (on pose AP =y)
=x*y
Aire de triangle ABC = aire de triangle PCM + aire de triangle MNB + aire de rectangle
AMNP
= (PN * PC) + (MB * MN) + x * y
= (x * (2 – y)/2) + (y * (3 – x) /2) + x * y
= x – (x * y)/2 + 3/2 * y – (x * y)/2 + x * y
= x + 3/2 * y
=3
 y = 2 – 2/3 * x
D’où l’aire de rectangle AMNP = x * (2 – 2/3 * x)
= 2 * x – 2/3 x2 = 1

Analyse de programme principal

Résultat =
Écrire ("La meilleur solution avec ce pas de variation est pour x = ", x, "
l’aire = ", A)
Proc recherche (P, x, A)
P = donnée

Algorithme de programme principal


0) Début Rectangle T.D.O
Objets Type/Nature
1) Ecrire ("Donner la valeur du pas : ") Lire (P) P, x, A Réel
2) Proc recherche (P, x, A) Valeur_x Fonction

3) Ecrire ("La meilleur solution avec ce pas de variation est pour X = ", X, "l’aire
= ", A)
4) Fin Rectangle

Page -4-
Chapitre7 : Les algorithmes d'approximation

Analyse de la procédure recherche


Résultat = [..]
[x  0] Répéter
x x+P
A  2 * x - 2/3 * x * x
Jusqu'à (A >= 1)

Algorithme de la fonction valeur_x


0) DEF proc recherche (P : réel ; var A, X : réel)
1) x  0
2) Répéter
xx+P
A  2 * x - 2/3 * x * x
Jusqu'à (A >= 1)
3) Fin recherche

IV- Applications
Application N°1 : Dans une feuille de carton carrée de 10 cm de coté, on découpe
aux quatre coins quatre carrés de coté X de telle façon qu’en relevant les quatre
bords restants, on obtienne une boite de forme parallélépipédique.
On veut trouver la valeur de X telle que le volume de la boite ainsi formée soit
maximum.
10 Cm

NB : Le volume du parallélépipédique = surface de base * hauteur


Page -5-
Chapitre7 : Les algorithmes d'approximation
= (10 - 2 * X) * (10 - 2 * X) * X

Solution :
Analyse de programme principal
Résultat = Ecrire ("La meilleur solution avec ce pas de variation est pour X = ", X,
"le volume = ", V)
Proc recherche (P, X, V)
P = donnée

Algorithme de programme principal


0) Début Volume_Max T.D.O
1) Ecrire ("Donner la valeur du pas : "), Lire (P) Objets Type/Nature
P, X, V Réel
2) Proc recherche (P, X, V)
recherch Procédure
3) Ecrire ("La meilleur solution avec ce pas de e
variation est pour X = ", X, "le volume = ", V)
4) Fin Volume_Max

Analyse de procédure recherche


Résultat = [..]
[X  0, Vmax  0]
Répéter
X  x + pas
V  (10 – 2 * x) * (10 – 2 * x) * x
Si V > Vmax alors Vmax  V
Xmax  X
Fin si
Jusqu’à (x > = 5)

Algorithme de la procédure Recherche


0) DEF PROC Recherche ( pas : réel ; Var Xmax, Vmax : réel)
1) X  0 T.D.O
Objets Type / nature
2) Vmax  0
X, S Réel
3) Répéter
X  x + pas V  (10 – 2 * x) * (10 – 2 * x) * x
Si V > Vmax alors Vmax  V

Page -6-
Chapitre7 : Les algorithmes d'approximation
Xmax  X
Finsi
Jusqu’à (x > = 5)
4) Fin Recherche

Programme Pascal
program surface_maximale; if s>smax then
uses wincrt; begin
var p,xmax,smax:real; smax:=s;
procedure recherche (p:real; xmax:=x;
var xmax, smax:real); end;
var until(x>=5/2);
x,s:real; end;
begin begin
x:=0; write('saisir un entier '); read(p);
s:=0; recherche(p,xmax,smax);
repeat writeln('la valeur de x = ',xmax:10:6,'
pour donner une surface maximale =
',smax:10:6);
x:=x+p; end.
s:=s+sqr(10-2*x)*x;
Application N°2 : Un disque de rayon R=5 cm est tangent à
S
deux disques intérieurs tangents entre eux.
Les trois centres sont alignés. On veut déterminer la valeur r1 r2
du rayon d’un des deux disques intérieurs pour que l’aire
comprise entre le grand disque et les disques intérieurs soit
maximum.
On se propose de déterminer une valeur approchée du R=5
rayon.
R = r1 + r2 = 5  r2 = 5 –r1

S = 25 П - (r12 П + (5-r1)2 П )

S = 25 П - r12 П - (25 – 10 r1 + r12) П

S = 25 П - r12 П - 25 П + 10r1 П –r12 П

S=- 2 П r12 + 10 П r1
à Variation de r1 ] 0 , r/2]
T.D.O
Algorithme de programme principal Objet Type
Pas, rmax, Réel
Page -7- smax procédur
recherche e
Chapitre7 : Les algorithmes d'approximation
0) Début Surface_vide
1) Ecrire ("Introduire une valeur de pas")
Lire (pas)
2) Proc recherche (pas, rmax, smax)
3) Ecrire ("Le rayon = ", rmax, " donne une surface vide =", Smax)
4) Fin Surface_vide

Algorithme de la procédure recherche


0) Procédure Calcul (pas : réel; Var rmax, smax : réel)
1) r1  0

2)
T.D.O
Smax  0
Obje Type
3) Répéter
t
r1  r1+ pas r1, s réel
S  -2*Pi*r1*r1 + 10*Pi *r1 Pi Constante =

Si (S >Smax) Alors 3.14

smax  S

rmax  r1
Finsi
Jusqu’à (r1 >= 2.5)
4) Fin Calcul
Application N°3 :
Soit C un cercle de rayon r=2cm.
On construit un rectangle ABCD inscrit dans C.
On veut trouver les dimensions du rectangle pour que son périmètre soit égal à 5
cm.

r
y

Page -8-
Chapitre7 : Les algorithmes d'approximation

Algorithme de programme principal


0) Début dimension
1) Ecrire (" la valeur de pas ", Pas) Lire (Pas)
2) Proc Recherche (pas, xmax, Pmax)
3) Ymax = 2- Xmax
4) écrire ("La valeur de x = ", Xmax, ", la valeur de y = Ymax", donne un
périmètre = ",Pmax)
5) Fin Calcul_surface

T.D.O
Objets Type / nature

Pmax, pas, Réel


xmax, Ymax procédure
Recherche
Analyse de la procédure Recherche
[X  0]
Répéter
X  x + pas
P  2*(x + 16  x 2 )

Jusqu’à (P > = 5)

Algorithme de la procédure Recherche


0) DEF PROC Recherche (pas : réel ; Var x, P : réel)
1) X  0
2) Répéter
X  x + pas
P  2*(x + 16  x 2 )

Jusqu’à (P > = 5)
3) Fin Recherche

Programme Pascal

program perimitre_maximale; procedure recherche (p:real;


uses wincrt; var s,x:real);
var p,x,s:real; begin

Page -9-
Chapitre7 : Les algorithmes d'approximation
x:=0; write('saisir un entier '); read(p);
repeat recherche(p,s,x);
x:=x+p; writeln('la valeur de x = ',x:10:6,'la
s:=s+2*x+sqrt(16-sqr(x)); valeur de y = ',sqrt(16-sqr(x)):10:6);
until(s>=5); write(' pour donner une surface
end; maximale = ',s:10:6);
begin end.

Page -10-