Реферат: Вычисление интегралов методом Монте-Карло
Вычисление определенного интеграла методом “Монте-Карло”
b
Определенный интеграл I =ò f(x)dx пометоду “Монте-Карло”
n a
по формуле I= (1/n)* å (f(xi))/(g(xi)), где n – числоиспытаний ;g(x) – плотность
i=1 b
распределения “вспомогательной” случайной величины X, причем ò g(x)dx = 1 ,
a
В программе 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
randomize;
writeln(‘Введите промежуток интегрирования (a;b):’);
readln(a);
readln(b);
writeln(‘Введите количество случайных значений(числоиспытаний):’);
readln(n);
k:=b-a;{Переменной“k”присвоим значение длиныпромежутка интегрирования}
writeln(‘k=’,k);
for i:= 1 to n dobegin {проведем n испытаний}
g:=random; {g – переменная вещественного типа, случайная величина из
промежутка[0;1]}
x:= a + g*(b-a);{По этой формуле получается произвольная величина из [a;b] }
s:=s + (1+x);{s:=s +(x*x)}{Вообще можно подставитьлюбую функцию }
delay(10000); {задержка, чтобы произвольные значения не повторялись}
end;{конец испытаний}
writeln(‘s=’,s);{Сумма функции для n произвольных значений}
Integral:=(1/n)*k*s;
writeln(‘Интеграл=’,Integral);
readln;
END.
Требуется ввести промежуток интегрирования иколичество испытаний, интегрируемая функция уже задана в программе(но ее можнопоменять).
3 3
ò(x+1)dx =6 ; ò (x*x)dx = 9; (По методу Ньютона-Лейбница).
1
Функция 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