Иголка Бюффона: бросай иголку — получи число π
Нарративная зацепка
π — иррациональное число. Его нельзя выразить дробью. Его нельзя вычислить точно за конечное число шагов. Математики придумывают всё более изощрённые алгоритмы.
Но есть другой способ. Возьмите иголку. Нарисуйте на полу параллельные линии. Бросайте иголку много раз. Считайте, сколько раз она пересекает линию. Разделите. Получите π.
Это не магия — это геометрическая вероятность. И это был первый в истории стохастический вычислительный метод — то, что сегодня называют методом Монте-Карло.
История
Жорж-Луи Леклерк, граф де Бюффон (1707–1788) — французский натуралист, автор 44-томной «Естественной истории». В 1777 году, в работе «Опыт моральной арифметики», он поставил вопрос:
«Игла длиной L брошена случайно на пол, разлинованный параллельными линиями на расстоянии d друг от друга. Какова вероятность, что игла пересечёт одну из линий?»
Ответ: P = 2L / (πd), при L ≤ d.
Отсюда: π = 2L / (P · d) = 2 × число_бросков / (число_пересечений × d/L).
Бюффон предложил физический способ вычислить π через случайный эксперимент. Это была революция в математической мысли — связь случайности с константой.
Эксперименты в истории:
| Экспериментатор | Год | Бросков | Пересечений | π ≈ |
|---|---|---|---|---|
| Уольф (Wolf) | 1850 | 5000 | 2532 | 3.1596 |
| Смит (Smith) | 1855 | 3204 | 1218.5 | 3.1553 |
| Фокс (Fox) | 1884 | 1030 | 489 | 3.1595 |
| Лазарини (Lazzarini) | 1901 | 3408 | 1808 | 3.1415929… |
Результат Лазарини (1901) подозрительно точен — вероятно, он остановился именно тогда, когда получил нужное число. Это известный пример предвзятости остановки в статистике.
Математика: вывод формулы
Случай L ≤ d (иголка не длиннее расстояния между линиями)
Положение иголки определяется двумя случайными величинами:
- x — расстояние от центра иголки до ближайшей линии: x ∈ [0, d/2]
- θ — угол между иголкой и линиями: θ ∈ [0, π/2]
Иголка пересекает линию, если x ≤ (L/2) · sin(θ).
Вероятность пересечения:
P = (1/(d/2 · π/2)) · ∫₀^{π/2} (L/2)·sin(θ) dθ
P = (4 / (dπ)) · (L/2) · [-cos(θ)]₀^{π/2}
P = (4 / (dπ)) · (L/2) · 1
P = 2L / (πd)
Отсюда: π = 2L / (P · d).
Если выбрать L = d/2, то P = 1/π, и π = 1/P = число_бросков / число_пересечений.
Оборудование
| Что нужно | Примечание |
|---|---|
| Бумага А4 | Нарисовать параллельные линии |
| Линейка, карандаш | Разметка полос |
| Иголки (10–20 шт.) | Или зубочистки одинаковой длины |
| Карандаш для подсчёта | Таблица результатов |
| Компьютер (опционально) | Python-симулятор |
Важно: длина иголки должна быть точно известна. Используйте зубочистки одной длины (обычно 6.5 см) и разметьте полосы с расстоянием = длина зубочистки. Тогда формула упрощается: π ≈ 2 × бросков / пересечений.
Опыт 1. Физическое бросание
Подготовка
- Возьмите лист A4 (или несколько склеенных).
- Измерьте длину зубочистки (или иголки) — пусть это d.
- Нарисуйте параллельные горизонтальные линии на расстоянии d друг от друга.
- Приготовьте таблицу:
| Бросок | Пересечение (1/0) | Накопленные броски | Накопленные пересечения | π ≈ |
|---|
Процедура
- Держите зубочистку над листом, закройте глаза (или попросите другого держать).
- Бросайте с небольшой высоты (3–5 см) в случайном направлении.
- Отмечайте: пересекла ли зубочистка хотя бы одну линию (1) или нет (0).
- После каждых 10 бросков вычисляйте текущее значение π:
π ≈ 2 × (суммарное число бросков) / (суммарное число пересечений)
Ожидаемые результаты
| Число бросков | Типичная погрешность |
|---|---|
| 100 | ±0.1–0.5 |
| 1000 | ±0.02–0.1 |
| 10 000 | ±0.005–0.02 |
Метод сходится медленно — погрешность убывает как .
Опыт 2. Симулятор на Python
Физически бросать 100 000 раз утомительно. Python справится за секунду.
import random
import math
def buffon_needle(n_throws, needle_len=1.0, line_dist=1.0):
"""
Симулятор иголки Бюффона.
n_throws — число бросков
needle_len — длина иголки (должна быть <= line_dist)
line_dist — расстояние между линиями
Возвращает оценку π.
"""
crossings = 0
for _ in range(n_throws):
# Случайная позиция центра иголки (расстояние до ближайшей линии)
x = random.uniform(0, line_dist / 2)
# Случайный угол иголки
theta = random.uniform(0, math.pi / 2)
# Пересечение: x <= (L/2) * sin(theta)
if x <= (needle_len / 2) * math.sin(theta):
crossings += 1
if crossings == 0:
return None
pi_estimate = (2 * needle_len * n_throws) / (crossings * line_dist)
return pi_estimate
# Запуск с разным числом бросков
for n in [100, 1000, 10000, 100000, 1000000]:
pi_est = buffon_needle(n)
error = abs(pi_est - math.pi)
print(f"N={n:>8}: π ≈ {pi_est:.6f} | ошибка: {error:.6f}")
Запустить: установите Python (python.org), скопируйте код, запустите. Или используйте Replit/Google Colab онлайн.
Опыт 3. Citizen Science — тысячи иголок
Каждая школа, участвующая в проекте, проводит 500 бросков иголки и вводит результаты:
- Число бросков
- Число пересечений
- Длина иголки (мм)
- Расстояние между линиями (мм)
- Регион
Мы объединяем все данные. При 100 школах × 500 бросков = 50 000 реальных физических бросков → π с точностью до 3-4 знаков из коллективного эксперимента.
Форма для ввода данных: доступна на сайте проекта (раздел «Citizen Science»).
Вероятностная геометрия: за горизонтом
Задача Бюффона — частный случай более общего утверждения. Теорема Коши–Клюпфеля (формула длины кривой): среднее число пересечений случайно брошенной прямой с выпуклой кривой длиной C при расстоянии между линиями d равно 2C/(πd). Это позволяет измерять длину кривых через вероятность.
Метод Монте-Карло вышел далеко за пределы числа π. Сегодня он используется для:
- Моделирования ядерных реакций (Лос-Аламос, 1940-е — засекреченные расчёты для атомной бомбы)
- Расчёта интегралов в 1000-мерных пространствах (финансовые модели)
- Симуляций климата и фондовых рынков
- Рендеринга трёхмерной графики (каждый фотон — случайный бросок)
Имя «Монте-Карло» дал Станислав Улам в честь казино — потому что в основе метода лежит случайность, как в азартных играх.
Вопросы для обсуждения
- Почему метод Бюффона сходится так медленно? Почему погрешность падает как , а не быстрее?
- Можно ли броском иголки вычислить другие математические константы — e, ?
- Почему результат Лазарини (1901) подозрительно точен? Что такое «предвзятость остановки»?
- Какова максимальная достижимая точность физического эксперимента — и почему?
Итог
Бросок иголки и число π — неочевидная связь, ставшая отправной точкой целого класса вычислительных методов. Случайность оказалась инструментом математической точности. Метод Монте-Карло сегодня лежит в основе ядерной физики, финансовых расчётов и компьютерной графики. Всё началось в 1777 году с игры на паркете.