Изучение числа Пи: знакомство с первыми 100 цифрами и различными методами вычислений

Математическая константа π (пи) на протяжении веков пленяла умы математиков и энтузиастов. Его бесконечное десятичное разложение было предметом восхищения, а вычисление его цифр было задачей, которую преследовали многие. В этой статье блога мы углубимся в мир числа Пи и рассмотрим различные методы вычисления и получения первых 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) и алгоритм Чудновского. Каждый метод предлагает уникальный подход к вычислению этой увлекательной математической константы. Поняв и внедрив эти алгоритмы, вы сможете отправиться в собственное путешествие по открытию цифр числа π и исследованию тайн, скрытых в его бесконечном десятичном разложении.