Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya.docx
Скачиваний:
31
Добавлен:
10.03.2016
Размер:
232.24 Кб
Скачать

1.2. Алгоритм Метрополиса

Целью алгоритма Метрополиса является создание такой последовательности состояний a1, a2, ..., am, что в пределе m → ∞ распределение становится больцмановским.

Более подробную информацию о цепях Маркова можно получить, например, в [15], [6]. Сформулируем теперь сам алгоритм Метрополиса. Вероятность P(b ← a) принятия пробного движения преводящего систему из состояния a в состояние b задается следующим образом:

,

где p(a), p(b) – вероятности состояний a и b соответственно.

Можно показать, условие детального баланса выполнено и распределение состояний a1, a2, ... в фазовом простанстве дается функцией p(R). Таким образом, переход осуществляется в то из состояний a или b, которое имеет большую вероятность.

Очередная итерация алгоритма начинается с состояния и заключается в следующем:

  • выбрать x' по распределению ;

  • вычислить 

;

  • С вероятностью a (1, если a>1) , иначе.

Суть в том, что мы переходим в новый центр распределения, если примем очередной шаг, и получается случайное блуждание, зависящее от распределения p: мы всегда принимаем шаг, если в эту сторону функция плотности увеличивается, и иногда отвергаем, если уменьшается (отвергаем не всегда, потому что нам надо уметь выходить из локальных максимумов и блуждать под всем графикомp). Замечу, кстати, что когда шаг отвергается, мы не просто отбрасываем новую точку, а повторяем второй раз то же самое x(t) — таким образом высока вероятность повторять сэмплы вокруг локальных максимумов распределения p, что соответствует большей плотности (рис. 1).

Рис. 1. Блуждание на плоскости под графиком смеси двух двумерных гауссианов

Глава 2. Реализация алгоритма Метрополиса

Для организации компьютерного эксперимента мы использовани программу, написанную на языке Pascal.

2.1. Программная реализация алгоритма

Тело, ограниченное двумя функциями и

. Решением данного примера будет объем данного тела.

Для простоты расчетов мы ограничиваем область интегрирования:

Формируется трехмерный массив, заполняемый значениями 1/n, где n ­– общее число точек.

Случайно выбирается точка внутри области ограничения, далее эта точка проверяется на принадлежность к фигуре, ограниченной функциями и, если точка принадлежит, то в массив по координатами x, y, z записывается 1, если нет, то p(b)/p(a).

Количество принадлежащих точек посчитывается счетчиском и по методу Монте-Карло считается объем фигуры.

2.3. Анализ результатов эксперимента

В ходе экспериментв мы брали шаг равный 0.001, 0.0002 и 0.0001. При каждом запуске программы генерировалось 1000, 5000 и 10000 случайных точек. Результаты тестирования программы представлены в таблице 1.

Таблица 1

Значения определенного интеграла для различных параметров алгоритма

Шаг

№ опыта

0.001

0.0002

0.0001

1

7.008

6.944

6.56

2

6.56

6.848

6.368

3

7.264

6.8608

6.304

4

7.2

6.8608

6.5216

5

6.912

7.04

6.2432

6

7.264

6.816

6.3264

7

7.104

6.816

6.3968

Из таблицы видно, что выбор значения шаг равного 0.0001 дает наиболее точное значения интенграла. Значения показывали единиц объема, что досаточно хорошо приближает точное значение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]