Estoy utilizando la siguiente fórmula recursiva para calcular Pi basándome en las ideas de Arquímedes.
$$ S' = \sqrt{2-\sqrt{4-S^2}} $$ La fórmula devuelve la longitud de las aristas de un polígono B basándose en la longitud de las aristas del polígono A. B tiene el doble de aristas que A. Para obtener Pi simplemente hay que multiplicar S' por el número de aristas y luego dividir el resultado por dos.
Empiezas con un polígono simple de 6 lados, que tiene el radio 1, porque está formado por 3 triángulos isósceles puedes concluir que S también es 1. Si empiezo a calcular con mi programa Pyhton alcanzo una precisión de unos 500 dígitos de Pi después de unas 800 repeticiones, pero luego la precisión vuelve a disminuir.
Aquí un gráfico que muestra la precisión decimal (eje y) frente a las veces que se ha repetido la fórmula (eje x): http://imgur.com/WAU5nV4
¿Por qué disminuye la precisión? ¿Está en la naturaleza de la fórmula? ¿He metido la pata en mi programa?
EDITAR: Este es el código de python, he utilizado mpmath para la precisión arbitraria:
from sympy.mpmath import *
decimal = []
S = mpf(1)
u = mpf(0)
pi = mpf(0)
Edge = mpf(6)
mp.dps = 100;
for n in range(0,1000):
u = sqrt(mpf(4)-S**2)
S = sqrt(mpf(2) - u)
Edge = Edge*2
pi = (S*Edge)/mpf(2)
decimal.append(testestellen(pi)) #tests how much decimals are right and put them in a list