Метод Монте-Карло
Методы Мо́нте-Ка́рло (ММК) — группа численных методов для изучения случайных процессов. Суть метода заключается в следующем: процесс описывается математической моделью с использованием генератора случайных величин, модель многократно обсчитывается, на основе полученных данных вычисляются вероятностные характеристики рассматриваемого процесса. Например, чтобы узнать методом Монте-Карло, какое в среднем будет расстояние между двумя случайными точками в круге, нужно взять координаты большого числа случайных пар точек в границах заданной окружности, для каждой пары вычислить расстояние, а потом для них посчитать среднее арифметическое.
Методы используются для решения задач в различных областях физики, химии, математики, экономики, оптимизации, теории управления и др.
Название метода происходит от района Монте-Карло, известного своими казино.
История[править | править код]
Метод Бюффона для определения числа Пи[править | править код]
Случайные величины использовались для решения различных прикладных задач достаточно давно. Примером может служить способ определения числа Пи, который был предложен Бюффоном еще в 1777 году. Суть метода была в бросании иглы длиной на плоскость, расчерченную несколькими параллельными прямыми, расположенными на расстоянии друг от друга. Вероятность (при условии или математическое ожидание в ином случае) того, что отрезок пересечёт прямую, связана с числом Пи:
где
- — расстояние от начала иглы до ближайшей к ней прямой;
- — угол иглы относительно прямых.
Этот интеграл просто взять: (при условии, что ), поэтому подсчитав долю отрезков, пересекающих прямые, можно приближённо определить это число. При увеличении количества попыток точность получаемого результата будет увеличиваться.
В 1864 году капитан Фокс, выздоравливая после ранения, чтобы как-то занять себя, реализовал эксперимент по бросанию иглы[1]. Результаты представлены в следующей таблице:[2]
Число бросаний | Число пересечений | Длина иглы | Расстояние между прямыми | Вращение | Значение Пи | Ошибка | |
---|---|---|---|---|---|---|---|
Первая попытка | 500 | 236 | 3 | 4 | отсутствует | 3.1780 | +3,6⋅10−2 |
Вторая попытка | 530 | 253 | 3 | 4 | присутствует | 3.1423 | +7,0⋅10−4 |
Третья попытка | 590 | 939 | 5 | 2 | присутствует | 3.1416 | +4,7⋅10−5 |
Комментарии:
- Длины указаны в дюймах.
- Вращение плоскости применялось (и как показывают результаты — успешно) для того, чтобы уменьшить систематическую ошибку[2].
- В третьей попытке длина иглы была больше расстояния между линиями, что позволило, не увеличивая числа бросаний, эффективно увеличить число событий и повысить точность (за одно бросание могло возникнуть несколько пересечений).
Связь стохастических процессов и дифференциальных уравнений[править | править код]
Создание математического аппарата стохастических методов началось в конце XIX века. В 1899 году лорд Релей показал, что одномерное случайное блуждание на бесконечной решётке может давать приближенное решение одного из видов параболического дифференциального уравнения[3]. Андрей Николаевич Колмогоров в 1931 году дал большой толчок развитию стохастических подходов к решению различных математических задач, поскольку он сумел доказать, что цепи Маркова связаны с некоторыми интегро-дифференциальными уравнениями. В 1933 году Иван Георгиевич Петровский показал, что случайное блуждание, образующее Марковскую цепь, асимптотически связано с решением эллиптического дифференциального уравнения в частных производных. После этих открытий стало понятно, что стохастические процессы можно описывать дифференциальными уравнениями и, соответственно, исследовать при помощи хорошо на тот момент разработанных математических методов решения этих уравнений.
Рождение метода Монте-Карло в Лос-Аламосе[править | править код]
Сначала Энрико Ферми в 1930-х годах в Италии, а затем Джон фон Нейман и Станислав Улам в 1940-х в Лос-Аламосе предположили, что можно использовать связь между стохастическими процессами и дифференциальными уравнениями «в обратную сторону». Они предложили использовать стохастический подход для аппроксимации многомерных интегралов в уравнениях переноса, возникших в связи с задачей о движении нейтрона в изотропной среде.
Идея была развита Уламом, который, раскладывая пасьянсы во время выздоровления после болезни, задался вопросом, какова вероятность того, что пасьянс сложится. Вместо того, чтобы использовать обычные для подобных задач соображения комбинаторики, Улам предположил, что можно просто поставить эксперимент большое число раз и, подсчитав число удачных исходов, оценить вероятность. Но из-за необходимости проведения большого количества однотипных экспериментальных действий метод не получил большого распространения.
С появлением первого электронного компьютера ENIAC, который мог с большой скоростью генерировать псевдослучайные числа и использовать их в математических моделях, возобновился интерес к стохастическим методам. Станислав Улам обсудил свои идеи с Джоном фон Нейманом, который в конечном итоге использовал ENIAC для предложенного Уламом метода статистического отбора при решении различных проблем перемещения нейтронов[4]. Из-за необходимости в конце 1946 года выключить ENIAC на значительное время, для продолжения исследований перемещения нейтронов Энрико Ферми даже разработал специализированный аналоговый компьютер, которому дали имя FERMIAC (по аналогии с ENIAC, но с указанием на авторство Ферми), где также был на механическом уровне реализован метод Монте-Карло.
После начала использования компьютеров произошёл большой прорыв, и метод Монте-Карло применялся во многих задачах, для решения которых стохастический подход оказался более эффективным, чем другие математические методы. Тем не менее, использование такой методики имело и свою ограниченность из-за необходимости очень большого количества вычислений для получения результатов с высокой точностью.
Годом рождения термина «метод Монте-Карло» считается 1949 год, когда в свет вышла статья Метрополиса и Улама «Метод Монте-Карло». Название метода происходит от названия коммуны в княжестве Монако, широко известного своими многочисленными казино, поскольку именно рулетка является одним из самых широко известных генераторов случайных чисел. Станислав Улам пишет в автобиографии «Приключения математика», что название было предложено Николасом Метрополисом в честь его дяди, который был азартным игроком.
Дальнейшее развитие и современность[править | править код]
В 1950-х годах метод использовался для расчётов при разработке водородной бомбы. Основные заслуги в развитии метода в это время принадлежат сотрудникам лабораторий ВВС США и корпорации RAND. Одними из первых Метод Монте-Карло для расчёта ливней частиц применили советские физики А. А. Варфоломеев и И. А. Светлолобов[5].
В 1970-х годах в новой области математики — теории вычислительной сложности было показано, что существует класс задач, сложность (количество вычислений, необходимых для получения точного ответа) которых растёт с размерностью задачи экспоненциально. Иногда можно, пожертвовав точностью, найти алгоритм, сложность которого растёт медленнее, но есть большое количество задач, для которого этого нельзя сделать (например, задача определения объёма выпуклого тела в n-мерном евклидовом пространстве, а если обобщить, то вообще вычисление n-мерных интегралов) и метод Монте-Карло является единственной возможностью для получения достаточно точного ответа за приемлемое время.
В настоящее время основные усилия исследователей направлены на создание эффективных Монте-Карло алгоритмов различных физических, химических и социальных процессов для параллельных вычислительных систем.
Интегрирование методом Монте-Карло[править | править код]
Предположим, необходимо взять интеграл от некоторой функции. Воспользуемся неформальным геометрическим описанием интеграла и будем понимать его как площадь под графиком этой функции.
Для определения этой площади можно воспользоваться одним из обычных численных методов интегрирования: разбить отрезок на подотрезки, подсчитать площадь под графиком функции на каждом из них и сложить. Предположим, что для функции, представленной на рисунке 2, достаточно разбиения на 25 отрезков и, следовательно, вычисления 25 значений функции. Представим теперь, мы имеем дело с -мерной функцией. Тогда нам необходимо отрезков и столько же вычислений значения функции. При размерности функции больше 10 задача становится огромной. Поскольку пространства большой размерности встречаются, в частности, в задачах теории струн, а также многих других физических задачах, где имеются системы со многими степенями свободы, необходимо иметь метод решения, вычислительная сложность которого бы не столь сильно зависела от размерности. Именно таким свойством обладает метод Монте-Карло.
Обычный алгоритм Монте-Карло интегрирования[править | править код]
Предположим, требуется вычислить определённый интеграл
Рассмотрим случайную величину , равномерно распределённую на отрезке интегрирования . Тогда также будет случайной величиной, причём её математическое ожидание выражается как
где — плотность распределения случайной величины , равная на участке . Таким образом, искомый интеграл выражается как
но математическое ожидание случайной величины можно легко оценить, смоделировав эту случайную величину и посчитав выборочное среднее.
Итак, бросаем точек, равномерно распределённых на , для каждой точки вычисляем . Затем вычисляем выборочное среднее: . В итоге получаем оценку интеграла:
Точность оценки зависит только от количества точек .
Этот метод имеет и геометрическую интерпретацию. Он очень похож на описанный выше детерминистический метод, с той разницей, что вместо равномерного разделения области интегрирования на маленькие интервалы и суммирования площадей получившихся «столбиков» мы забрасываем область интегрирования случайными точками, на каждой из которых строим такой же «столбик», определяя его ширину как , и суммируем их площади.
Геометрический алгоритм Монте-Карло интегрирования[править | править код]
Для определения площади под графиком функции можно использовать следующий стохастический алгоритм:
- ограничим функцию прямоугольником (n-мерным параллелепипедом в случае многих измерений), площадь которого можно легко вычислить; любая сторона прямоугольника содержит хотя бы 1 точку графика функции, но не пересекает его;
- «набросаем» в этот прямоугольник (параллелепипед) некоторое количество точек ( штук), координаты которых будем выбирать случайным образом;
- определим число точек ( штук), которые попадут под график функции;
- площадь области, ограниченной функцией и осями координат, даётся выражением
Для малого числа измерений интегрируемой функции производительность Монте-Карло интегрирования гораздо ниже, чем производительность детерминированных методов. Тем не менее, в некоторых случаях, когда функция задана неявно, а необходимо определить область, заданную в виде сложных неравенств, стохастический метод может оказаться более предпочтительным.
Использование выборки по значимости[править | править код]
При том же количестве случайных точек, точность вычислений можно увеличить, приблизив область, ограничивающую искомую функцию, к самой функции. Для этого необходимо использовать случайные величины с распределением, форма которого максимально близка к форме интегрируемой функции. На этом основан один из методов улучшения сходимости в вычислениях методом Монте-Карло: выборка по значимости.
Оптимизация[править | править код]
Различные вариации метода Монте-Карло можно использовать для решения задач оптимизации. Например, алгоритм имитации отжига.
Применение в физике[править | править код]
Компьютерное моделирование играет в современной физике важную роль и метод Монте-Карло является одним из самых распространённых во многих областях от квантовой физики до физики твёрдого тела, физики плазмы и астрофизики.
Алгоритм Метрополиса[править | править код]
Традиционно метод Монте-Карло применялся для определения различных физических параметров систем, находящихся в состоянии термодинамического равновесия. Предположим, что имеется набор возможных состояний физической системы . Для определения среднего значения некоторой величины необходимо рассчитать , где суммирование производится по всем состояниям из , — вероятность состояния .
Динамическая (кинетическая) формулировка[править | править код]
Прямое моделирование методом Монте-Карло[править | править код]
Прямое моделирование методом Монте-Карло какого-либо физического процесса подразумевает моделирование поведения отдельных элементарных частей физической системы. По сути это прямое моделирование близко к решению задачи из первых принципов, однако обычно для ускорения расчётов допускается применение каких-либо физических приближений. Примером могут служить расчёты различных процессов методом молекулярной динамики: с одной стороны система описывается через поведение её элементарных составных частей, с другой стороны, используемый потенциал взаимодействия зачастую является эмпирическим.
Примеры прямого моделирования методом Монте-Карло:
- Моделирование облучения твёрдых тел ионами в приближении бинарных столкновений.
- Прямое Монте-Карло моделирование разреженных газов.
- Большинство кинетических Монте-Карло моделей относятся к числу прямых (в частности, исследование молекулярно-пучковой эпитаксии).
Квантовый метод Монте-Карло[править | править код]
Квантовый метод Монте-Карло широко применяется для исследования сложных молекул и твёрдых тел. Это название объединяет несколько разных методов. Первый из них это вариационный метод Монте-Карло, который по сути является численным интегрированием многомерных интегралов, возникающих при решении уравнения Шрёдингера. Для решения задачи, в которой участвует 1000 электронов, необходимо взятие 3000-мерных интегралов, и при решении таких задач метод Монте-Карло имеет огромное преимущество в производительности по сравнению с другими численными методами интегрирования. Другая разновидность метода Монте-Карло — это диффузионный метод Монте-Карло.
См. также[править | править код]
- Формула Фейнмана — Каца
- Генераторы псевдослучайных чисел
- Лас-Вегас (алгоритм)
- Семплирование
- AQUA@home
- QMC@Home
- QuantumFire
- Задача Бюффона о бросании иглы
- Метод энтропического моделирования
- Алгоритм Ванга-Ландау
- Использование метода Монте-Карло для поиска в дереве при игре в го.
Примечания[править | править код]
- ↑ Math Surprises: An Example Архивная копия от 30 января 2012 на Wayback Machine (англ.)
- ↑ 1 2 A.Hall. On an experimental determination of Pi : [арх. 7 марта 2016] // The Messenger of Mathematics. — 1872. — Vol. 2. — P. 113—114.
- ↑ Fishman, 1996, p. 344.
- ↑ Nicholas; Metropolis. The Monte Carlo Method (англ.) // Journal of the American Statistical Association : journal. — 1949. — Vol. 44, no. 247. — P. 335—341. — ISSN 0162-1459. — doi:10.2307/2280232.
- ↑ Варфоломеев A. A., Светлолобов И. А. ЖЭТФ. 1959. Т.36. с.1263-1270
Литература[править | править код]
- Соболь И. М. Метод Монте-Карло. — М.: Наука, 1968. — 64 с. — (Популярные лекции по математике). — 79 000 экз.
- Статья «Моделируя жизнь», автор Андрей Тепляков
- Metropolis, N., Ulam, S. The Monte Carlo Method, — Journal of the American Statistical Association 1949 44 № 247 335—341.
- Alex F Bielajew. Fundamentals of the Monte Carlo method for neutral and charged particle transport. 2001
- W. M. C. Foulkes, L. Mitas, R. J. Needs and G. Rajagopal Quantum Monte Carlo simulations of solids, — Reviews of Modern Physics 73 (2001) 33.
- Статья «Metropolis, Monte Carlo and the MANIAC»
- Fishman, George S. Monte Carlo : concepts, algorithms, and applications. — Springer, 1996. — ISBN 0-387-94527-X.
В статье есть список источников, но не хватает сносок. |