Saltar al contenido principal
LibreTexts Español

10.2: Simulación interactiva con PyCx

  • Page ID
    115908
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Podemos construir un modelo de simulación dinámica interactiva en Python con relativa facilidad, utilizando el archivo “pycxsimulator.py” de PyCx, que está disponible en http://sourceforge.net/projects/ pycx/files/ (también está directamente vinculado desde el nombre del archivo anterior si estás leyendo esto electrónicamente). Este archivo implementa una interfaz gráfica de usuario (GUI) interactiva simple para su propio modelo de simulación dinámica, que todavía está estructurado en los tres componentes esenciales: inicialización, observación y actualización, tal como hicimos en los capítulos anteriores.

    Para usar pycxsimulator.py, es necesario colocar ese archivo en el directorio donde se encuentra su código de simulación. Su código de simulación debe estar estructurado de la siguiente manera:

    código 10.1.png

    código 10.1 pt2.png

    código 101 pt 3.png

    Las tres primeras líneas y las dos últimas líneas deben estar siempre en su lugar; no se necesita ninguna modificación.

    Trabajemos en algún ejemplo sencillo para aprender a usar pycxsimulator.py. Aquí construimos un modelo de un montón de partículas que se mueven aleatoriamente en un espacio bidimensionales. Pasaremos paso a paso por el proceso de implementación de este modelo de simulación.

    Primero, necesitamos importar los módulos necesarios y definir los parámetros. En este ejemplo particular, un generador de números aleatorios gaussianos es útil para simular el movimiento aleatorio de las partículas. Está disponible en el módulo aleatorio de Python. Existen diversos parámetros que son concebibles para este ejemplo. Como ejemplo, consideremos el número de partículas y la desviación estándar del ruido gaussiano utilizado para el movimiento aleatorio de las partículas, como parámetros del modelo. Los escribimos al principio del código de la siguiente manera:

    código 10,2.png

    código 10.2 pt.png

    A continuación se encuentra la función de inicialización. En este modelo, las variables necesarias para describir el estado del sistema son las posiciones de las partículas. Podemos almacenar sus\(y-\) coordenadas\(x-\) y en dos listas separadas, de la siguiente manera:
    código 10.3.png

    Aquí generamos n partículas cuyas posiciones iniciales se muestrean a partir de una distribución gaussiana con media 0 y desviación estándar 1.

    Después la visualización. Esto es bastante fácil. Podemos simplemente trazar las posiciones de las partículas como un diagrama de dispersión. Aquí hay un ejemplo:

    código 10.4.png
    La última opción, '.', en la función plot especifica que dibuja una gráfica de dispersión en lugar de una curva. Finalmente, necesitamos implementar la función de actualización que simule el movimiento aleatorio de las partículas. No hay interacción entre las partículas en este modelo de simulación en particular, por lo que podemos actualizar directamente xlist e ylist sin usar cosas como nextxlist o nextylist:

    código 10.5.png

    código 10.5 pt2.png

    Aquí, se agrega un pequeño ruido gaussiano con media 0 y desviación estándar sd a las\(y-\) coordenadas\(x-\) y de cada partícula en cada paso de tiempo. Combinando estos componentes, el código completado se ve así:
    código 10.6.png

    código 10.6pt2.png

    código 10.6 pt 2.png

    Ejecuta este código, y encontrarás dos ventanas apareciendo (Fig. 10.1.1; pueden aparecer superpuestas o pueden estar ocultas debajo de otras ventanas de tu escritorio) 12.

    Fig. 10.1.PNG
    Figura\(\PageIndex{1}\): Interfaz gráfica de usuario (GUI) generada por pycxsimulator.py. Izquierda: Ventana de visualización. Derecha: Ventana de control.

    Esta interfaz es muy minimalista en comparación con otras herramientas de software, pero aún puedes hacer operaciones interactivas básicas. Bajo la pestaña “Ejecutar” de la ventana de control (que aparece por defecto), hay tres botones autoexplicativos para ejecutar/pausar la simulación, actualizar el sistema solo por un paso y restablecer el estado del sistema. Al ejecutar la simulación, el estado del sistema se actualizará de forma dinámica y continua en la otra ventana de visualización. Para cerrar el simulador, cierre la ventana de control.

    Bajo la pestaña “Configuración” de la ventana de control, puede cambiar cuántas veces se actualiza el sistema antes de cada visualización (default = 1) y la duración del tiempo de espera entre las visualizaciones (default = 0 ms). Las otras dos pestañas (“Parámetros” e “Información”) están inicialmente en blanco. Puede incluir información que se mostrará bajo la pestaña “Info” como una “docstring” (cadena colocada como primera declaración) en la función de inicialización. Por ejemplo:
    código 10.7.png

    Esta cadena de documentos adicional aparece bajo la pestaña “Info” como se muestra en la Fig. 10.1.2.

    Fig. 10.2.PNG
    Figura\(\PageIndex{2}\): Información sobre la simulación agregada como “docstring” en la función de inicialización.
    Ejercicio\(\PageIndex{1}\)

    La animación generada por Code 10.6 reajusta frecuentemente el rango de la trama para que el resultado sea bastante difícil de ver. Además, la relación de aspecto de la gráfica no es 1, lo que dificulta ver la forma real de la distribución de las partículas. Busque en la documentación en línea de matplotlib (http://matplotlib.org/) para averiguar cómo solucionar estos problemas.

    1 Si está utilizando Anaconda Spyder, asegúrese de ejecutar el código en una consola simple de Python (no en una consola IPython). Puede abrir una consola simple de Python desde el menú “Consolas”.

    2 Si estás usando Enthought Canopy y no puedes ejecutar la simulación, prueba lo siguiente:

    1. Ir a la pestaña “Editar” → “Preferencias” → “Python” en Enthought Canopy.

    2. Desmarque la casilla de verificación “Usar PyLab” y haga clic en “Aceptar”.

    3. Elija “Ejecutar” → “Reiniciar kernel”.

    4. Ejecuta tu código.

    Si aún no funciona, vuelva a marcar la casilla de verificación “Usar PyLab” e inténtelo de nuevo.


    This page titled 10.2: Simulación interactiva con PyCx is shared under a CC BY-NC-SA 3.0 license and was authored, remixed, and/or curated by Hiroki Sayama (OpenSUNY) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.