Featured image of post Игла Бюффона - Классическая задача теории вероятностей, где бросание иглы находит Пи

Игла Бюффона - Классическая задача теории вероятностей, где бросание иглы находит Пи

Можно ли найти Пи (π), просто бросив иглу на пол? Мы подробно объясняем удивительную классическую задачу теории вероятностей, предложенную в 18 веке, «Игла Бюффона», от ее математического доказательства до симуляции.

Что такое Игла Бюффона?

В мире математики существует множество красивых теорем, в которых удивительным образом связываются факты, противоречащие интуиции, или казалось бы не связанные между собой события. Одной из самых известных и увлекательных задач среди них является задача Бюффона о бросании иглы.

Эта задача была предложена в 1733 году Жорж-Луи Леклерком, графом де Бюффоном, французским естествоиспытателем и математиком 18-го века, и впервые была решена в 1777 году.

Удивительно, но эта задача утверждает, что с помощью чисто физического и случайного действия — «случайного бросания иглы на пол» — можно определить одну из самых важных констант в математике, число Пи $\pi$. Это известно как одна из самых ранних задач геометрической вероятности и было новаторским открытием, которое можно назвать предшественником более позднего метода Монте-Карло.

В этой статье мы подробно и понятно объясним, начиная с постановки задачи Иглы Бюффона, её математического доказательства и заканчивая оценкой Пи путем симуляции с использованием современных компьютеров.

Базовая постановка задачи

Постановка задачи об игле Бюффона очень проста.

  1. На ровном полу начерчено множество параллельных прямых линий на равном расстоянии $d$.
  2. Подготавливается одна игла длиной $l$.
  3. Эту иглу случайным образом (наугад) бросают на пол.

В этот момент, «Какова вероятность того, что брошенная игла пересечет одну из параллельных линий, начерченных на полу?» — вот задача, предложенная Бюффоном.

Следующая диаграмма показывает концептуальный ход этого эксперимента.

  graph TD
    A["Случайным образом бросить иглу"] -->|"Гравитация и сопротивление воздуха"| B["Приземлиться на пол"]
    B --> C{"Пересекла ли она линию?"}
    C -->|"Да"| D["Считать пересечения (+1)"]
    C -->|"Нет"| E["Нет пересечения"]
    D --> F["Вычислить вероятность P"]
    E --> F
    F -->|"P = 2l / (πd)"| G["Вычислить число Пи π обратно"]

Здесь, чтобы упростить задачу, мы рассматриваем случай короткой иглы, когда длина иглы $l$ меньше или равна расстоянию между параллельными линиями $d$ ($l \le d$). При этом условии игла никогда не пересечет две или более прямые линии одновременно.

Математическое моделирование и вывод вероятности

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

Для определения положения иглы мы вводим следующие две переменные.

  1. $x$ : Расстояние по вертикали от центра иглы до ближайшей параллельной линии.
  2. $\theta$ : Острый угол (или прямой угол), образованный иглой и параллельными линиями.

Возможный диапазон переменных

Сначала давайте подумаем, какие значения может принимать каждая переменная.

  • Что касается расстояния $x$: Центр иглы падает где-то между двумя соседними параллельными линиями. Поскольку мы рассматриваем расстояние до ближайшей линии, минимальное значение $x$ равно $0$ (когда центр иглы находится на линии), а максимальное значение равно $\frac{d}{2}$ (когда центр иглы находится точно посередине между двумя линиями). То есть, $0 \le x \le \frac{d}{2}$. Поскольку игла бросается случайным образом, $x$ следует равномерному распределению в этом диапазоне. Функция плотности вероятности равна $\frac{2}{d}$.
  • Что касается угла $\theta$: Угол, образованный иглой и параллельной линией, принимает значение от $0$, когда игла параллельна прямой линии, до $\frac{\pi}{2}$ (90 градусов), когда она перпендикулярна. Из соображений симметрии нет необходимости рассматривать углы больше этого. Поэтому, $0 \le \theta \le \frac{\pi}{2}$. Поскольку ориентация иглы также случайна, $\theta$ также следует равномерному распределению в этом диапазоне. Функция плотности вероятности равна $\frac{2}{\pi}$.

Поскольку переменные $x$ и $\theta$ независимы друг от друга, совместная функция плотности вероятности $f(x, \theta)$ того, что они примут конкретную пару $(x, \theta)$, выражается как произведение их соответствующих функций плотности вероятности.

$$ f(x, \theta) = \frac{2}{d} \times \frac{2}{\pi} = \frac{4}{d\pi} $$

Условия пересечения

Далее рассмотрим условия, при которых игла пересекает прямую линию. Игла пересекает прямую линию, когда длина по вертикали от центра иглы до её конца больше или равна расстоянию $x$ до ближайшей линии.

Поскольку длина иглы равна $l$, длина от центра до конца равна $\frac{l}{2}$. Когда угол равен $\theta$, расстояние, которое эта половина иглы занимает в вертикальном направлении (проекция длины), равно $\frac{l}{2} \sin \theta$.

Поэтому условие того, что игла пересечет прямую линию, выражается следующим неравенством.

$$ x \le \frac{l}{2} \sin \theta $$

Вычисление вероятности

Вероятность $P$ того, что игла пересечет линию, получается путем интегрирования совместной функции плотности вероятности $f(x, \theta)$ по области, удовлетворяющей условию пересечения.

$$ P = \iint_{\text{Область пересечения}} f(x, \theta) \, dx \, d\theta $$

Конкретный диапазон интегрирования - это где $\theta$ изменяется от $0$ до $\frac{\pi}{2}$, а $x$ изменяется от $0$ до предельного значения пересечения $\frac{l}{2} \sin \theta$.

$$ P = \int_{0}^{\frac{\pi}{2}} \int_{0}^{\frac{l}{2} \sin \theta} \frac{4}{d\pi} \, dx \, d\theta $$

Сначала мы вычисляем внутренний интеграл по $x$.

$$ \int_{0}^{\frac{l}{2} \sin \theta} \frac{4}{d\pi} \, dx = \frac{4}{d\pi} \left[ x \right]_{0}^{\frac{l}{2} \sin \theta} = \frac{4}{d\pi} \left( \frac{l}{2} \sin \theta - 0 \right) = \frac{2l}{d\pi} \sin \theta $$

Далее мы вычисляем внешний интеграл по $\theta$.

$$ P = \int_{0}^{\frac{\pi}{2}} \frac{2l}{d\pi} \sin \theta \, d\theta = \frac{2l}{d\pi} \int_{0}^{\frac{\pi}{2}} \sin \theta \, d\theta $$

Поскольку интегралом от $\sin \theta$ является $-\cos \theta$,

$$ \int_{0}^{\frac{\pi}{2}} \sin \theta \, d\theta = \left[ -\cos \theta \right]_{0}^{\frac{\pi}{2}} = (-\cos \frac{\pi}{2}) - (-\cos 0) = -0 - (-1) = 1 $$

Поэтому искомая вероятность $P$ выглядит следующим образом.

$$ P = \frac{2l}{d\pi} \times 1 = \frac{2l}{\pi d} $$

Это основная формула Иглы Бюффона. Вероятность того, что игла пересечет линию, в два раза превышает длину иглы $l$, деленную на произведение числа Пи $\pi$ и расстояния между линиями $d$.

Оценка числа Пи (Метод Монте-Карло)

Выведенная формула $P = \frac{2l}{\pi d}$ красиво включает в себя $\pi$. Решая это уравнение относительно $\pi$, получаем следующее.

$$ \pi = \frac{2l}{P d} $$

Это уравнение означает, что если известна только вероятность $P$, то можно вычислить Пи $\pi$. Конечно, истинную вероятность $P$ нельзя узнать без бесконечного количества испытаний, но бросая иглу много раз в реальном эксперименте, можно получить приблизительное значение $P$.

Пусть $N$ — общее количество раз, когда игла была брошена, а $C$ — количество раз, когда игла пересекла линию. Если количество испытаний $N$ достаточно велико, по закону больших чисел эмпирическая вероятность $\frac{C}{N}$ приближается к теоретической вероятности $P$.

$$ P \approx \frac{C}{N} $$

Подставляя это в предыдущее уравнение, получаем формулу для нахождения приблизительного значения числа Пи $\pi$.

$$ \pi \approx \frac{2l \cdot N}{C \cdot d} $$

Самый простой расчет получается, когда длина иглы $l$ и расстояние между линиями $d$ одинаковы ($l = d$). В этом случае формула становится еще проще.

$$ \pi \approx \frac{2N}{C} $$

Другими словами, просто разделите удвоенное «количество раз, когда игла была брошена» на «количество раз, когда она пересеклась», и получится Пи!

Симуляция с использованием Python

Бросать иглу тысячи раз вручную - очень трудоемкая задача (хотя исторически есть математики, которые действительно проводили эксперименты тысячи раз). Сегодня мы можем легко смоделировать этот эксперимент с помощью компьютера.

Ниже приведен простой пример кода с использованием Python для симуляции эксперимента с иглой Бюффона и оценки числа Пи.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import random
import math

def buffons_needle_simulation(num_trials, l, d):
    """
    Функция для симуляции иглы Бюффона и оценки Пи
    
    :param num_trials: Количество бросков иглы
    :param l: Длина иглы
    :param d: Расстояние между параллельными линиями
    :return: Оценочное значение Пи
    """
    crosses = 0
    
    for _ in range(num_trials):
        # Случайным образом генерируем расстояние x от центра иглы до ближайшей линии (от 0 до d/2)
        x = random.uniform(0, d / 2.0)
        
        # Случайным образом генерируем угол theta иглы (от 0 до pi/2)
        theta = random.uniform(0, math.pi / 2.0)
        
        # Проверяем, выполняется ли условие пересечения
        if x <= (l / 2.0) * math.sin(theta):
            crosses += 1
            
    # Обработка исключений, чтобы избежать ошибок, если она никогда не пересекается
    if crosses == 0:
        return float('inf')
        
    # Вычисление оценки Пи
    estimated_pi = (2.0 * l * num_trials) / (d * crosses)
    return estimated_pi

# Настройки параметров
N = 1000000  # Количество испытаний (1 миллион раз)
needle_length = 1.0
line_distance = 1.0

# Выполнение симуляции
estimated_pi = buffons_needle_simulation(N, needle_length, line_distance)

print(f"Количество испытаний: {N:,} раз")
print(f"Оценочное Пи:         {estimated_pi}")
print(f"Фактическое Пи:       {math.pi}")
print(f"Ошибка:               {abs(math.pi - estimated_pi)}")

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

Резюме

Игла Бюффона на первый взгляд кажется простой физической игрой в случайность, но за ней стоит солидная математическая теория. То, как случайные события (вероятность), геометрические фигуры (линии и отрезки) и абсолютное иррациональное число $\pi$ сливаются в одну простую математическую формулу, воплощает в себе красоту математики.

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

Почему бы не приготовить бумагу, ручку и несколько зубочисток и не испытать часть этой великой математической истории дома?

comments powered by Disqus