Es este método correcto para encontrar pi

Dudas y comentarios sobre otros lenguajes de programación. Si algún lenguaje recibe suficientes preguntas le añadimos nueva categoría.
Responder
Mensaje
Autor
Avatar de Usuario
untio
Mensajes: 389
Registrado: 17/09/2008 9:35 am
Ubicación: Provincia de Almería
Contactar:

Es este método correcto para encontrar pi

#1 Mensaje por untio » 13/05/2012 9:25 am

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: Seleccionar todo

#!/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.

dehm
Mensajes: 311
Registrado: 29/04/2011 7:31 am

#2 Mensaje por dehm » 01/06/2012 1:07 am

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

Avatar de Usuario
untio
Mensajes: 389
Registrado: 17/09/2008 9:35 am
Ubicación: Provincia de Almería
Contactar:

#3 Mensaje por untio » 01/06/2012 10:06 am

Hola,

Gracias por tu respuesta. Buscaré en la red el método que me explicas.

Gracias otra vez.

dehm
Mensajes: 311
Registrado: 29/04/2011 7:31 am

#4 Mensaje por dehm » 01/06/2012 1:48 pm

Acabo de descubrir que se llama algoritmo de Wallis.

http://mx.answers.yahoo.com/question/in ... 139AA9r0ls


:-)
Aprendiendo

Avatar de Usuario
untio
Mensajes: 389
Registrado: 17/09/2008 9:35 am
Ubicación: Provincia de Almería
Contactar:

#5 Mensaje por untio » 02/06/2012 4:23 am

Hola de nuevo,

gracias otra vez. Lo tuyo es eficacia.

Avatar de Usuario
untio
Mensajes: 389
Registrado: 17/09/2008 9:35 am
Ubicación: Provincia de Almería
Contactar:

#6 Mensaje por untio » 17/12/2012 8:11 am

Hola nuevamente,

Hoy he visto un código en C para calcular el algoritmo de Wallis en:

http://foro.elhacker.net/programacion_c ... 932.0.html

Y me he permitido transformarlo a python.

El código es éste:

Código: Seleccionar todo

#!/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.

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#7 Mensaje por leosan » 15/02/2013 7:56 am

untio escribió:Hola nuevamente,

Hoy he visto un código en C para calcular el algoritmo de Wallis en:

http://foro.elhacker.net/programacion_c ... 932.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: Seleccionar todo

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:

Avatar de Usuario
untio
Mensajes: 389
Registrado: 17/09/2008 9:35 am
Ubicación: Provincia de Almería
Contactar:

#8 Mensaje por untio » 16/02/2013 4:55 am

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.

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#9 Mensaje por leosan » 16/02/2013 5:06 am

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!. ... Imagen

kunicksmag
Mensajes: 4
Registrado: 15/08/2019 6:51 am

Es este método correcto para encontrar pi

#10 Mensaje por kunicksmag » 27/08/2019 1:41 am

mopa, guante de goma va genial para los sofás , rodillo quitapelusas... Miedo me da a mí este verano, que con los cambios bruscos de tiempo, mis peludos tienen una pelambrera....

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado