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

  • Просмотров 1933
  • Скачиваний 346
  • Размер файла 4
    Кб

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