Skip to Content

§1. Вычисление интегралов: считаем площадь жребием

В прошлой главе мы научились штамповать псевдослучайные числа пачками. Пора пустить их в дело. Метод Монте-Карло — это когда серьёзную математическую задачу решают бросанием жребия: вместо аккуратных формул кидаешь случайные числа и смотришь, что выходит в среднем. Название, кстати, честно воровское по духу — его дали в честь города Монте-Карло в Монако, знаменитого своими казино. Считаем науку через рулетку.

Задача: площадь под кривой

Начнём с классики — посчитать интеграл

I=∫01φ(x) dx.I = \int_0^1 \varphi(x)\,dx.

Если не вникал в интегралы — не парься, суть простая: это площадь под кривой y=φ(x)y = \varphi(x) на отрезке [0,1][0,1]. Надо её измерить, а аналитической формулы под рукой нет.

Честный способ: метод прямоугольников

Самый прямой подход — метод прямоугольников. Режем отрезок [0,1][0,1] на nn равных кусков, в середине каждого берём значение функции и усредняем:

In=1n∑i=1nφ(xi),xi=i−1/2n.I_n = \frac1n \sum_{i=1}^{n} \varphi(x_i), \qquad x_i = \frac{i - 1/2}{n}.

Разбираем по кирпичикам:

  • xi=i−1/2nx_i = \tfrac{i-1/2}{n} — середины кусочков равномерной сетки (узлы стоят по струнке, через равные промежутки).
  • φ(xi)\varphi(x_i) — высота кривой в каждом узле.
  • 1n∑\tfrac1n \sum — усредняем все высоты. Среднее высот, умноженное на ширину (а она тут равна 1), и есть приближение площади.

Для гладких функций этот способ точный: погрешность падает как 1/n21/n^2 (взял вдвое больше узлов — ошибка упала вчетверо). Казалось бы, зачем ещё что-то выдумывать?

Способ Монте-Карло: узлы наугад

А теперь фокус. Метод Монте-Карло отличается только одним: вместо ровной сетки узлы берут случайными. Кидаем nn псевдослучайных точек η1,…,ηn\eta_1, \dots, \eta_n, равномерных на [0,1][0,1], и так же усредняем:

I^n=1n∑i=1nφ(ηi).\hat I_n = \frac1n \sum_{i=1}^{n} \varphi(\eta_i).

И — магия — это среднее тоже сходится к интегралу: I^n→I\hat I_n \to I при n→∞n \to \infty. Почему? Разберём по кирпичикам, тут красивая логика:

  • Возьмём одну случайную точку η\eta (равномерную на [0,1][0,1]) и посчитаем матожидание φ(η)\varphi(\eta). По определению матожидания это
M φ(η)=∫01φ(y) dy=I.\mathbf{M}\,\varphi(\eta) = \int_0^1 \varphi(y)\,dy = I.

То есть среднее ожидаемое значение функции в случайной точке — это ровно наш интеграл.

  • А теперь вспомни закон больших чисел (гл. 1): среднее арифметическое многих независимых величин сходится к их матожиданию. Значит I^n=1n∑φ(ηi)→M φ(η)=I\hat I_n = \tfrac1n\sum\varphi(\eta_i) \to \mathbf{M}\,\varphi(\eta) = I.

Вот и всё. Накидал случайных точек, усреднил высоты — получил площадь. По-дворовому: не хочешь честно размечать сетку — швыряй дротики наугад и считай средний улов, в итоге выйдет то же самое.

Покрути сам. Выбери функцию (например, 4·√(1−x²) → π — так можно посчитать число π\pi жребием!) и накидывай точки. Оценка пляшет, но с ростом nn садится на точное значение:

Монте-Карло: интеграл как среднее по случайным точкам

Площадь четверти круга, умноженная на 4, даёт π ≈ 3,1416. Жребием считаем число π.Оценка Î_n = среднее φ в случайных точках. Точное значение: 3.1416. Сейчас: 3.1594 (ошибка 0.0178).

Теперь то же самое кодом — оценим π\pi бросанием точек. Жми Run и меняй n:

Загрузка редактора…

Зачем это надо, если прямоугольники точнее

Честный вопрос: раз метод прямоугольников даёт точность 1/n21/n^2, а Монте-Карло — хуже (точность порядка 1/n1/\sqrt{n}, это мы выведем в §2), то зачем вообще кидать жребий?

Для одномерного интеграла — незачем, прямоугольники рулят. Но вся сила Монте-Карло вылезает в многомерии: когда интеграл не по отрезку, а по кубу в десятках измерений, аккуратная сетка становится неподъёмной (узлов — астрономическое число), а жребию всё равно — кидай точки да усредняй. Об этом — в §3. А пока запомни главное: среднее по случайным точкам сходится к интегралу.

Проверь себя

Тест

К чему сходится среднее Î_n = (1/n)Σφ(η_i) по случайным точкам η_i из [0,1]?
Обновлено