Vous êtes sur la page 1sur 7

http://www.najah.

com 

CHAPITRE 6

Les algorithmes d'approximation


I/ Introduction :
Ce chapitre traite des problèmes un peu plus complexes que les problèmes classiques déjà vus
comme de nouvelles méthodes de recherche, de tri, d'approximation ou d'optimisation.

Un algorithme désigne une suite structurée et finie d’actions qui, appliquée à une donnée,
permet d’aboutir de façon certaine à un résultat déterminé, solution d’un problème donné.

Des questions se posent :


Un algorithme peut-il donner une solution exacte en un temps raisonnable ?
Peut-on trouver une solution approchée c'est-à-dire des approximations quand les algorithmes
exacts sont irréalisables?

Voilà l’objet de ce cours, qui se présente sous la forme d’exercices corrigés quelques notions
d'approximations pour répondre aux questions précédentes.

D'après le dictionnaire :
Approximation, nom féminin :
Sens 1 = Evaluation, estimation d'un résultat, d'une valeur ou d'une grandeur
Sens 2 = Valeur imprécise, valeur approchée.

I/ Approximation de π :
Le nombre π n'est pas égal à 3.14. Cette valeur n'est qu'une approximation qui peut être
suffisante pour la majorité des calculs.

Exemples d'approximation de π
D’après le site http://pi.lacim.uqam.ca/fra/approximations_fr.html

Approximation de Pi Expression
3.14159265358979323846264338327972661934754988088 log(262537412640768744)/sqrt(163)

3.14159292035398230088495575221238938053097345132 355/113

3.14159265358979323232482478168718522102495836130 3+1/8+1/61+1/5020+1/128541455

3.14285714285714285714285714285714285714285714286 22/7

3.14159265297229778439562243903476832945058472332 log(5280)/sqrt(67/9)

3.14159434945008183015994893408428386595324120871 log(2198)/sqrt(6)

3.14153985278295351258699144235404432987724178693 43^(7/23)

3+1/8+1/(8*8)+1/(8*8*17)+ 1/(8*8*17*19)+
3.14159265350877192982456140350877192982456140351
1/(8*8*17*19*300)

3.14159265359494408765142414297178409903697305215 log(60318/13387)*48/23

4INFINFRC0006  Page 1 
http://w
www.najaah.com 

3.141592678809890117154475085702107112151731572449665 (
(13/4)^(1181/1216)

3.141592653358677810789901935775387110931409289997070 (2288+16/1329)^(1/41) + 2

3.141592653358979323846626492014552556041530465119371 ( 2766948199753963/226588)^(1/158) + 2

3.14159265334925537281127154977950557427981092445613 (63023/305110)*(1/3)+1/4+
+1/2*(sqrt(5)+1)

3.14163154662592052545159991271030998351101174556654 log(20+Pi))

3.141592595508835562119942907929503119861222069220605 6
689/396/ln(689 /396)

3.141592652258264612520060371796440222371557877998317 (2143/22)^(1/4)

3.141592653359120552148830583971227448751686687114821 Log (28102/1277)**125/123

Activitéé
On se proopose de calcculé une appproximation de π en utiliisant la form
mule d'Euler.

n=10 3,0493
n=100 3,1320
n=1 000 3,1406
n=10 000
0 3,141497
97
15
n=10 3,14159
92653589792
228

π2 /6 = 1+ 1/2
22 + 1/32 + ….
… + 1/ n2 + ….

Ecrire unn programmee nommé PI_


_Euler, qui permet
p de tesster cette forrmule.

Analysee
Résultat = Ecrire ("V Valeur approochée de PI est
e ", Valeurr)
Traitemeent :
On remarrque que le calcul
c de la somme
s comm mence par laa valeur 1, donc on peut initialiser laa
variable S1S à 1 et com
mmencer l'itération et le cumul à parrtir de la valeeur 2.
On calculle la somme suivante daans la variablle S2 (le succcesseur de S S1 suivant laa formule).
On cherche une approoximation enntre les deuxx expressionns (RacineCaarrée (6*S1) et
RacineCaarrée (6*S2) ) de telle faaçon que leurr différence soit inférieuure à une valeeur minimale
fixée à l'aavance (epsilon) et qui détermine
d la précision dee l'approximaation.

S2 Å 1
iÅ2
Répéter

4INFINFRC0006  Pagee 2
http://www.najah.com 

S1 Å S2
S2 Å S1 + 1/ Carré (i)
iÅi+1
Jusqu'à (RacineCarrée (6 * S2) - RacineCarrée (6 * S1) ) < Epsilon
Valeur Å RacineCarrée (6 * S2)

Epsilon peur être une donnée ou une constante fixée à l'avance.


Fin Analyse

Algorithme
0) Début PI_Euler
1) Répéter
Ecrire ("Entrer la valeur d'Epsilon ")
Lire (Epsilon)
Jusqu'à (Epsilon > 10-8) ET (Epsilon < 10-3)

3) S2 Å 1
4) i Å 2
5) Répéter
S1 Å S2
S2 Å S1 + 1/ Carré(i)
iÅi+1
Jusqu'à (RacineCarrée(6 * S2) - RacineCarrée (6 * S1) ) < Epsilon
6) Valeur Å RacineCarrée(6 * S2)
7) Ecrire ("Valeur approchée de PI est ", Valeur )
8) Fin PI_Euler

Tableau de codification des objets globaux


Objets Type/Nature Rôle
i Entier long Compteur
S1 Réel Somme 1
S2 Réel Somme2
Epsilon Réel Précision pour l'approximation

Traduction en Pascal
PROGRAM PI_Euler ;
USES Crt ;

VAR
i : LongInt ;
S1, S2, valeur : REAL ;
Epsilon : REAL ;

4INFINFRC0006  Page 3 
http://w
www.najaah.com 

BEGIN
ClrScr ;

Repeat
Write ('Entrer la valeur
v d''Epsiilon : ') ;
ReadLLn (Epsilon) ;
U
Until (Epsilonn > 10 E-8) AND
A (Epsiloon < 10E-3) ;

S22 := 1 ;
i :=
: 2;

Repeat
S1 := S2
S ;
S2 := S1
S + 1/ Sqr (i) ;
i := i + 1 ;
U
Until (SqrT(6 * S2) - SqrT
T (6 * S1) ) < Epsilon ;

Valeur := SqrrT (6 * S2) ;


V
W
WriteLn ('Valleur approchhée de PI est ', Valeur ) ;
END.

Exerciice :
Calcul d'uune série

On veut calculer
c une valeur approochée de la ssérie suivantte :

Avvec U0 =1 et
e Un = (x/nn)Un-1

On arrêteera les calculls lorsque

Ecrire unn programmee nommé Un ne_Série, quii affiche unee valeur apprrochée de cettte série pouur
une variaable x comprrise par exem
mple entre -550 et 50 ainsi que le nom
mbre d'itératioons
effectuéees pour une valeur
v inférieeure à une prrécision EPS
S donnée.

Analysee du progrramme prrincipal


Résultat = Ecrire (" X = ", x , ' S = ",s , " avvec ", n, " itérrations avec une précisioon ", EPS)
Traitemeent :
- Une proocédure CA ALCUL, calcculera la valeeur approchéée de la sériee ainsi que lee nombre
d'itérationns effectuéess.

4INFINFRC0006  Pagee 4
http://www.najah.com 

- Une procédure ENTREE pour saisir au clavier la valeur de la variable x et appliquer les
tests de saisie nécessaires.
- EPS sera déclaré comme une constante ayant pour commencer une valeur 10-6.
Fin Analyse

Algorithme
0) Début Une_Série
1) Proc Entrée (x)
2) Proc Calcul (x, s, n)
3) Ecrire (" X = ", x , " S = ",s , " avec ", n, " itérations avec une précision ", EPS)
4) Fin Une_Série

Tableau de codification des objets globaux


Objet Type / Nature Rôle
x Réel Valeur de x
s Réel Calcul de la somme
n Entier nombre d'itération
EPS Constante = 10-6 précision de calcul

Analyse de la procédure ENTREE


Résultat = Lecture et test de x
Traitement :
Répéter
x = Donnée ("Entrer la valeur de x entre -50 et 50 ")
Jusqu'à (x ≥ -50) ET (x ≤ 50)
Fin analyse

Algorithme
0) Procédure ENTREE (VAR x : Réel)
1) Répéter
x = Donnée ("Entrer la valeur de x entre -50 et 50 ")
Jusqu'à (x ≥ -50) ET (x ≤ 50)
2) Fin ENTREE

Analyse de la procédure CALCUL


Résultat = calculer s
Traitement :
Une itération à condition d'arrêt Répéter .. jusqu'à la précision EPS permet de calculer la
valeur de s ainsi que le nombre d'itérations n.
- Initialiser n à 0
- Initialise une variable U à 1 (car U0 = 1 )
- Initialiser s à zéro
- Incrémenter n de 1 n Å n + 1
- Calculer U Å U * x/n

4INFINFRC0006  Page 5 
http://w
www.najaah.com 

- Cumuleer la valeur de
d s sÅ s+U

- La conddition d'arrêtt est

Fin Anallyse

Algorith
hme
0) Procéd dure CALC CUL ( x : Réeel; VAR s : R
Réel; VAR n : Entier)
1) U Å 1;
1 n Å 0; s Å 0
2) Répéteer
nÅn+1
U Å U * x/n
sÅs+U
Jusqu'àà ABS ((s- (ss-U)) /s) < EPS
E
3) Fin CA ALCUL

Tableau de codificattion des objjets locaux


Objeet Type
T / Natu
ure Rôlle
U Réeel Elém
ment de la suuite

Program
mme Pasccal
PROGRA AM Une_S Série ;
USES Crrt ;
CONST
EPPS = 1E-6;
VAR
x,, s : Real;
n : Integer;

{------------------------------------------------------------------------------------------}
PROCED DURE Entrrée (VAR x : Real);
BEGIN
Repeat
Write ( 'Entrez x entree -50 et 550 : ') ;
ReadL Ln ( x );
U
Until ( x >= - 50) AND (x ( <= 80);
END;

{------------------------------------------------------------------------------------------}
PROCED DURE Calcul (x : Rael; VAR s : Raael ; VAR n : Integer) ;

4INFINFRC0006  Pagee 6
http://www.najah.com 

VAR
U : Real;
BEGIN
U := 1;
Repeat
Inc (n);
U := U * x /n ;
s := s + U;
Until Abs ((s - (s - U)) /s ) < EPS;
END ;

{ ===================== P. P =========================}
BEGIN
ClrSscr;
Saisie (x);
Calcul (x, s, n);
WriteLn (' X = ', x , ' S = ',s , ' avec ', n, ' itérations avec une précision ', EPS)
END.

4INFINFRC0006  Page 7 

Vous aimerez peut-être aussi