O número Pi (3,1415…), é um dos mais estudados da matemática.
A fórmula a seguir converge (lentamente) para Pi. É conhecida como fórmula de Leibniz.

Exercício: escrever uma função (em Excel, Vba, Python, qualquer coisa), que calcule o valor da fórmula.
Seguem algumas respostas:
- Por fórmula.

Primeiro, gero a sequência 1,3,5, 7, etc. Multiplico alternadamente por -1 e 1, via fórmula, se n é ímpar, multiplico por 1, se par, por 1.
Somando tudo, vai (lentamente) convergindo para Pi (3.1415…)
- VBA: essencialmente, a mesma coisa. Recebo um número (o número de termos a somar), e aplico a fórmula do somatório ( soma = soma + (-1) ^ (i + 1) * (1 / (2 * (i – 1) + 1))
Function leibnizPi(N)
Dim i As Integer
Dim soma As Double
For i = 1 To N
soma = soma + (-1) ^ (i + 1) * (1 / (2 * (i – 1) + 1))
Next i
leibnizPi = 4 * soma
End Function
- O mesmo código, em Python:
N = 5 #Definir o número de termos
soma =0
for i in range(1,N+1):
soma += (-1) ** (i + 1) * (1 / (2 * (i – 1) + 1))
print(4*soma)
- Há uma forma completamente diferente de fazer o cálculo de Pi, via método de Monte Carlo.
Imagine um círculo de raio 1, que tem raio pi*r^2. Este círculo, inscrito num quadrado de lado 2 (área 4).
A razão entre a área do círculo e a área do quadrado é de pi/4 = 0.78539…
Se eu “disparar” um número de tiros aleatórios neste alvo, e contar quantos pontos ficaram dentro do círculo x total de pontos, a proporção tem que ir convergindo para a proporção da fórmula. Assim, com um número infinito de tiros, consigo estimar o valor de Pi.
Computacionalmente é fácil fazer a conta. Basta um gerador de número aleatórios.

Na prática, esta técnica é usada ao contrário. Como o valor de Pi é conhecido com milhares de casas decimais (através de séries como a apresentada), este teste visa saber se o gerador de números aleatórios é realmente bom.
Em Python:
import random
import math
Npontos = 50000
cIn = 0
cOut = 0
for i in range(Npontos):
x = random.uniform(-1,1)
y = random.uniform(-1,1)
if math.sqrt(x**2+y**2 <= 1):
cIn +=1
else:
cOut +=1
print( cIn / Npontos)
#Rodando, dá valores em torno de pi/4 = 0.78539
Para download, no Google Drive:
Você precisa fazer login para comentar.