quinta-feira, 8 de outubro de 2009

Pi: ver para crer!

No post anterior mostrei como se pode calcular o valor de Pi usando o Método de Monte Carlo. Também já falei no módulo cTurtle que permite colocar tartarugas a fazer desenhos numa tela. Vamos juntar as duas coisas e fornecer uma solução ao cálculo do vaslor de Pi com animação! Para já o código.


import random
import math
import cTurtle


def monte_carlo_animado(num_dardos):
"""
Valor de pi pelo método de monte Carlo.
Versão gráfica.
"""
# prepara a visualização
janela = cTurtle.Turtle()
janela.setWorldCoordinates(-2,-2,2,2)
janela.hideturtle()

janela.up()
janela.goto(-1,0)
janela.down()
janela.goto(1,0)

janela.up()
janela.goto(0,1)
janela.down()
janela.goto(0,-1)

# vamos aos cálculos
conta_dardos_in = 0
janela.up()

for i in range(num_dardos):
x = random.random()
y = random.random()

d = math.sqrt(x**2 + y**2)
janela.goto(x,y)

if d <= 1:
conta_dardos_in = conta_dardos_in + 1
janela.color("blue")
else:
janela.color("red")

janela.dot()

janela.exitOnClick()

res = 4 * (conta_dardos_in / float(num_dardos))

return res


if __name__ == '__main__':
print monte_carlo_animado(1500)


A parte da cálculo propriamente dito já foi explicado. Tratemos pois à animação. As linhas 11,12 e 13 criam a tartaruga e definem a dimensão da tela. Das linhas 15 à 22 desenhamos os eixos. Na linha 33 colocamos a tartaruga no sítio certo.Os dardos dentro do círculo serão azuis (linha 37) e ou outros vermelhos (linha 39). São desenhados como pontos (linha 41). Se clicarmos dentro da tela o programa termina (linha 43). Executando o programa para 1500 dardos obtemos a linda figura:


.

Sem comentários:

Enviar um comentário