Шаг 12.
Задачи ComputerScience на Python.
Простые задачи. Вычисление числа π

    На этом шаге мы рассмотрим алгоритм получения этого числа.

    Число π, равное 3,14159... имеет большое значение в математике и может быть получено с использованием множества формул. Одна из самых простых - формула Лейбница. Согласно этой формуле следующий бесконечный ряд сходится к числу π:

  π = 4/1 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11...

    Вы могли заметить, что числитель в этом бесконечном ряду всегда равен 4, знаменатель увеличивается на 2, а операциями над элементами ряда являются по очереди сложение и вычитание.

    Мы можем моделировать ряды простым способом, переводя части формулы в переменные внутри функции. Числитель может быть константой 4, а знаменатель - переменной, которая начинается с 1 и каждый раз увеличивается на 2. Операция может быть представлена как -1 или 1 в зависимости от того, является она сложением или вычитанием. Наконец, переменная pi в примере ниже используется для накопления суммы элементов ряда по мере выполнения цикла for.

def calculate_pi(n_terms: int) -> float:
    numerator: float = 4.0
    denominator: float = 1.0
    operation: float = 1.0
    pi: float = 0.0
    for _ in range(n_terms):
        pi += operation * (numerator / denominator)
        denominator += 2.0
        operation *= -1.0
    return pi


if __name__ == "__main__":
    print(calculate_pi(1000000))
Архив с файлом можно взять здесь.


На большинстве платформ значения float в Python являются 64-битными числами с плавающей точкой (то, что в С соответствует типу double).

    Эта функция является примером того, как быстрое преобразование между формулой и программным кодом может быть простым и эффективным при моделировании или имитации интересной концепции. Механическое преобразование - полезный инструмент, но необходимо помнить, что это не всегда самое эффективное решение. Безусловно, формула Лейбница для числа π может быть реализована посредством более эффективного или компактного кода.


Чем больше элементов бесконечного ряда вычисляется (чем больше значение n_terms при вызове метода calc_pi()), тем точнее будет окончательное значение числа π.

    Со следующего шага мы начнем рассматривать Ханойские башни.




Предыдущий шаг Содержание Следующий шаг