|
|
|
Глава 8. Обработка данных |
может быть вычислена через двойной интеграл |
∫∫ dxdy , повторный |
|
|
|
x <y<x2 |
1 |
x |
1 |
|
интеграл ∫dx ∫ dy или обычный интеграл ∫( |
x −x2)dx . Все три инте- |
0 |
x2 |
0 |
|
грала дают одно и то же значение 1 3 .
На заметку
Если быть более точным, то двойной интеграл сводится к повторному, а повторный – к однократному. Тем не менее, с точки зрения идеологии метода МонтеКарло, правильнее было бы интерпретировать наши вычисления как расчет двойного интеграла (который равен площади соответствующе области). Что касается непосредственно метода Монте-Карло, то в данном случае он реализован по следующей схеме. В пределах единичного квадрата, внутри которого находится область, площадь которой мы вычисляем, случайным образом выбираются точки. Их много. Мы подсчитываем отношение количества точек, которые попали внутрь области, к общему количеству точек. В граничном пределе (когда количество точек неограниченно возрастает) это отношение стремится
котношению площадей области и площади квадрата (которая равна единице). Таким образом, чтобы вычислить площадь фигуры, нужно сгенерировать достаточно большое количество точек. Отношение количества точек внутри области
кобщему количеству точек принимаем как оценку для площади области.
Для выполнения вычислений создаем следующий программный код:
z=0:0.01:1;
y1=sqrt(z);
y2=z.^2; plot(z,y1,'r-','LineWidth',2); hold on; plot(z,y2,'r-','LineWidth',2); grid on;
title('Вычисление интеграла методом Монте-Карло'); n=1000;
s=0;
for i=1:n x=rand(); y=rand();
if and(y<sqrt(x),y>x^2) s=s+1/n;
end plot(x,y,'bo','LineWidth',1,'MarkerSize',2,'MarkerFaceColor','b'); end
hold off;
disp(['Количество точек: ',num2str(n)]); disp(['Результат вычислений: ',num2str(s)]);