Computer science Math Статистика Термины

Метод Монте-Карло

Метод Монте-Карло – это статистический метод, использующий случайные числа и повторные статистические выборки для ПРИБЛИЖЕННОГО решения математических и физических задач.

Основная идея метода

Если точное решение невозможно или сликом сложно, можно получить приближенное решение, многократно имитируя случайный процесс и усредняя результаты.

Примеры для объяснения метода

Определение площади сложной фигуры

Если трудно определить площадь сложной фигуры, можно:

  1. вписать ее в квадрат известных размеров
  2. многократно кидать в квадрат точки со случайными координатами
  3. отмечать, когда точка окажется внутри фигуры
  4. посчитать отношение попаданий точки внутрь фигуры к общему числу кинутых точек и умножить на площадь квадрата

Это и будет приблизительной площадью фигуры.

Определение значения числа PI

  1. взять четверть круга радиуса 1
  2. вписать ее в квадрат со стороной 1
  3. многократно кидать точки со случайными координатами
  4. отмечать, когда точка окажется внутри четверти круга
  5. посчитать по формуле площади круга значение PI

S/4 = (Pi * R**2) / 4 = Pi/4 (радиус равен 1)

Доля точек, попавших в круг приблизительно равна Pi/4

Следовательно: Pi = 4 * (Число точек в круге/Число всех точек)

import numpy as np
import matplotlib.pyplot as plt

# Количество случайных точек
n_points = 100000

# Генерируем случайные (x, y) точки в квадрате [0,1]x[0,1]
x = np.random.rand(n_points)
y = np.random.rand(n_points)

# Считаем, сколько точек попало в четверть круга. x**2 + y**2 = 1 - это уравнение окружности. Точки должны лежать внутри или на границе.
inside_circle = x**2 + y**2 <= 1    # это выражение возвращает массив булевых значенй True или False вида inside_circle = [True, False, True, True, ...]
n_inside = np.sum(inside_circle)    # выражение считает количество True значений

# Приблизительное значение π
pi_estimate = 4 * n_inside / n_points
print(f"Оценка числа π: {pi_estimate}")

# Визуализация
plt.figure(figsize=(10,10))
plt.scatter(x[inside_circle], y[inside_circle], color='blue', s=1, label='В круге')
plt.scatter(x[~inside_circle], y[~inside_circle], color='red', s=1, label='Вне круга')
plt.legend()
plt.title(f'Оценка π ≈ {pi_estimate:.4f}')
plt.xlabel('x')
plt.ylabel('y')
plt.axis('square')
plt.show()

Применение метода Монте-Карло:

  • Физика: моделирование частиц, радиоактивного распада
  • Финансы: оценка рисков, опционов
  • Статистика: байесовские методы (например, MCMC)
  • Компьютерная графика: глобальное освещение и тени

Ключевые особенности:

ПлюсыМинусы
Простота реализацииМедленная сходимость (нужно много точек)
Универсальность (для любых задач)Требует хорошего генератора случайных чисел
Хорошо работает в высоких размерностяхМожет давать шумные результаты

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить