Смекни!
smekni.com

Метод Монте Карло и его применение (стр. 4 из 5)

Результаты десяти испытаний приведены в таблице 3.

Из таблицы 3 находим

. Искомая оценка интеграла

§5. Способ «выделения главной части».

В качестве оценки интеграла

принимают

,

где

- возможные значения случайной величины X, распределённой равномерно в интервале интегрирования
, которые разыгрывают по формуле
; функция
, причём интеграл
можно вычислить обычными методами.

Задача. Найти оценку

интеграла
.

Решение. Так как

, то примем
. Тогда, полагая число испытаний n=10, имеем оценку

.

Выполнив элементарные преобразования, получим

.

Учитывая, что a=0, b=1, возможные значения

разыграем по формуле
. Результаты вычислений приведены в таблице 4.
Номер i
1 2 3 4 5 6 7 8 9 10 0,100 0,973 0,253 0,376 0,520 0,135 0,863 0,467 0,354 0,876 0,010 0,947 0,064 0,141 0,270 0,018 0,745 0,218 0,125 0,767 1,010 1,947 1,064 1,141 1,270 1,018 1,745 1,218 1,125 1,767 1,005 1,395 1,032 1,068 1,127 1,009 1,321 1,104 1,061 1,329 2,000 1,843 2,000 1,995 1,984 2,000 1,897 1,990 1,997 1,891

Сложив числа последнего столбца таблицы 4, найдём сумму 19,597, подставив которую в соотношение

, получим искомую оценку интеграла

.

Заметим, что точное значение I=1,147.

§6. Программа вычисления определенного интеграла методом Монте-Карло.

Вычислить определенный интеграл

по методу “Монте-Карло” по формуле

,

где n – число испытаний ;g(x) – плотность распределения “вспомогательной” случайной величины X, причем

, в программе g(x) = 1/(b-a)

Программа написана на языке TURBO PASCAL 7.0

Program pmk;

Uses crt;

Var k,p,s,g,x,Integral : real;

n,i,a,b : integer;

BEGIN

writeln(‘Введите промежуток интегрирования (a;b):’);

readln(a);

readln(b);

writeln(‘Введите количество случайных значений(число испытаний):’);

readln(n);

k:=b-a; {Переменной“k”присвоим значение длины промежутка интегрирования}

writeln(‘k=’,k);

for i:= 1 to n do begin {проведем n испытаний}

g:=random; {g – переменная вещественного типа, случайная величина из промежутка [0;1]}

x:= a + g*(b-a); {По этой формуле получается произвольная величина из [a; b] }

s:=s + (1+x); {s:=s +(x*x)} {Вообще можно подставить любую функцию}

delay(1000); {задержка, чтобы произвольные значения не повторялись}

end; {конец испытаний}

writeln(‘s=’,s); {Сумма функции для n произвольных значений}

Integral:=(1/n)*k*s ;

writeln(‘Интеграл=’,Integral);

readln;

END.

Требуется ввести промежуток интегрирования и количество испытаний, интегрируемая функция уже задана в программе (но ее можно поменять).

;
.
Функция k N=10 N=100 N=500 N=1000
f(x)=1+x 2 5.737 5.9702 6.02 5.99
f(x)=x*x 3 9.6775 8.528 8.7463 8.937

§7. Вычисление кратных интегралов методом Монте-Карло.

Пусть функция

непрерывна в ограниченной замкнутой области S и требуется вычислить m-кратный интеграл

. (1)

Геометрически число I представляет собой (m+1)-мерный объём прямого цилиндроида в пространстве

, построенного на основании S и ограниченного сверху данной поверхностью
, где
.

Преобразуем интеграл (1) так, чтобы новая область интегрирования целиком содержалась внутри единичного m-мерного куба. Пусть область S расположена в m-мерном параллелепипеде

. (2)

Сделаем замену переменных

. (3)

Тогда, очевидно, m-мерный параллелепипед (2) преобразуется в m-мерный единичный куб

(4)

и, следовательно, новая область интегрирования σ, которая находится по обычным правилам, будет целиком расположена внутри этого куба.

Вычисляя якобиан преобразования, будем иметь:

. Таким образом,
, (5)

где

. Введя обозначения
и
, запишем интеграл (5) короче в следующем виде:
. (5/)

Укажем способ вычисления интеграла (5/) методом случайных испытаний.

Выбираем m равномерно распределённых на отрезке [0, 1] последовательностей случайных чисел:

Точки

можно рассматривать как случайные. Выбрав достаточно большое N число точек
, проверяем, какие из них принадлежат области σ (первая категория) и какие не принадлежат ей (вторая категория). Пусть

1.

при i=1, 2, …, n (6)

2.

при i=n+1, n+2, …,N (6/)

(для удобства мы здесь изменяем нумерацию точек).

Заметим, что относительно границы Г области σ следует заранее договориться, причисляются ли граничные точки или часть их к области σ, или не причисляются к ней. В общем случае при гладкой границе Г это не имеет существенного значения; в отдельных случаях нужно решать вопрос с учётом конкретной обстановки.

Взяв достаточно большое число n точек

, приближённо можно положить:
; отсюда искомый интеграл выражается формулой
, где под σ понимается m-мерный объём области интегрирования σ. Если вычисление объёма σ затруднительно, то можно принять:
, отсюда
. В частном случае, когда σ есть единичный куб, проверка становится излишней, то есть n=N и мы имеем просто
.