- •Содержание
- •1 История рождения метода монте-карло
- •1.1 Алгоритм Буффона для определения числа Пи
- •1.2 Связь случайных процессов и дифференциальных уравнений
- •1.3 Рождение метода Монте-Карло в Лос-Аламосе
- •1.4 Дальнейшее развитие и современность
- •2 Использование метода монте-карло в численном интегрировании
- •2.1 Численное интегрирование
- •2.2 Одномерный случай
- •2.3 Многомерный случай
- •3 Применение метода монте-карло для вычисления кратных интегралов (на примере двукратных интегралов)
- •3.1 Постановка задачи
- •3.2 Программная реализация метода
- •3.2.1 Математическое описание метода
- •3.2.2 Алгоритм метода в программе
- •3.2.3 Описание основных значений в программе
- •3.2.4 Инструкция по работе с программой
- •3.2.5 Результат программы
- •3.2.6 Реализация метода в пакете Mathcad
- •Литература
2.3 Многомерный случай
В небольших размерностях можно так же применять квадратурные формулы, основанные на многочленах Лагранжа. Однако в больших размерностях эти методы становятся неприемлемыми из-за быстрого возрастания числа точек сетки и/или сложной границы области. В этом случае применяется метод Монте-Карло. Генерируются случайные точки в нашей области и усредняются значения функции в них. Так же можно использовать смешанный подход – разбить область на несколько частей, в каждой из которых (или только в тех, где интеграл посчитать не удаётся из-за сложной границы) применитьметод Монте-Карло.
3 Применение метода монте-карло для вычисления кратных интегралов (на примере двукратных интегралов)
3.1 Постановка задачи
Вычислить двукратный интеграл методом Монте-Карло
3.2 Программная реализация метода
3.2.1 Математическое описание метода
Метод Монте-Карло состоит в том, что рассматривается некоторая случайная величина ξ, математическое ожидание которой равно искомой величине z, т.е.
Осуществляется серия n независимых испытаний, в результате которых получается (генерируется) последовательность n случайных величин :,, …,и по совокупности этих значений приближенно определяется искомая величина, т.е.
.
Интеграл же может быть вычислен как математическое ожидание некоторой случайной величины ξ, которая определяется независимыми реализациями ηi случайной величины η с равномерным законом распределения. Двукратные интегралы вычисляются следующим образом:
, (1)
где ,– независимые реализации равномерно распределенных навеличин.
Для использования метода Монте-Карло при вычислении определенных интегралов, как и в других его приложениях, необходимо вырабатывать последовательности случайных чисел с заданным законом распределения.
Существуют различные способы генерирования таких чисел. В настоящее время наиболее распространенный способ выработки случайных чисел на ЭВМ состоит в том, что в памяти хранится некоторый алгоритм выработки таких чисел по мере потребности в них.
Поскольку эти числа генерируются по наперед заданному алгоритму, то они не совсем случайны (псевдослучайны), хотя и обладают свойственными случайным числам статистическими характеристиками. То есть случайные величины, равномерно распределенные на отрезке , в ЭВМ задаются с помощью специальных программ – генераторов псевдослучайных чисел.
3.2.2 Алгоритм метода в программе
1. Ввод количества испытаний n.
2. Запустить генератор случайных чисел.
3. Определение общих пределов интегрирования.
4. Случайным образом (с учетом общих пределов интегрирования) генерировать значения x и y.
5. Если значения x и y лежат в текущих пределах интегрирования, то к значению интеграла прибавить значение функции при этих значениях.
6. Пункты 4 и 5 повторить n раз.
7. Окончательно полученную сумму (из формулы 1) перемножить на оставшиеся части формулы (1) для получения значения интеграла.
3.2.3 Описание основных значений в программе
n |
Количество испытаний |
DInt |
Основная подпрограмма |
F |
Функция для вычисления значений точек подынтегральной функции |
x, y |
Аргументы функции |
S |
Текущее значение суммы (интеграла) |
Ax, Ay, Bx, By |
Пределы интегрирования |
i |
Счетчик |
В программе MonteKarlo используются стандартные модули WinCrt, Strings.
В программе MonteKarlo описан метод Монте-Карло, который осуществляется с помощью функций: function F(x,y: real): real; – расчет значения функции и function DInt(A: real; n: longint): real; – вычисление двойного интеграла.