Метод Монте-Карло и его применение
Задача. Найти оценку интеграла .
Решение. Так как , то примем . Тогда,
полагая число испытаний 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)
Программа написана на языке TURBOPASCAL 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/)
Другие рефераты на тему «Математика»:
Поиск рефератов
Последние рефераты раздела
- Анализ надёжности и резервирование технической системы
- Алгоритм решения Диофантовых уравнений
- Алгебраическое доказательство теоремы Пифагора
- Алгоритм муравья
- Векторная алгебра и аналитическая геометрия
- Зарождение и создание теории действительного числа
- Вероятностные процессы и математическая статистика в автоматизированных системах