Вычисление интегралов методом Монте-Карло


          Вычисление определенного интеграла методом “Монте-Карло”
                                                  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 do begin {проведем 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 + |2  |5.737      |5.9702      |6.02        |5.99       |
|x        |   |           |            |            |           |
|         |   |           |            |            |           |
|         |   |           |            |            |           |
|         |   |           |            |            |           |
|f(x)=x * |3  |9.6775     |8.528       |8.7463      |8.937      |
|x        |   |           |            |            |           |