Пишу курсовую по вычислению числа пи. Пока я закончил теоретический сайт, сейчас я пытаюсь реализовать алгоритм BBP на Python.
Вы можете найти алгоритм BBP здесь: http://en.wikipedia.org/wiki/Bailey%E2%80%93Borwein%E2%80%93Plouffe_formula
И это моя реализация на Python:
from sympy.mpmath import *
pi = mpf(0)
mp.dps = 30;
for n in range(0,500):
pi = pi + mpf((1/16**n)*(4/(8*n+1)- 2/(8*n+4)- 1/(8*n+5)- 1/(8*n+6)) )
print(pi)
Моя проблема в том, что независимо от того, как высоко я устанавливаю k или как высоко я устанавливаю десятичные разряды для числа пи, я не могу получить более высокую точность, чем 16 цифр.
Я использовал mpmath для более высокой точности, потому что раньше сталкивался с некоторыми проблемами.
Как я могу улучшить свой код, чтобы получить больше цифр?
16**500
просто не может быть представленоfloat
илиdouble
, которые вы слишком поздно конвертируете вmpf
. - person Willem Van Onsem   schedule 01.03.2015float
, однако, выполнивmpf(16)**500
, оно может быть представлено. - person Willem Van Onsem   schedule 01.03.2015