Интересно, что метод Монте-Карло можно применять в самых разных приложениях физики, математики, информационных технологиях и других областях знаний. Одним из его существенных преимуществ является то, что при большом количестве статистических данных (или статистики) совпадение в вычисляемых значениях величин очень близко к их истинному значению.
Вот к примеру высиление числа
π методом Монте-Карло предстваленное на языке Фортран (Visual Fortran 5.0 и выше). Задача ставится формально так:
Пусть имеется квадрат со стороной равной 1 и вписанный в него круг (диаметр круга равен 1). Случайным образом в квадрат вбрасывается несколько точек произвольным образом (по сути случайные точки в интервале [0;1] имеющие две координаты x и y например в декартовой системе координат). Требуется подсчитать число π для заданной статистики. Ограничимося к примеру статистикой N=10000000. Решение задачи в приложенном аттаче (код программы на языке Фортран приводится ниже).
Вот какое значение числа
π дает программа для данной статистики (данные образуются в файле pi.txt)
3.14078040000000
Неплохой результат, если учесть, что число
π=3,14159265358979... - совпадение до 2-го знака включительно. Можете попробывать увеличить (или наоборот уменьшить) статистику (число N) чтобы увидеть меру сходимоcти (или расходимости) метода Монте-Карло для подсчета числа
π.
Код:
PROGRAM Pi
real*8 P,x,y,N_in,N_out
integer*4 i,d,N
print*, 'Plesae wait ...'
open(10,file='pi.txt')
write(10,1)
write(10,2)
!=============== Constants ===============!
N=10000000 ! The number of points
!=========== The main programm ===========!
do i=1,N
call random_number (x)
call random_number (y)
if (((x-0.5)**2+(y-0.5)**2).le.0.25) then
N_in=N_in+1
else
N_out=N_out+1
end if
end do
P=(4*N_in)/N
write(10,*) N, P
print*, 'Pi=', P
!================ The end ================!
1 format(3x, 'The resulting of calculation the number Pi:')
2 format(9x, 'N', 5x, 'Number Pi')
close(10)
END PROGRAM Pi
(
возможность прикреплять файлы отсутсвует у данной версии движка php)