GeoGebra 5, Python y Monte Carlo

La gran novedad de GeoGebra 5 es la posibilidad de usar un modo 3d, pero no dejéis que os ciegue esa importante mejora, porque hay otras. En la versión 5 del programa encontramos una nueva funcionalidad que va a permitir a GeoGebra convertirse en una herramienta de una potencia prácticamente ilimitada. Se trata de la integración con Python.

Python en GeoGebra 5

Lo primero: decir que GeoGebra 5 incluirá Python no es del todo cierto, ya que lo que va a incluir es una versión de Jython

 import sys
 sys.version
 '2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06) \n[Java HotSpot(TM) Client VM (Apple Inc.)]'
 sys.subversion
 ('Jython', 'tags/Release_2_5_2', '7206')
 

Así que por un lado tenemos que se trata de la versión 2.5.2 (no tendrás que poner el print con paréntesis) y por otro lado se trata de Jython. En principio el funcionamiento debe ser análogo al python 2.5.2, pero no soy un experto como para poder asegurarlo. Por otro lado, el uso de Jython nos da una ventaja interesante: podemos usar las librerías Java instaladas en nuestro equipo.

Dónde puedo usar Python

Existen tres sitios principales en los que podremos usar código Python en nuestros proyectos Geogebra:

  • Interfaz interactiva: una interfaz inmediata en la que podemos introducir directamente nuestros comandos Python y ver cómo se ejecutan instantáneamente
  • Script: en la pestaña script tendremos el código global que queremos que quede disponible para la interfaz interactiva y los eventos
  • Eventos: en versiones anteriores de GeoGebra ya teníamos la opción de realizar acciones cuando se producían eventos en nuestros objetos, en esta versión se amplía esa opción pudiendo elegir Python como lenguaje para definir el evento

Cómo interacciona Python con GeoGebra

Todavía hay muy poca documentación sobre la interacción entre Python y Geogebra, pero existe una pequeña wiki en la que podemos ver las primeras opciones:

Wiki de Jython en GeoGebra

Manos a la obra: el método Monte Carlo

Mi primera prueba más o menos seria con Geogebra y Python ha sido desarrollar el método Monte Carlo para el cálculo de π, de forma que pude obtener una bonita animación para la entrada de los métodos Monte Carlo en el zombi de Schrödinger.

Tras muchas peleas con el interfaz, con los típicos fallos de beta (que referiré más adelante) y con el propio GeoGebra del que tengo un conocimiento realmente limitado y un poco chapucero :P, llegué a la siguiente solución:

  1. Lo ponemos bonito, para ello:
    1. Dibujamos un arco de circunferencia con centro en (0,0) y puntos que delimitan el arco (1,0) y (1,1)
    2. Dibujamos un cuadrado que cubre este arco de circunferencia entre (0,0) y (1,1)
    3. A continuación incluimos tres textos que servirán para mostrar el número de puntos totales, el número de puntos dentro del sector circular y el valor actual de PI

      Todo bonito y preparado para calcular PI

  2. Preparamos nuestras variables
    1. GeoGebra me dio problemas con las variables globales, así que usé unos deslizadores para almacenar los números que necesitaba, que se denominan suma, hits y res y corresponden al total de puntos, a los aciertos dentro del sector y al valor de π respectivamente.
    2. También creé un deslizador con el original nombre paso que servirá para agrupar las creaciones de puntos. Cada vez que este deslizador se actualiza se invoca a una función que crea un determinado número de puntos para realizar el cálculo de π. El número de puntos creado en cada interación queda fijado por tamPaso.

      Elementos creados en GeoGebra para dar soporte al método

  3. El código Python
    1. Por un lado, se crea un evento para el deslizador paso, que invocará a la función calc_PI2(n) donde n es el número de puntos a generar en el paso.
    2. Por otro lado, se crea una función calc_PI2(n) en la parte de script de Python: Ver el script.

Y esto es todo, ya solo nos queda marcar el deslizador paso para que se mueva automáticamente o decirle a GeoGebra que exporte nuestro proyecto a un bonito gif animado a partir de la iteración de paso. Esta fue la forma como conseguí el gif animado que podéis ver en la entrada de los métodos Monte Carlo:

No puedo mostraros un bonito applet con la aplicación, como sería habitual. Para una explicación os remito a la alegre y dicharachera sección Peleando con la beta (y perdiendo la batalla). Al final de la entrada podéis ver el enlace al fichero GeoGebra para que podáis descargarlo, juguetear lo que queráis con él y dejarme en evidencia por alguna chapucilla que encontréis :P.

Peleando con la beta

Trabajar con una versión beta de software tiene sus pros y sus contras, los pros se centran en que tienes un juguete nuevo para hacer maldades y divertirte, los contras son que cuando las cosas no funcionan como desearías no sabes si es por culpa de la beta o por propia ineptitud.

La mayoría de las veces fue mi ineptitud la que provocó los fallos, como siempre, pero también descubrí varios problemas con la beta:

  • La pestaña script necesita un botón OK o algo parecido, ya que no hay forma de indicarle a GeoGebra que has realizado cambios; tristemente la solución pasa por cerrar el fichero y volver a abrirlo….. así que si vas a hacer pruebas con la beta primero prueba tu código Python fuera de GeoGebra y cuando estés seguro de que funciona bien por su cuenta, pruébalo en el entorno beta de GeoGebra.
  • El applet no va. Toda la parte de código Python es como si no existiera cuando generas el applet. Esta parte tampoco es que esté seguro de que se vaya a solucionar en un futuro inmediato, aunque hay lugares donde se puede ver funcionar jython en un Applet.
  • Ctrl – C. Sí, ya… Cuando por ineptitud introduces un comando que no le gusta demasiado al intérprete de Jython, te aparece un amable mensaje que te indica que pulses Ctrl-C para cortar el proceso. Yo lo he intentado en linux, mac y windows y nunca me ha funcionado. La solución final vuelve a ser cerrar el fichero y volver a abrirlo, se nota que soy informático de profesión…
  • La wiki es escasa. Aunque incluye algunos ejemplos importantes, he tenido que tirar de imaginación para descubrir posibles parámetros de los distintos objetos GeoGebra y en alguna ocasión bordear el problema. Pero esto me pasa por ser ansias y trabajar con betas.

Algunas consideraciones finales

La aproximación usada es tremendamente ineficiente, si se quiere realizar el mismo cálculo de una forma más eficiente bastaría con quedarse solo con el código Python, pudiendo realizar un gran número de iteraciones en breves espacios de tiempo. En cualquier caso, este ejemplo sirve para comprobar las posibilidades que nos da la integración de GeoGebra con una lenguaje tan versátil como Python.

Ficheros, fuentes y enlaces de interés

Descargar fichero de proyecto de la simulación Monte Carlo para GeoGebra 5

Script Python usado

Descarga la beta de GeoGebra 5

Página oficial de GeoGebra

Anuncios

Publicado el noviembre 17, 2012 en Geogebra, Python y etiquetado en , , , , . Guarda el enlace permanente. 8 comentarios.

  1. Hola. En principio, jython 2.5.2 es idéntico a python 2.5.2 en cuanto a lenguaje. Las diferencias las encontrarás en que faltan algunos módulos compilados como sqlite3 y algunas mínimas diferencias a la hora de importar paquetes y subpaquetes que pretenden aproximar la instrospección de paquetes java a lo que estamos acostumbrados en python.

    En cuanto a los applets, para que funcionen requiere “traducir” el código jython a bytecode java para eliminar la necesidad del intérprete jython. Ésto se hacía a través del compilador “jythonc”, pero dejó de implementarse en versiones de jython superiores a las 2.2 debido a lo complicado que iba siendo incorporar todas las nuevas mejoras del lenguaje python en las versiones más recientes. Tal vez lo vuelvan a incorporar, pero hoy en día los applets de java están en desuso. Es mucho mejor un gráfico svg y alguna librería javascript que le de interactividad. En este punto, creo que estaban colaborando GeoGebra con JSXGgraph para mejorar el soporte de SVG interactivos. Tal vez la nueva versión ya lo lleve incorporado (ya nos contarás :-D)

  1. Pingback: Monte Carlo « El zombi de Schrödinger

  2. Pingback: Bitacoras.com

  3. Pingback: Viaje locuelo a otras dimensiones con Monte Carlo « El escriba matemático

  4. Pingback: Salinas, ¡la vida puede ser maravillosa! « El zombi de Schrödinger

  5. Pingback: GeoPy: Estudi de les posicions relatives de rectes en el pla | EduLogiX

  6. Pingback: Viaje locuelo a otras dimensiones con Monte Carlo | El zombi de Schrödinger

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

A %d blogueros les gusta esto: