/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Es este método correcto para encontrar pi

 
      Índice del Foro elrincondelc.com -> Otros lenguajes
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
untio



Registrado: 17 Sep 2008
Mensajes: 380
Ubicación: MICA S.A.

MensajePublicado: 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: 139

MensajePublicado: 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.....Smile

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 Smile

Saludos
_________________
Aprendiendo
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 380
Ubicación: MICA S.A.

MensajePublicado: 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: 139

MensajePublicado: 01/06/2012 1:48 pm
Título:

Acabo de descubrir que se llama algoritmo de Wallis.

http://mx.answers.yahoo.com/question/index?qid=20090907183139AA9r0ls


Smile
_________________
Aprendiendo
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 380
Ubicación: MICA S.A.

MensajePublicado: 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.

MensajePublicado: 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

MensajePublicado: 15/02/2013 7:56 am
Título:

untio escribió:
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.
.............................................................................


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(). Wink
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 380
Ubicación: MICA S.A.

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Otros lenguajes
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com