Présentation de l'algorithme :
Cet algorithme vise à simuler le nombre pi par la méthode de Monte-Carlo en tirant au hasard des points dans un carré de sommets O(0;0), A(0;1), B(1;1) et C(1;0).
La probabilité qu'un point M(x;y) choisi au hasard dans ce carré appartiennent au quart de cercle de centre O et de rayon 1 passant par les points A et B correspond à la probabilité de l'événement "x²+y²<=1". Cette probabilité vaut pi/4.
Dans cet algorithme, on effectue une seule simulation. L'algorithme EstimationPI_MC2 permet d'effectuer plusieurs simulations et d'estimer pi à partir de la moyenne de ces simulations.
Tester l'algorithme :
Graphique :
Code de l'algorithme :
1
VARIABLES
2
i EST_DU_TYPE NOMBRE
3
NPTS EST_DU_TYPE NOMBRE
4
N EST_DU_TYPE NOMBRE
5
X EST_DU_TYPE NOMBRE
6
Y EST_DU_TYPE NOMBRE
7
ESTIM_PI EST_DU_TYPE NOMBRE
8
ERR_REL EST_DU_TYPE NOMBRE
9
DEBUT_ALGORITHME
10
//Initialisation des variables N et NTOT.
11
//La variable NTOT correspond au nombre total de points souhaités.
12
//NTOT est un entier naturel non nul.
13
//La variable N correspond au nombre de points situés dans le quart de disque.
14
N PREND_LA_VALEUR 0
15
AFFICHER "Saisir le nombre de points souhaités."
16
LIRE NPTS
17
TANT_QUE (NPTS<1 OU NPTS-floor(NPTS)!=0 OU NPTS>500000) FAIRE
18
DEBUT_TANT_QUE
19
AFFICHER "ATTENTION ! Le nombre de points doit être un entier naturel non nul inférieur ou égal à 500 000 !"
20
LIRE NPTS
21
FIN_TANT_QUE
22
POUR i ALLANT_DE 1 A NPTS
23
DEBUT_POUR
24
X PREND_LA_VALEUR random()
25
Y PREND_LA_VALEUR random()
26
SI (pow(X,2)+pow(Y,2)<=1) ALORS
27
DEBUT_SI
28
N PREND_LA_VALEUR N+1
29
TRACER_POINT (X,Y)
30
FIN_SI
31
SINON
32
DEBUT_SINON
33
TRACER_POINT (X,Y)
34
FIN_SINON
35
FIN_POUR
36
ESTIM_PI PREND_LA_VALEUR 4*N/NPTS
37
AFFICHER "Avec "
38
AFFICHER NPTS
39
AFFICHER " points, la valeur estimée de PI vaut : "
40
AFFICHER ESTIM_PI
41
AFFICHER ", soit une erreur relative d'environ "
42
ERR_REL PREND_LA_VALEUR (ESTIM_PI/Math.PI-1)*100
43
AFFICHER ERR_REL
44
AFFICHER "%."
45
FIN_ALGORITHME