Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

int-1 / Pi_Maxima

.pdf
Скачиваний:
9
Добавлен:
21.05.2015
Размер:
54.36 Кб
Скачать

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

Соседние файлы в папке int-1