Вычисление числа π
Рассмотрим классический пример — оценку значения \(\pi\).
Представьте квадрат со стороной \(2\), центром в начале координат \((0, 0)\) и вершинами в точках \((1, 1)\), \((1, -1)\), \((-1, 1)\), \((-1, -1)\). Площадь этого квадрата равна \(2\times 2 = 4\). Теперь представьте окружность радиуса \(1\) с центром в начале координат, которая идеально вписывается в этот квадрат. Площадь круга равна \(\pi \times \text{radius}^2 = \pi\).
Чтобы оценить \(\pi\), случайным образом выберем множество точек внутри квадрата и найдём долю точек, попавших внутрь круга (\(x^2 + y^2 <= 1\)). Площадь круга составляет \(4\), умноженных на эту долю, — это и даст нам оценку \(\pi\).
Выполнив это упражнение, вы поймёте, как применять симуляции для вычислений.
Это упражнение является частью курса
Статистическое моделирование на Python
Инструкции к упражнению
- Проверьте истинное значение \(\pi\) с помощью
np.piв консоли. Инициализируйтеsimsзначением 10000, аcircle_points— значением 0. - Внутри цикла
forсгенерируйте точку (координаты x и y) с помощьюnp.random.uniform()в диапазоне от -1 до 1, указавsize=2. - Проверьте, находится ли точка внутри единичного круга по уравнению \(x^2 + y^2 <= 1\), сохраните результат в переменную
within_circleи увеличьтеcircle_pointsсоответствующим образом. - Выведите оценку \(\pi\) — переменную
pi_sim— как произведение 4 на долю точек, попавших внутрь круга.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Initialize sims and circle_points
sims, circle_points = ____, ____
for i in range(sims):
# Generate the two coordinates of a point
point = ____
# if the point lies within the unit circle, increment counter
within_circle = point[0]**2 + point[1]**2 <= 1
if ____ == True:
circle_points +=1
# Estimate pi as 4 times the avg number of points in the circle.
pi_sim = ____
print("Simulated value of pi = {}".format(pi_sim))