| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 13/05/2012 9:25 am | | | Título: Es este método correcto para encontrar pi |
| Hola,
Lo primero, gracias por leer este post.
Estoy aprendiendo python, aunque la duda que tengo es más bien de tipo matemático. Se trataría de calcular el número pi a base de un algoritmo que no sé si es correcto, ya que en asunto de números estoy muy perdido.
Mi idea es representar un cuadrado donde haya una parte de un círculo con centro en la esquina inferior izquierda del cuadrado y cuyo radio sea igual al lado del cuadrado. Por lo tanto tengo un cuadrado y la cuarta parte de un círculo.
Genero puntos aleatorios dentro de ese cuadrado y calculo su distancia al centro del supuesto círculo, con aquello de la raíz cuadrada de la suma de cuadrados de los catetos.
Si están dentro del cuarto de círculo, incremento una variable y, si no, otra.
Después divido los casos favorables entre el total de casos (para ponerlo en tanto por uno) y lo multiplico por 4 (un cuarto de circulo) para ir obteniendo el número pi a mi manera.
El código es el siguiente (en python de aprendiz):
| Código: | #!/usr/bin/python
import random import math
def presentar(dentro, fuera): j = float(dentro) / (float(dentro) + float(fuera)) j = j * 4.0 print j
def tratardato(x, y): xx = float(x) yy = float(y) if math.sqrt(math.pow(xx, 2.0) + math.pow(yy, 2.0)) < 100000.0: return 1 else: return 0
def bucle(): dentro = 0 fuera = 0 x = 1 while x < 100000000: if tratardato(random.randint(1,100000), random.randint(1,100000)) == 1: dentro = dentro + 1 else: fuera = fuera + 1 presentar(dentro, fuera) x = x + 1
bucle()
|
Ya que aquí hay mucha gente que realmente domina las matemáticas, mi pregunta es si este método es correcto para encontrar pi.
El método me lo he sacado de la chistera. Supongo que los habrá mejores y puede que esté equivocado, de ahí mi duda.
Gracias otra vez por tu tiempo. _________________ Hago algo muy raro: primero leo las instrucciones. |
|
| Volver arriba | |
 |
dehm
Registrado: 29 Abr 2011 Mensajes: 143
| Publicado: 01/06/2012 1:07 am | | | Título: |
| Hola, sé que este mensaje llega tarde, que no aporta nada, que no se centra en tu pregunta, y que seguro que ya lo sabes, pero.....
Hay una fórmula para hallar PI por aproximaciones, que es:
pi=4*2/3*4/3*4/5*6/5*6/7*.....
A partir de 10000 iteraciones ya saca 4 decimales 
Saludos _________________ Aprendiendo |
|
| Volver arriba | |
 |
untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 01/06/2012 10:06 am | | | Título: |
| Hola,
Gracias por tu respuesta. Buscaré en la red el método que me explicas.
Gracias otra vez. _________________ Hago algo muy raro: primero leo las instrucciones. |
|
| Volver arriba | |
 |
|
dehm
Registrado: 29 Abr 2011 Mensajes: 143
| |
| Volver arriba | |
 |
untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 02/06/2012 4:23 am | | | Título: |
| Hola de nuevo,
gracias otra vez. Lo tuyo es eficacia. _________________ Hago algo muy raro: primero leo las instrucciones. |
|
| Volver arriba | |
 |
untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 17/12/2012 8:11 am | | | Título: |
| Hola nuevamente,
Hoy he visto un código en C para calcular el algoritmo de Wallis en:
http://foro.elhacker.net/programacion_cc/ccalcular_pi-t301932.0.html
Y me he permitido transformarlo a python.
El código es éste:
| Código: | #!/usr/bin/python
def calcularpi(): j = 2.0 k = 1.0 pi = 2.0 i = 0 while i < 1000000000: pi *= (j / k) if i % 2 == 0: k += 2 else: j += 2 i += 1 print pi
calcularpi()
|
Gracias otra vez. _________________ Hago algo muy raro: primero leo las instrucciones. |
|
| Volver arriba | |
 |
|
leosan
Registrado: 19 Abr 2012 Mensajes: 730 Ubicación: GRAN CANARIA
| Publicado: 15/02/2013 7:56 am | | | Título: |
|
No sé por qué, pero me gusta más a partir de la fórmula de Euler:
| Código: | def calcularpi(): j = 1.0 pi = 2.0 i = 0 factor=1 while i < 1000: factor*=(j / (2*j+1)) pi += 2*factor j += 1 i += 1 print (pi) calcularpi() |
http://es.wikipedia.org/wiki/N%C3%BAmero_%CF%80
Saluditos!. P.D: Espara Python 3.0 o superrior, observar que print es ahora una función:print().  |
|
| Volver arriba | |
 |
untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 16/02/2013 4:55 am | | | Título: |
| Hola,
Gracias, Leosan, por tu respuesta.
Lo que me alucina de este foro es lo puestos que estáis en matemáticas. Para mí son un horror.
Saludos. _________________ Hago algo muy raro: primero leo las instrucciones. |
|
| Volver arriba | |
 |
leosan
Registrado: 19 Abr 2012 Mensajes: 730 Ubicación: GRAN CANARIA
| Publicado: 16/02/2013 5:06 am | | | Título: |
| | untio escribió: | Hola,
Gracias, Leosan, por tu respuesta.
|
Me alegra poderte devolverte de alguna forma el "favor" de las API. Cualquier duda no dudes en consultarme, aunque sea via "mp". Aunque estoy algo "oxidado" algo queda.
Saluditos!. ... |
|
| Volver arriba | |
 |
|
|