Из заинтересованного чистого мне любопытно, как создать PI последовательно так, чтобы вместо числа, производимого после результата процесса, позвольте числам отображаться, поскольку сам процесс сгенерирован. Если это верно, затем число могло произвести себя, и я мог реализовать сборку "мусора" на ранее замеченных числах, таким образом создающих бесконечный ряд. Результатом является просто число, сгенерированное каждую секунду, который следует за серией Pi.
Вот то, что я нашел отсеиванием через Интернет:
Это это популярный благоприятный для компьютера алгоритм, подобный Machin Алгоритм:
def arccot(x, unity)
xpow = unity / x
n = 1
sign = 1
sum = 0
loop do
term = xpow / n
break if term == 0
sum += sign * (xpow/n)
xpow /= x*x
n += 2
sign = -sign
end
sum
end
def calc_pi(digits = 10000)
fudge = 10
unity = 10**(digits+fudge)
pi = 4*(4*arccot(5, unity) - arccot(239, unity))
pi / (10**fudge)
end
digits = (ARGV[0] || 10000).to_i
p calc_pi(digits)
Чтобы расширить ответ «дебилов»: что делает для вас формула Бейли-Борвейна-Плуффа, так это то, что она позволяет вам вычислять двоичные (или эквивалентно шестнадцатеричные) цифры числа Пи без вычисления всех цифр перед ним. Эта формула использовалась для вычисления квадриллионного бита числа пи десять лет назад. Это 0. (Я уверен, что вы были на грани того, чтобы выяснить это.)
Это не то же самое, что и динамический алгоритм с низким объемом памяти для вычисления битов или цифр числа Пи, который Я думаю, что вы могли иметь в виду под «последовательно». Я не думаю, что кто-то знает, как это сделать в базе 10 или 2, хотя алгоритм BPP можно рассматривать как частичное решение.
Что ж, некоторые из итерационных формул для числа Пи также чем-то похожи на последовательный алгоритм в том смысле, что есть итерация, которая производит больше цифр с каждым раундом. Однако это также лишь частичное решение, потому что обычно количество цифр удваивается или утраивается с каждым шагом. Так что вы подождете с большим количеством цифр какое-то время, и быстро придет намного больше цифр.
На самом деле, я не знаю, существует ли какой-нибудь эффективный алгоритм с низким объемом памяти для получения цифр любого стандартного иррационального числа. Даже для e вы могли бы подумать, что стандартный бесконечный ряд - эффективная формула и что у него мало памяти. Но он смотрит только на нехватку памяти вначале, и на самом деле есть более быстрые алгоритмы для вычисления многих цифр e.
Может быть, у вас получится работать с шестнадцатеричным числом? Дэвид Бейли, Питер Борвейн и Саймон Плафф открыли формулу для n-й цифры после десятичной дроби в шестнадцатеричном представлении числа пи.
Формула:
(источник: sciencenews.org )
Подробнее об этом можно прочитать здесь: http://www.andrews.edu/~calkins/ Physics / Miracle.pdf
Вопрос о том, существует ли такая формула для базы 10, все еще открыт.
Дополнительная информация: http://www.sciencenews.org/sn_arc98/2_28_98/mathland.htm