Каталог статей

მთავარი » სტატიები » Математика » Математика

Вычисление интегралов методом Монте-Карло
Вычисление определенного интеграла методом "Монте-Карло"
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
კატეგორია: Математика | დაამატა: nukria (19.04.2012)
ნანახია: 308 | რეიტინგი: 0.0/0
სულ კომენტარები: 0
კომენტარის დამატება შეუძლიათ მხოლოდ დარეგისტრირებულ მომხმარებლებს
[ რეგისტრაცია | შესვლა ]
მოგესალმები Гость