Алгоритм втулки - Spigot algorithm

А алгоритм патрубка является алгоритм для вычисления значения трансцендентного числа (например, π или же е ), который генерирует цифры числа последовательно слева направо, обеспечивая возрастающую точность по мере выполнения алгоритма. Алгоритмы Spigot также стремятся минимизировать объем требуемой промежуточной памяти. Название происходит от значения слова «кран» для кран или клапан контроль потока жидкости. Алгоритмы втулки можно противопоставить алгоритмам, которые хранят и обрабатывают полные числа, чтобы последовательно производить более точные приближения к желаемому трансцендентному.

Интерес к алгоритмам втулки был подстегнут на заре вычислительной математики крайними ограничениями на память, и такой алгоритм для вычисления цифр е появилась в газете Sale в 1968 году.[1] Название «алгоритм патрубка», похоже, было придумано Стэнли Рабиновиц и Стэн Вагон, чей алгоритм вычисления цифр π иногда упоминается как "то втулочный алгоритм для π".[2]

Алгоритм втулки Рабиновица и Вагона: ограниченный, в том смысле, что количество слагаемых бесконечного ряда, которые будут обрабатываться, необходимо указать заранее. Термин «потоковый алгоритм» (Джереми Гиббонс (2004)[3]) обозначает подход без этого ограничения. Это позволяет выполнять расчет неограниченно, изменяя объем промежуточной памяти по мере выполнения расчета.

Вариант подхода с патрубком использует алгоритм, который можно использовать для вычисления одной произвольной цифры трансцендентного без вычисления предшествующих цифр: примером является Формула Бейли – Борвейна – Плуфа, алгоритм извлечения цифр для π который дает основание 16 цифр. Неизбежное усечение лежащей в основе бесконечной серии алгоритма означает, что точность результата может быть ограничена количеством вычисляемых членов.

Пример

Этот пример иллюстрирует работу алгоритма втулки путем вычисления двоичных цифр натуральный логарифм из 2 (последовательность A068426 в OEIS ) используя тождество

Чтобы начать вычисление двоичных цифр, например, с 8-го места, мы умножаем это тождество на 27 (поскольку 7 = 8-1):

Затем мы делим бесконечную сумму на «голову», в которой показатель степени 2 больше или равен нулю, и «хвост», в котором показатель степени 2 отрицательный:

Нас интересует только дробная часть этого значения, поэтому мы можем заменить каждое из слагаемых в «голове» на

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

kА = 27−kB = А мод kC = B / kСумма C мод 1
164000
232000
31611/31/3
48001/3
5444/52/15
6221/37/15
7111/764/105

Мы добавляем несколько членов в «хвост», отмечая, что ошибка, вызванная усечением суммы, меньше последнего члена:

kD = 1/k2k−7Сумма DМаксимальная ошибка
81/161/161/16
91/3613/1441/36
101/8037/3601/80

Сложив вместе «голову» и несколько первых членов «хвоста», мы получим:

поэтому с 8-й по 11-ю двоичные цифры в двоичном разложении ln (2) равны 1, 0, 1, 1. Обратите внимание, что мы не вычислили значения первых семи двоичных цифр - действительно, вся информация о них была намеренно отброшена используя модульная арифметика в «головной» сумме.

Тот же подход можно использовать для вычисления цифр двоичного разложения ln (2), начиная с произвольного пth позиция. Количество слагаемых в «головной» сумме линейно увеличивается с увеличением п, но сложность каждого члена увеличивается только с логарифмом п если эффективный метод модульное возведение в степень используется. В точность расчетов и промежуточных результатов, а также количество членов, взятых из «хвостовой» суммы, не зависят от п, и зависят только от количества вычисляемых двоичных цифр - одинарная точность арифметика может использоваться для вычисления около 12 двоичных цифр, независимо от начальной позиции.

Рекомендации

  1. ^ Продажа, AHJ (1968). "Расчет е до многих значащих цифр ". Компьютерный журнал. 11 (2): 229–230. Дои:10.1093 / comjnl / 11.2.229. Получено 8 мая 2013.
  2. ^ Рабиновиц, Стэнли; Вагон, Стэн (1995). «Алгоритм втулки для цифр числа Пи» (PDF). Американский математический ежемесячный журнал. 102 (3): 195–203. Дои:10.2307/2975006. Получено 8 мая 2013.
  3. ^ Гиббонс, Джереми (24 мая 2004 г.). "Алгоритмы неограниченного патрубка для цифр числа Пи" (PDF).

дальнейшее чтение