Математическая константа π (пи) на протяжении веков пленяла умы математиков и энтузиастов. Его бесконечное десятичное разложение было предметом восхищения, а вычисление его цифр было задачей, которую преследовали многие. В этой статье блога мы углубимся в мир числа Пи и рассмотрим различные методы вычисления и получения первых 100 цифр этого замечательного числа. Мы предоставим примеры кода для каждого метода, чтобы помочь вам понять и реализовать его.
Метод 1: алгоритм Архимеда
Архимед, один из величайших математиков древности, разработал геометрический метод аппроксимации значения π. Этот алгоритм включает вписание и описание многоугольников внутри и вокруг круга соответственно. Увеличивая количество сторон этих многоугольников, можно приблизиться к значению π. Давайте посмотрим, как этот алгоритм можно реализовать в коде:
import math
def archimedes_pi(iterations):
sides = 6
length = math.sqrt(3)
for i in range(iterations):
sides *= 2
length = math.sqrt(2 - 2 * math.sqrt(1 - (length / 2) 2))
pi_approximation = sides * length / 2
return str(pi_approximation)[:iterations + 2] # +2 to account for "3." at the beginning
# Usage:
digits = archimedes_pi(50)
print(digits)
Метод 2: формула Бейли-Борвейна-Плуффа (BBP)
Формула BBP, открытая в 1995 году, обеспечивает прямой и эффективный метод вычисления n-й шестнадцатеричной цифры числа π без необходимости вычисления предыдущих цифр. Хотя он генерирует шестнадцатеричные цифры, мы можем преобразовать их в десятичное представление. Вот пример реализации формулы BBP для получения первых 100 десятичных цифр числа π:
def bbp_pi(iterations):
pi_sum = 0
for k in range(iterations):
term = (1 / 16 k) * (
4 / (8 * k + 1) -
2 / (8 * k + 4) -
1 / (8 * k + 5) -
1 / (8 * k + 6)
)
pi_sum += term
pi_approximation = 1 / pi_sum
return str(pi_approximation)[:iterations + 2] # +2 to account for "3." at the beginning
# Usage:
digits = bbp_pi(100)
print(digits)
Метод 3: алгоритм Чудновского
Алгоритм Чудновского, разработанный братьями Чудновскими в 1989 году, известен своей высокой скоростью сходимости. Он использует концепцию бесконечных рядов для вычисления цифр числа π. Этот алгоритм сложнее предыдущих, но дает очень точные результаты. Вот реализация алгоритма Чудновского:
import decimal
def chudnovsky_pi(iterations):
decimal.getcontext().prec = iterations + 2
C = 426880 * decimal.Decimal(10005).sqrt()
sum_term = decimal.Decimal(0)
for k in range(iterations):
numerator = decimal.Decimal((-1) k) * decimal.Decimal(math.factorial(6 * k)) * (545140134 * k + 13591409)
denominator = decimal.Decimal(math.factorial(3 * k)) * (math.factorial(k) 3) * (640320 (3 * k))
sum_term += numerator / denominator
pi_approximation = C / sum_term
return str(pi_approximation)[:iterations + 2] # +2 to account for "3." at the beginning
# Usage:
digits = chudnovsky_pi(100)
print(digits)
В этой статье мы исследовали три различных метода вычисления первых 100 цифр числа π: алгоритм Архимеда, формулу Бейли-Борвейна-Плуффа (BBP) и алгоритм Чудновского. Каждый метод предлагает уникальный подход к вычислению этой увлекательной математической константы. Поняв и внедрив эти алгоритмы, вы сможете отправиться в собственное путешествие по открытию цифр числа π и исследованию тайн, скрытых в его бесконечном десятичном разложении.