Поиск BBP-подобных формул для числа π.

Число π можно вычислять при помощи бесконечных рядов. Однако существуют специальные формулы, обладающие гораздо более интересным свойством: они позволяют получать отдельные цифры π, не вычисляя все предыдущие цифры. Наиболее известным примером является формула Бэйли-Борвейна-Плаффа (BBP).

π = ∞
∑

k=0
1
16k
(
4
8k+1
−
2
8k+4
−
1
8k+5
−
1
8k+6
)

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

Идея поиска других BBP-подобных формул заключается в том, чтобы рассматривать не одну известную формулу, а целое семейство рядов и искать среди них такие комбинации, которые в точности дают π и сохраняют возможность извлечения отдельных цифр.

Sj(x) = Σk=0∞ xk / (ak+j)

В рассматриваемом поиске используется x = ±2-m. Параметр a определяет шаг в знаменателях, j выбирает конкретный ряд, а m определяет степень двойки в основании.

Задача состоит в поиске рациональной линейной зависимости между π и несколькими такими суммами:

c0π + c1Sj1 + c2Sj2 + ... + cNSjN = 0.

Если коэффициент при π отличен от нуля, получаем формулу непосредственно для π:

π = q1Sj1 + q2Sj2 + ... + qNSjN.

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

Извлечение отдельных цифр.

Почему именно такие ряды подходят для этой задачи? Рассмотрим один из них:

Sj = Σk=0∞ (±2-m)k / (ak+j).

Если умножить его на 2n, получится

2nSj = Σk=0∞ 2n-mk / (ak+j).

Пока mk не превышает n, степень двойки является целой неотрицательной степенью. Поэтому соответствующие члены можно вычислять по модулю 1, не вычисляя все цифры π перед нужной позицией. После этого остается хвост ряда, который быстро уменьшается благодаря множителю 2-m.

Именно это свойство является основой BBP-подобного извлечения цифр. Положение требуемой цифры меняет множитель 2n, но не заставляет вычислять число π от начала до этой позиции.

Как оценивается найденная формула.

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

Для сравнения вводится величина

R = N / m,

где N - количество использованных рядов Sj, а m - показатель степени двойки. В качестве ориентиров используются значения R = 1,0 для BBP и R = 0,7 для формулы Белларда.

Поэтому формула с R меньше 0,7 была бы кандидатом на улучшение по этому конкретному критерию. Значение R = 0,7 означает тот же уровень эффективности, что и выбранный ориентир Белларда.

Пример найденной формулы.

В результате поиска получено, в частности, следующее представление с параметрами a = 40, m = 10 и отрицательным знаком:

π = ∞
∑

k=0
( −
1
210
)k [
16
40k+4
−
5
40k+10
−
4
40k+12
−
1
4(40k+20)
−
1
4(40k+28)
−
5
32(40k+30)
+
1
16(40k+36)
].

В этой формуле используется семь рядов Sj. Следовательно,

N = 7,    m = 10,
R = 7/10 = 0,7.

То есть по выбранному нами критерию эта формула достигает уровня Белларда, но не превосходит его.

Контрольные случаи.

Для проверки метода рассматриваются также несколько известных или контрольных случаев. При a = 8, m = 4 и положительном знаке получается структура классической BBP-формулы. Для нее количество используемых рядов и значение m дают

R = 1,0.

Другой контрольный случай имеет параметры a = 20, m = 10 и отрицательный знак. Для него используется семь слагаемых, поэтому

R = 7/10 = 0,7.

Наконец, при a = 4, m = 2 и отрицательном знаке получается вариант с

R = 1,5.

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

Поиск рациональных зависимостей.

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

θt = arg(1 - yζt),

где y выбирается так, чтобы выполнялось ya = ±2-m, а ζ является корнем единицы.

После такого преобразования вопрос о существовании формулы превращается в вопрос о рациональной линейной зависимости между π и соответствующими углами. Если π не принадлежит нужному рациональному линейному пространству, данный набор параметров не может привести к искомой формуле.

Для поиска таких зависимостей удобно использовать алгоритм PSLQ. Он позволяет по численным значениям величин находить возможные целочисленные линейные отношения между ними. Найденная зависимость после этого проверяется с повышенной точностью, чтобы отличить настоящее тождество от случайного численного совпадения.

Проверка формулы.

Полученное соотношение сначала проверяется непосредственно как математическое тождество. Если

c0π + Σ cjSj = 0,

то абсолютное значение левой части должно оставаться пренебрежимо малым при увеличении рабочей точности.

После этого формула проверяется уже своим основным свойством - извлечением двоичных цифр π. Проверяются позиции 0, 1, 7, 100, 1000, 2718 и 12345. Таким образом, кандидат должен не просто численно воспроизводить π, но и работать как формула BBP-подобного типа.

Что в итоге ищется.

Вся задача может быть сведена к следующей схеме. Сначала выбирается семейство

Sj = Σk=0∞ (±2-m)k / (ak+j).

Затем для различных a, m и знака ищется рациональная линейная зависимость с π. Неподходящие пространства отбрасываются, найденная зависимость проверяется с высокой точностью, после чего проверяется возможность извлечения цифр.

Главный интерес представляют случаи, в которых число используемых слагаемых N мало по сравнению с m. Поэтому поиск формулы с R < 0,7 был бы уже не просто еще одним представлением π, а кандидатом на улучшение по принятому критерию эффективности.