Методы вычисления числа Пи (π) в приложениях на Python

Методы вычисления числа Пи (π) в приложениях на Python

Число пи, или π, всегда пленяло умы математиков, ученых и инженеров. Этот удивительный математический констант известен своим бесконечным и непериодическим десятичным представлением. Интересно, что за тысячелетия было разработано множество методов вычисления числа пи. В этой статье мы рассмотрим некоторые из самых интересных и эффективных методов.

Что такое число пи?

Прежде чем углубиться в методы вычисления, давайте немного поговорим о том, что такое число пи. Оно представляет собой отношение длины окружности к ее диаметру. Неважно, какого размера окружность, это отношение всегда будет одинаковым, и это π.

π ≈ 3.14159265358979323846…

Исторические методы вычисления пи

Архимед и его метод

Первым, кто серьезно занялся вычислением π, был древнегреческий математик Архимед. Он использовал метод вписанных и описанных многоугольников. Архимед рассматривал многоугольники с все большим количеством сторон, чтобы приблизиться к окружности.

Примером может служить следующий алгоритм:

import math

def archimedes_pi(n_sides):
    # Радиус окружности
    radius = 1.0

    # Длина стороны многоугольника
    side_length = 2 * radius * math.sin(math.pi / n_sides)

    # Периметр многоугольника
    perimeter = n_sides * side_length

    # Вычисление числа пи
    pi_approx = perimeter / (2 * radius)

    return pi_approx

# Пример использования
print(archimedes_pi(96))  # Чем больше сторон, тем точнее значение

Метод Мадхавы

Еще одним значимым вкладом стал метод Мадхавы из Индии. Он использовал бесконечные ряды для вычисления π. Один из таких рядов называется ряды Лейбница:

π=4(113+1517+)\pi = 4 \left(1 — \frac{1}{3} + \frac{1}{5} — \frac{1}{7} + \cdots\right)

Пример реализации:

def leibniz_pi(n_terms):
    pi_approx = 0
    for k in range(n_terms):
        pi_approx += (-1)**k / (2*k + 1)
    pi_approx *= 4
    return pi_approx

# Пример использования
print(leibniz_pi(1000000))

Современные методы вычисления пи

Алгоритм Монте-Карло

Алгоритм Монте-Карло использует случайные числа для вычисления π. Идея проста: представьте круг, вписанный в квадрат. Сгенерируйте множество случайных точек внутри квдарата и посчитайте, сколько из них попало в круг. Отношение этих двух чисел приблизит значение π.

Пример реализации:

import random

def monte_carlo_pi(n_points):
    inside_circle = 0
    for _ in range(n_points):
        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)
        if x**2 + y**2 <= 1:
            inside_circle += 1
    pi_approx = (inside_circle / n_points) * 4
    return pi_approx

# Пример использования
print(monte_carlo_pi(1000000))

Быстрый алгоритм Бейли-Боруэйна-Плаффа

Для вычисления π с боьлшой точностью был разработан алгоритм Бейли-Боруэйна-Плаффа (BBP). Этот алгоритм позволяет вычислить произвольную цифру π в двоичной системе счисления без необходимости вычислять все предыдущие цифры.

Пример реализации:

def bbp_pi(n_terms):
    pi_approx = 0
    for k in range(n_terms):
        pi_approx += (1/16**k) * (4/(8*k + 1) - 2/(8*k + 4) - 1/(8*k + 5) - 1/(8*k + 6))
    return pi_approx

# Пример использования
print(bbp_pi(1000))

Численные методы

Современные компьютеры позволяют использовать численные методы для вычисления π с высокой точностью. Одним из таких методов является метод Симпсона, ктоорый используется для численного интегрирования.

Пример реализации:

def simpsons_pi(n_intervals):
    width = 1.0 / n_intervals
    pi_approx = 0
    for i in range(n_intervals):
        x0 = i * width
        x1 = (i + 1) * width
        f0 = math.sqrt(1 - x0**2)
        f1 = math.sqrt(1 - x1**2)
        pi_approx += (f0 + f1) * width / 2
    pi_approx *= 4
    return pi_approx

# Пример использования
print(simpsons_pi(1000000))

Карпов Ярослав

Автор статьи:

Обновлено:

09.06.2024


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *