Présentation de l'algorithme :
Calcul approché de Pi par la méthode des aiguilles de Buffon
Tester l'algorithme :
Graphique :
Code de l'algorithme :
1
VARIABLES
2
x EST_DU_TYPE NOMBRE
3
y EST_DU_TYPE NOMBRE
4
nb EST_DU_TYPE NOMBRE
5
i EST_DU_TYPE NOMBRE
6
nb_interieurs EST_DU_TYPE NOMBRE
7
approx_pi EST_DU_TYPE NOMBRE
8
n EST_DU_TYPE NOMBRE
9
l EST_DU_TYPE NOMBRE
10
angle EST_DU_TYPE NOMBRE
11
y_min EST_DU_TYPE NOMBRE
12
k_proche EST_DU_TYPE NOMBRE
13
j EST_DU_TYPE NOMBRE
14
nb_lattes_coupees EST_DU_TYPE NOMBRE
15
DEBUT_ALGORITHME
16
nb_lattes_coupees PREND_LA_VALEUR 0
17
LIRE n
18
l PREND_LA_VALEUR 1/n
19
POUR i ALLANT_DE 1 A n
20
DEBUT_POUR
21
TRACER_SEGMENT (0,i/n)->(1,i/n)
22
FIN_POUR
23
LIRE nb
24
POUR i ALLANT_DE 1 A nb
25
DEBUT_POUR
26
x PREND_LA_VALEUR random()
27
y PREND_LA_VALEUR random()
28
angle PREND_LA_VALEUR random()*2*Math.PI
29
SI (y<y+l*sin(angle)) ALORS
30
DEBUT_SI
31
y_min PREND_LA_VALEUR y
32
FIN_SI
33
SINON
34
DEBUT_SINON
35
y_min PREND_LA_VALEUR y+l*sin(angle)
36
FIN_SINON
37
POUR j ALLANT_DE 1 A n
38
DEBUT_POUR
39
SI (y_min < 0) ALORS
40
DEBUT_SI
41
k_proche PREND_LA_VALEUR 0
42
FIN_SI
43
SINON
44
DEBUT_SINON
45
SI (y_min>(j-1)/n ET y_min<=j/n) ALORS
46
DEBUT_SI
47
k_proche PREND_LA_VALEUR j
48
FIN_SI
49
FIN_SINON
50
FIN_POUR
51
SI (abs(l*sin(angle))>(k_proche/n - y_min)) ALORS
52
DEBUT_SI
53
TRACER_SEGMENT (x,y)->(x+l*cos(angle),y+l*sin(angle))
54
nb_lattes_coupees PREND_LA_VALEUR nb_lattes_coupees+1
55
FIN_SI
56
SINON
57
DEBUT_SINON
58
TRACER_SEGMENT (x,y)->(x+l*cos(angle),y+l*sin(angle))
59
FIN_SINON
60
FIN_POUR
61
approx_pi PREND_LA_VALEUR 2*nb/nb_lattes_coupees
62
AFFICHER "Valeur approchée de Pi : "
63
AFFICHER approx_pi
64
FIN_ALGORITHME