
- •Министерство образования и науки Российской Федерации
- •Задание
- •«Численные методы»
- •Министерство образования и науки Российской Федерации
- •Содержание
- •Введение
- •Историческая справка
- •Вычисление интеграла в пространстве методом Монте-Карло Детерминистический метод
- •Обычный метод Монте-Карло
- •Геометрический метод
- •Вычисление кратных интегралов в пространстве методом Монте-Карло Обычный метод Монте-Карло
- •Заключение
- •Приложения Текст программы «Вычисление интеграла методом Монте-Карло»
- •Результат работы программы
- •Список литературы
Вычисление кратных интегралов в пространстве методом Монте-Карло Обычный метод Монте-Карло
Пусть
в пространстве
задана функция
,
где
,
причём
,
хотя бы один раз, где
,
– компактное множество,
- ограничена и сверху, и снизу. Требуется
вычислить интеграл
Так
как множество
– компакт, то впишем его в n-мерный
параллелепипед P
с осями, параллельными осям координат.
Зададим его двумя вершинами – самой
младшей и самой старшей координатами
и
,
причём
.
Очевидно, что объёмP
можно выразить следующим образом:
Доопределим подынтегральную функцию следующим образом:
тогда
исходный интеграл перепишем следующим
образом:
Рассмотрим
n-мерный
вектор, имеющий равномерное распределение
в параллелепипеде P,
,
тогда значение подынтегральной функции
от случайного вектора будет выражаться
как математическое ожидание следующим
образом:
случайного
вектора p,
причём
Разобьём
параллелепипед P
на векторы классом разбиений
,
Причём установим между номерами разбиений взаимно однозначное соответствие между номерами разбиений в классе разбиений.
Тогда математическое ожидание можно оценить следующим образом:
Заключение
В
данной работе рассмотрены методы
численного вычисления интегралов
Монте-Карло в пространствах
и
.
В пространстве
были
рассмотрены детерминистческий, обычный
и геометрический методы. Наиболее лучшая
сходимость у детерминистического
метода, наиболее худшая у геометрического
метода. Ввиду слабой сходимости
геометрического метода не актуально
рассматривать его в пространстве
.
Приложения Текст программы «Вычисление интеграла методом Монте-Карло»
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<clocale>
void main()
{
setlocale(LC_CTYPE, "");
srand((unsigned)time(NULL));
printf("Функция: z=(8*x*sin(x)+7*x*y^3*cos(y)^2))/cos(x-y)^(1/2)\n");
float Zmax=0;
for(float x=0;x<=1;x=x+0.01)
{
for(float y=0;y<=1;y=y+0.01)
{
if(Zmax<(float)(8*x*sin(x)+7*x*pow(y,3)*pow(cos(y),2))/pow(cos(x-y),1/2))
{
Zmax=(float) (8*x*sin(x)+7*x*pow(y,3)*pow(cos(y),2))/pow(cos(x-y),1/2);
}
}
}
float SumINTEGR=0;//Сумма интегралов за 10 опытов
for(int i=1;i<=10;i++)
{
float X,Y,Z;// Рандомные точки
int HIT=0;// Число попаданий точек в искомый объем под поверхностью функции
float INTEGR=0;//Значение интеграла
for(float N=1;N<=183065;N++)
{
X=(float)(rand()%101)/100;
Y=(float)(rand()%101)/100;
Z=(float)(rand()%1001)/100;
if(Z<=(8*X*sin(X)+7*X*pow(Y,3)*pow(cos(Y),2))/pow(cos(X-Y),1/2))
{
HIT=HIT+1;
}
}
INTEGR=(float)HIT/183065*10;
SumINTEGR=SumINTEGR+INTEGR;
}
float averINTEGR=SumINTEGR/10;// Среднее значение интеграла в 10 случаях
printf("Значение интеграла - %f\n", averINTEGR);
printf("Z максимальное - %f",Zmax);
getch();
}