Аналитический метод для подсчета числа 𝜋
Статья для тех, кого привлекают интересные подходы к решению различных задач. Рассмотрим, как средствами Python найти приблизительное значение числа 𝜋.
На практическую реализацию меня натолкнула заметка о том, что 𝜋 можно получить из соотношения площадей квадрата 2х2 и вписанной в него окружности с единичным радиусом:
Так, отношение площади окружности к площади квадрата равно вероятности попадания случайной точки с произвольными координатами внутри квадрата также и в окружность:
Чтобы смоделировать вероятность возьмем набор точек с равномерным распределением по x и y и посчитаем для каждой длину вектора, соединяющего точку с началом координат. Если она меньше 1, то точка попала в окружность, в противном случае - не попала. Вероятность будет равна доле точек, попавших в окружность при достаточно большой выборке точек:
import numpy as np np.random.seed(1) x = np.random.uniform(-1, 1, size=100000) y = np.random.uniform(-1, 1, size=100000) z = np.power(np.square(x)+np.square(y), 0.5)
pi = (z<1).mean()*4 pi
А если смоделировать не 100 тыс. точек, а 10 млн, то точность числа 𝜋 возрастет, так как значение доли будет ближе к истинной вероятности: