Simulación de un pulso viajando en una cuerda

Entre los cursos de este semestre, tuve el gusto de enseñar el de análisis numérico. Identificado formalmente con el nombre críptico de matemática aplicada 4 o matemática 10, los temas que se tratan van desde diferenciación e integración, pasando por métodos de solución para ecuaciones diferenciales ordinarias hasta ecuaciones diferenciales parciales. La esencia del curso radica en que los problemas no se resuelven a papel y lápiz, sino que se utilizan algoritmos numéricos en una computadora.

Ecuación de onda

Un ejemplo clásico de estos métodos es la solución de la ecuación de onda en una dimensión (de la cuál ya habíamos hablado en un post anterior).

\displaystyle \frac{\partial^2 u}{\partial x^2}=\frac{1}{v^2} \frac{\partial^2 u}{\partial t^2}

Una de las aplicaciones es el movimiento ondulatorio en una cuerda. Si imaginamos una cuerda horizontal, tensada y fija en sus extremos, la cantidad u representa el desplazamiento vertical de la cuerda cuando una perturbación viaja a lo largo de su longitud.

Una de mas formas más sencillas de resolver esta ecuación numéricamente, consiste en sustituir las derivadas por una aproximación, lo cual convierte la ecuación diferencial en una ecuación de diferencias, que podemos representar así

\displaystyle \frac{u_{i-1,j}-2u_{ij}+u_{i+1,j}}{\Delta x^2} = \frac{1}{v^2}\frac{u_{i,j-1}-2u_{ij}+u_{i,j+1}}{\Delta t^2},

de aquí podemos despejar la cantidad u_{i,j+1}, que es la solución que queremos. Lo que hemos hecho es modelar la cuerda como si fuera una sucesión de puntos separados una distancia que llamamos \Delta x. Mientras más pequeña sea la separación, más realista y exacta será nuestra aproximación. El intervalo de tiempo que llamanos \Delta t tiene una interpretación similar. El calcular la cantidad u_{i,j+1} es el equivalente en ecuaciones a tomarle una foto a la cuerda cuando la onda va pasando. Cada una de estas fotos se toma a intervalos de tiempo \Delta t. Al final lo que tenemos es una serie de cuadros que podemos pasar en secuencia para obtener una simulación del movimiento ondulatorio de la cuerda.

Para poder encontrar una solución a nuestra ecuación de onda necesitamos un poco más de información. Tenemos que especificar el comportamiento de los extremos de la cuerda. En este caso vamos a hacer que los extremos estén fijos durante todo el tiempo. La excepción va a ser el extremo derecho en donde levantamos y bajamos la cuerda momentáneamente para introducir un pulso que se propague hacia la izquierda. La otra pieza de información consiste en especificar cuál es la posición y velocidad de cada parte de la cuerda en el instante inicial. En este caso la cuerda está en reposo y toda la dinámica entra por el extremo derecho cuando le damos un jalón vertical a la cuerda.

Velocidad de propagación

Antes de encontrar la solución, hagamos las cosas más interesantes. La cantidad v que aparece en la ecuación es la velocidad con la que se mueve la onda a lo largo de la cuerda. Esa cantidad depende de la densidad y la tensión de la misma. Vamos a suponer que la cuerda tiene dos densidades diferentes. El lado rojo (ver la animación) tiene una densidad unitaria y la porción negra es 4 (panel del medio) y 16 (panel de abajo) veces más densa. Eso hace que la onda vaya a una velocidad que es 2 y 4 veces más lenta en la región negra, respectivamente.

En el panel superior de la animación se muestra una cuerda donde ambos lados, rojo y negro, tienen la misma densidad. En ese caso la onda atraviesa la cuerda de un lado a otro sin distorsionarse. En los otros dos casos, podemos ver claramente que cuando el pulso pasa de la región menos densa (roja) a la región más densa (negra), parte de la onda se transmite y parte se refleja. Es decir que hemos verificado con un experimento numérico una de las propiedades del movimiento ondulatorio que se aprenden en los cursos de física.

Visualización

La película de arriba fue hecha utilizando Gnuplot para generar cada cuadro y Shell Script para automatizar el proceso. Gnuplot lee un archivo de texto donde se encuentra el tiempo y la posición de cada punto de la cuerda. Esos datos fueron calculados utilizando un pequeño programa escrito en C, que automatiza el cálculo de la cantidad u_{i,j+1}. La película se genera a partir de la serire de cuadros utilizando el programa mencoder


mencoder "mf://*.png" -mf fps=30 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800

Más informacación de cómo generar animaciones aquí.

En resumen, de principio a fin todo el problema fue resuelto y analizado utilizando software libre y un poco de matemática. Las aplicaciones del análisis numérico se extienden por todos los campos de la ciencia y cobran cada vez más importancia en la medida que la capacidad de las computadoras aumenta.

Si alguien está interesado en jugar y divertirse un poco, con gusto les puedo compartir por email el programa en C que resuelve la ecuación de onda y el script que hace las gráficas. Los subiría aquí mismo al blog, pero «por razones de seguridad» el sitio no me deja.

Esta entrada fue publicada en Física, Matemática y etiquetada , , , . Guarda el enlace permanente.

9 respuestas a Simulación de un pulso viajando en una cuerda

  1. Andersson dijo:

    Hola, sé que a pasado mucho tiempo desde la publicación pero estaría muy agradecido si me envían el código porfavor.

  2. MIRIAM dijo:

    Hola, sé que ha pasado mucho tiempo desde que se realizó esta publicación, ojalá y sea posible enviarme el código. Muchas gracias por adelantado

  3. Joseinstein dijo:

    Hola, me sería de mucha ayuda si me puede enviar el código. De antemano muchas gracias 😉

  4. Francisco Ceballos dijo:

    Me gustaria tener el código, podrias enviarmelo
    de antemano
    Gracias

  5. Josue Ortega dijo:

    Creo que sería una buena idea subir el código a https://github.com/ o manejar una cuenta para compartir archivos en dropbox.com, así no te molestarían tanto pidiendo el código. Tambien me interesa el script, saludos

  6. ovidio dijo:

    Me interesa el código. Podrías mandarmelo.

  7. Hugo dijo:

    Que tal Enrique. Con gusto me gustaría jugar y divertirme con ese programa y el script. ¡Saludos!

Deja un comentario