Posts Tagged ‘computação’

Como calcular computacionalmente o valor de PI

novembro 15, 2007

Apesar de existirem vários meios de se obter o valor de \pi, talvez a mais simples é a que usa alguns conceitos básicos de estatística. Considere a figura abaixo que mostra um círculo de raio 1 inscrito em um quadrado de lado 2. A área do círculo e a área do quadrado são dadas pelas equações

{A}_{circulo} = \pi{r}^{2} = \pi , r = 1

{A}_{quadrado} = {l}^{2} = 4 , l = 2

 

Circulo inscrito em um quadrado

 

Obviamente, a relação entre {A}_{circulo} e {A}_{quadrado} é

\frac{{A}_{circulo}}{{A}_{quadrado}} = \frac{\pi}{4}

Ou seja, \pi vale

\pi = 4\frac{{A}_{circulo}}{{A}_{quadrado}}

Feito isso, para calcular \pi basta gerar vários pontos aleatórios dentro do quadrado. O valor de \pi será dado pela quantidade de pontos que estão dentro do círculo dividido pela quantidade de pontos que estão dentro do quadrado (quantidade de pontos gerados). Em Matlab, isso pode ser feito com o seguinte código

amostras = 5000000; px = 2 * rand(amostras,1) - 1; py = 2 * rand(amostras,1) - 1; ptosDentroDoCirculo = sum(px.^2 + py.^2 <= 1); estimadorPi = 4 * ptosDentroDoCirculo/amostras

Em Java, este mesmo código pode ser escrito como

int amostras = 5000000;
int pontosDentroDoCirculo = 0;
for (int i = 0; i < amostras; i++) {

double px = 2*Math.random()-1;
double py = 2*Math.random()-1;
if (Math.pow(px,2) + Math.pow(py,2) <= 1) {

pontosDentroDoCirculo++;

}

}
System.out.println("PI: " + 4*(double)pontosDentroDoCirculo/(double)amostras);

Apesar de não ser a forma mais efeciente de se calcular \pi, mas é uma das mais simples de entender.

Anúncios