-title: Metodo de Arquimedes -author: Pedro A Tonelli -date: 26 de fevereiro de 2020


Método de arquimedes para Pi

Considere uma circunferência de diâmetro 1. O número $\pi$ é exatamente o diâmetro desta circunferência. O método de Arquimedes consiste em considerar, para cada número natural $n$, os polígonos regulares inscritos e circunscritos, com $2^n$ lados. O perímetro do polígono inscrito chamaremos de $p_n$ e o do circunscrito $P_n$. As relações $p_n< \pi < P_n$ são claras e além disso $P_n,p_n \to \pi$ quando $n\to \infty$.

Usando relações trigonométricas podemos obter as equações: $$ P_{n+1}=\frac{2P_np_n}{(P_n+p_n)} $$ $$ p_{n+1}=\sqrt{p_nP_{n+1}} $$

Usando o módulo decimal obtemos o programa:


In [1]:
import decimal

def ArchPi(precision=99):
    # x: circumference of the circumscribed (outside) regular polygon
    # y: circumference of the inscribed (inside) regular polygon

    decimal.getcontext().prec = precision+1
    D=decimal.Decimal
    
    # max error allowed
    eps = D(1)/D(10**precision)
    
    # initialize w/ square
    x = D(4)
    y = D(2)*D(2).sqrt()

    ctr = D(0)
    while x-y > eps:
        xnew = 2*x*y/(x+y)
        y = D(xnew*y).sqrt()
        x = xnew
        ctr += 1
        
    return str((x+y)/D(2))
print(ArchPi(99))


3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068

Neste programa usamos um módulo (decimal)


In [3]:
print(ArchPi(300))


3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141274

Prova das relações de Arquimedes.

Vamos considerar a figura


In [ ]: