Algoritmo simples que calcula uma aproximação de pi. Ele se baseia na ideia de que a área de um polígono com muitos lados circunscritos dentro de um círculo unitário se aproxima de pi. No exemplo, eu testei o algoritmo com um polígono de 500 lados e o resultado da execução do código em minha máquina é 3,141592653589795 Observações importantes: O comprimento máximo que ele pode calcular é o número de dígitos decimais suportados pelo Python. O programa pode ser melhorado para aceitar a precisão arbitrária de casas decimais.
import math
def calcSide(a):
side = math.sqrt(2)
H = math.sqrt(1/2)
for x in range(1,a):
b = side/2
x = 1 - H
side = math.sqrt(b**2+x**2)
H = math.sqrt(1-(side/2)**2)
r = {"side":side,"H":H}
return r
def calcPi(a):
r = calcSide(a)
side = r["side"]
H = r["H"]
pi = (side*H*(2**(a+1)))/2
return pi
calcPi(500)