Метод Монте-Карло
Интегралы некоторых функций трудно или
невозможно вычислить аналитически, однако их можно подсчитать приблизительно,
воспользовавшись техникой бросания стрелок. Для иллюстрации этого
метода ограничимся частью графика функции 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
|
|