Коллекция алгоритмов

Метод Монте-Карло
    Интегралы некоторых функций трудно или невозможно вычислить аналитически, однако их можно подсчитать приблизительно, воспользовавшись техникой бросания стрелок. Для иллюстрации этого метода ограничимся частью графика функции f, заключенной между положительными полуосями координат и прямыми x = 1 и y = 1 (см. рис.). Вам будет нетрудно обобщить рассмотрение на произвольный ограничивающий прямоугольник.

    Мы бросаем стрелки в квадрат случайным образом и подсчитываем, сколько из них оказалось под графиком. Отношение числа стрелок под графиком к общему числу брошенных стрелок будет приблизительно равно площади под графиком функции (напомню, что для положительной непрерывной функции f площадь под ее графиком называется интегралом этой функции). Чем больше стрелок мы бросим, тем точнее окажется приближение. Вот как выглядит соответствующий алгоритм:
Integrate(f, dartCount)
f 			интегрируемая функция
dartCount		число бросаемых стрелок

hits = 0
for i = 1 to dartCount do
	x = uniform(0, 1)
	y = uniform(0, 1)
    if y <= f(x) then
    	hits = hits + 1
    end if
end for
return hits / dartCount 
Скачать пример программы на Delphi7

Рейтинг@Mail.ru Rambler's Top100
Сайт управляется системой uCoz