НачатьНачать бесплатно

Вычисление числа π

Рассмотрим классический пример — оценку значения \(\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))
Редактировать и запускать код