ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.03.2021
Просмотров: 247
Скачиваний: 1

Pi.wxm
1 / 3
Вычисление
числа
Pi
методом
Монте
-
Карло
(%i1)
/* Вычисление числа Pi
методом Монте-Карло */
kill(all);
ntmax:10000;
m:0$
for n:1 thru ntmax step 1 do
(
x:random(1.0), y:random(1.0),
if x*x+y*y <= 1.0 then m:m+1,
res:float(4*m/n),
if ((n=10) or (n=100) or (n=1000) or
(n=10000) or (n=ntmax)) then
print ("n=",n, " m=",m, " res=",res)
);
print ("Exact value of Pi=",float(%pi))$
(%o0)
done
(%o1)
10000
n=
10
m=
9
res=
3.6
n=
100
m=
83
res=
3.32
n=
1000
m=
800
res=
3.2
n=
10000
m=
7864
res=
3.1456
(%o3)
done
Exact value of Pi=
3.141592653589793

Pi.wxm
2 / 3
(%i5)
kill(all);
funpi(ntmax):=block([n,m,x,y,res],
m:0,
for n:1 thru ntmax step 1 do
(
x:random(1.0), y:random(1.0),
if x*x+y*y <= 1.0 then m:m+1,
res:float(4*m/n),
if ((n=10) or (n=100) or (n=1000) or
(n=10000) or (n=ntmax)) then
print ("n=",n, " m=",m, " res=",res)
)
)$
/* Returns the number of seconds since midnight,
January 1, 1900 UTC. The return value is an integer */
t0:absolute_real_time ()$
funpi(100000);
t1:absolute_real_time ()-t0$
print ("t1=",t1)$
(%o0)
done
n=
10
m=
8
res=
3.2
n=
100
m=
74
res=
2.96
n=
1000
m=
772
res=
3.088
n=
10000
m=
7797
res=
3.1188
n=
100000
m=
78437
res=
3.13748
(%o3)
done
t1=
7
(%i6)
translate(funpi);
/* Returns the number of seconds since midnight,
January 1, 1900 UTC. The return value is an integer */
t0:absolute_real_time ()$
funpi(100000);
t2:absolute_real_time ()-t0$
print ("t2=",t2)$
(%o6)
[
funpi
]
n=
10
m=
7
res=
2.8
n=
100
m=
81
res=
3.24
n=
1000
m=
786
res=
3.144
n=
10000
m=
7882
res=
3.1528
n=
100000
m=
78302
res=
3.13208
(%o8)
done
t2=
4

Pi.wxm
3 / 3
(%i11)
compile(funpi);
/* Returns the number of seconds since midnight,
January 1, 1900 UTC. The return value is an integer */
t0:absolute_real_time ()$
funpi(100000);
t3:absolute_real_time ()-t0$
print ("t3=",t3)$
Compiling C:/Users/Green/AppData/Local/Temp/gazonk_3936_0.lsp.
End of Pass 1.
End of Pass 2.
OPTIMIZE levels: Safety=2, Space=3, Speed=3
Finished compiling C:/Users/Green/AppData/Local/Temp/gazonk_3936_0.lsp.
(%o11)
[
funpi
]
n=
10
m=
9
res=
3.6
n=
100
m=
81
res=
3.24
n=
1000
m=
766
res=
3.064
n=
10000
m=
7838
res=
3.1352
n=
100000
m=
78829
res=
3.15316
(%o13)
done
t3=
4
(%i16)
kill(all);
(%o0)
done