sábado, 12 de janeiro de 2019

Calculando "pi"

Existem muitas fórmulas interessantes para o cálculo da famosa constante $\pi$. Essa constante é o resultado da razão entre o comprimento do círculo pelo seu diâmetro:
\[ \pi = \frac{comprimento-do-circulo}{diametro}\]
Claro que a melhor forma de obter o valor de $\pi$ não é construindo um círculo, medindo o seu comprimento e depois dividindo pelo diâmetro. Erros de construção e medição iriam afetar o resultado final. Entre as fórmulas conhecidas para o cálculo de podemos citar (Gregory e Leibniz, Beeler et al. e Bailey et al.):
\[ \pi/4 = \sum_{k=1}^{\infty} \frac{(-1)^{k+1}}{2k-1} \] \[ \pi/2 = 1+\frac{1}{3} + \frac{1.2}{3.5}+ \frac{1.2.3}{3.5.7} + \frac{1.2.3.4}{3.5.7.9} ...\] \[ \pi=\sum_{n=0}^{\infty} (\frac{4}{8n+1}-\frac{2}{8n+4}-\frac{1}{8n+5}-\frac{1}{8n+6}).(\frac{1}{16})^n. \]
Entretanto, não iremos usar nenhuma dessas fórmulas para o cálculo de $\pi$. Usaremos o método de Newton-Raphson (para saber sobre esse método ver aqui) para encontrar zeros de uma função para calcular numericamente o valor de $\pi$. Resumidamente, o método de Newton consiste no seguinte algoritmo: \[ x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\] sendo $x_0$ o chute inicial da raiz da função $f(x)$. Esse chute não pode ser muito distante da raiz da função. No caso, escolhendo a função $\sin(x) = 0$ e como chute inicial $x_0 = 3$, usamos fórmula iterativa
\[ x_{n+1} = x_n - \tan(x_n)\]
e obtemos:

 n:      valor $x_n$:                             erro ($x_n - \pi$):
   1.    3.1425465430742778316642  - 0.0009538894844847156662
   2.    3.1415926533004769893864    0.0000000002893161266115
   3.    3.1415926535897931159980    0.

O código Scilab é bem simples:

x=3
for k=1:3
    x=x-  tan(x);
    e=%pi-x;
    disp([k,x,e]);
end

Nenhum comentário:

Postar um comentário