Calculando π con Python

¿Cuántos decimales creéis que se podrían calcular en 1 segundo? ¿Y en 0,024 s? Por supuesto esto depende de la potencia de vuestro ordenador. Si queréis comprarlo aquí os dejo un programa en Python que permite calcular los decimales de π que queramos.
#!/usr/bin/env python
# -⁻- coding: UTF-8 -*-
print "   πππππππππππ"
print "   π π     π"
print "     π     π"
print "     π     π"
print "  Pi Calcutator"
print

def arccot(x, unity):
    sum = xpower = unity // x
    n = 3
    sign = -1
    while 1:
        xpower = xpower // (x*x)
        term = xpower // n
        if not term:
            break
        sum += sign * term
        sign = -sign
        n += 2
    return sum

def pi(digits):
    unity = 10**(digits + 10)
    pi = 4 * (4*arccot(5, unity) - arccot(239, unity))
    return pi // 10**10

# En este caso se calculan los 1000 primeros decimales de π. Modifica este valor para calcular los que quieras.

print pi(1000)

# Comento esto por lo que dijo Adri. Siempre podéis modificarlo a vuestro gusto.
#decimales=int(raw_input("Inserte el número de decimales que desea calcular: "))
#print pi(decimales)

Si además queremos saber el tiempo ejecutamos el programa con el comando time delante. Por ejemplo, de esta forma:

time ./pi.py

 

Calculando π

 

Y a vosotros, ¿cuánto os tarda en calcular 1000 decimales?
Anuncios

11 Responses to “Calculando π con Python”


  1. 1 Adri octubre 16, 2010 en 6:32 pm

    El código no se muestra tabulado, por lo que al copiar estará mal. En la línea 8, después de print aparece &nbsp. Y no se puede calcular el tiempo que tarda porque hay un raw_input(), y lo que tardes en escribir 1000 se sumará al total de lo que tarda en calcularlo. Un “apaño” sería comentar las dos penúltimas líneas y llamar a la función poniendo 1000, y ejecutándolo con time. Por cierto, calculando 1000 decimales en Ubuntu 10.04.1 (32 bits):


    real 0m0.031s
    user 0m0.024s
    sys 0m0.004s

    Y un último apunte: raw_input() permite como parámetro una cadena que se mostrará en la consola (Ver doc), por ejemplo:

    raw_input("Inserte el número de decimales que desea calcular: ")

    De esta forma, te ahorras un print, y encima, el número a insertar aparece en la misma línea, no en la línea siguiente (es decir, no se inserta un salto de línea, como sí lo hace print).

    Y para finalizar, me resulta muy inquietante este código, pues ayer en clase había un ejercicio para calcular 5 decimales del número PI usando la fórmula de Leibniz, no esta, que es mucho más precisa. ¿No vendrás a mi clase y no me he enterado?, jaja.

    Saludos!

    • 2 iyanmv octubre 16, 2010 en 9:20 pm

      jajajaja! Pues no… xD Estoy en 1ºBACH aún. Ya corregí los fallos que mencionaste.

      Un saludo!

    • 3 iyanmv octubre 16, 2010 en 9:29 pm

      Por cierto, para calcular el tiempo ya había quitado el raw_input. En las capturas, por ejemplo, lo hizo modificando el def.

  2. 4 blimblim octubre 17, 2010 en 1:43 am

    Vuestros ordenadores se mean enteros en el mío:

    real 0m1.038s
    user 0m0.082s
    sys 0m0.064s

    😦

  3. 5 blimblim octubre 17, 2010 en 1:56 am

    Bueno, como excusa he de decir que tenía el firefox abierto y que estaba grabando un DVD. Este es el tiempo a toda potencia:

    real 0m0.151s
    user 0m0.082s
    sys 0m0.021s

    Lo cual quiere decir que se siguen meando en el mío pero un poco menos 😛

  4. 6 Macbeth octubre 20, 2010 en 12:23 am

    Si le hubieses pasado el script a Maximilian Cohen este no hubiera puesto en alerta a los ejecutivos de Wall Street y los cabalistas lectores de la Torá en el film de Aronofsky.

  5. 7 seguame octubre 23, 2010 en 2:16 am

    Iyan una duda, desde que actualicé a python 3 en arch este mismo se la pasa mandándome errores de sintaxis en todos los “print”

    ¿alguna idea de el por que o como solucionarlo?

    un ejemplo con este programa

    time ./pi.py
    File “./pi.py”, line 26
    print pi(1000)
    ^
    SyntaxError: invalid syntax

    • 8 iyanmv octubre 23, 2010 en 3:05 pm

      Pues porque en Python 3 la función print se sutituyó por print(). Es decir que lo que antes era:

      print "Hola Mundo"
      

      Ahora es:

      print ("Hola Mundo")
      

      Échale un vistazo a esta página:
      http://docs.python.org/release/3.0.1/whatsnew/3.0.html

      Un saludo!

      • 9 seguame octubre 24, 2010 en 2:58 am

        Tan simple yo xD

        muchas gracias =D


  1. 1 Bitacoras.com Trackback en octubre 16, 2010 en 5:42 pm
  2. 2 print en Python 3 es print() « El blog de Iyan Trackback en octubre 23, 2010 en 3:36 pm

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




Fedora 14

Visitas al blog

  • 701,570 visitas

Bienvenido!!

Estimado lector, en primer lugar, gracias por seguir mi blog y ayudar a mejorarlo. En esta bitácora encontrarás noticias, tutoriales y muchas cosas más sobre GNU/Linux y el Software Libre, sobre todo de dos distribuciones, Fedora y Arch Linux. No dudes en preguntar tus dudas, comentar las entradas o proponerme ideas para el blog. Más información en Acerca de
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.

Introduce tu correo para suscribirte a este blog y recibir las entradas en tu correo.

Únete a otros 72 seguidores

Comentarios recientes

Marcos en Post-Instalación de Arch …
Dasn en NTP en ArchLinux
Maria en Borrón y cuenta nueva
iyan gonzalez en Borrón y cuenta nueva
Spanish Red en Fedora o Archlinux

Guia de Usuario Fedora 14

Post-instalación de Arch Linux

Categorías

Fedora Blogger Network


A %d blogueros les gusta esto: