Cómo hacer simulaciones de partículas en Matlab. II: Tiro parabólico (1 Part. – 2D)

< I: Introducción

 

El programa MatLab es una herramienta matemática muy versátil. Puede utilizarse entre otras muchas cosas, como veremos en esta continuación del tutorial, para hacer simulaciones de sistemas de partículas. Por supuesto deben haber otros programas dedicados especialmente a la animación, pero con un uso básico de Matlab ya pueden obtenerse resultados interesantes. Como advertí en la entrada anterior, doy por hecho un conocimiento básico del programa. De todas formas iré comentando las partes del código siempre que pueda.

La primera parte de este tutorial establece casi toda la teoría que hace falta para hacer simulaciones, pero aquello solo fueron física y matemáticas, sin nada de programación. Mi intención con esta entrada es poner en práctica toda aquella teoría en un primer programa muy sencillo, en el que simularemos un sistema de una sola partícula, y solo considerando dos dimensiones.

Como primer ejemplo he pensado en la caso más sencillo que se me ocurre (y en el que ocurra algo, claro) que es aquel en el que solo hay una fuerza y es constante, como por ejemplo la fuerza gravitatoria. En la entrada anterior vimos que en general la fuerza que actúa sobre una partícula podía depender de la posición de la partícula y de su velocidad. Lo primero lo podemos encontrar en un muelle, por ejemplo, y lo segundo si consideramos que hay rozamiento con un fluido, por poner otro ejemplo. Pero para este primer programa, la única fuerza sobre la partícula se debe a su propio peso:

F = m · g

 

Dicho esto, voy a explicar cada una de las partes del programa que adjunto justo aquí abajo.

 

clear
figure(1)

%variables
x=[];
v=[];
F=[];

%parametros
m=1;
g=[0;-9.81];
h=0.01;

%condiciones iniciales
x=[0;0];
v=[0.1;4];

%variable externa
F=m*g;

for step=1:100 
    
    plot(x(1),x(2),‘ob’);
   
    title([‘step : ‘ num2str(step)]);
    axis([-0.2 0.2 -1 1]);
    pause(0.01);

   %guardar valor anterior
    xa=x;
    va=v;
   
    %paso integración
    vpm = va + (h/2)*(F/m);
    xpm = xa + (h/2)*va;
   
    v = va + h*(F/m);
    x = xa + h*vpm;
       
end

 

clear: esta función la utilizo para borrar cualquier variable que exista. A veces no hacer esto da problemas si ya se ha ejecutado antes el programa, pero solo cuando no inicializamos bien nuestras variables. Lo ponemos por si acaso.

figure(1): Utilizo esta función para abrir una ventana, concretamente la 1, sobre la que vamos a dibujar la simulación. Si no se especifica, se dibujaría sobre la última ventana activa.

Parámetros: Es necesario dar valor a las constantes que vamos a utilizar. En nuestro ejemplo de caída libre, las constantes son la masa de la partícula (m), la aceleración de la gravedad (g), y el paso de integración (h). La gravedad es una aceleración, y por tanto un vector de dos componentes (en este caso), que es vertical, y que apunta hacia abajo. Para información sobre el significado del parámetro h, por favor consulta la entrada introductoria.

Variables: También hay que declarar las variables que vamos a usar. La variables, a diferencia de las constantes, son aquellos valores que pueden ir cambiando a lo largo de la simulación. Nuestras variables son tres: dos de estado (posición y velocidad) y una externa (fuerza). Al comienzo les damos valores vacíos, pero serán vectores de dos componentes. No confundir la variable x (posición) con la coordenada horizontal. La variable x representa un vector con las dos coordenadas: horizontal y vertical.

Condiciones iniciales: Antes de comenzar la simulación hay que establecer en qué estado comienza nuestro sistema de una sola partícula. Eso se conoce como condición inicial. En este punto se da el valor inicial a las variables de estado (posición y velocidad). Yo he elegido para el ejemplo que la posición inicial sea el origen [0;0] y que tenga un poco de velocidad horizontal y mucha vertical [0.1;4], para ver un bonito tiro parabólico. Por supuesto estos valores pueden ser los que uno quiera. Invito al lector a jugar con estos valores para ver los diferentes movimientos posibles en un tiro parabólico.

Variable externa: Una de nuestras variables, la fuerza, no es estrictamente una variable de estado, por eso no la he incluido en el apartado anterior de condiciones iniciales. Pero por supuesto, también es necesario darle valor. En general, la Fuerza representa la suma de todas las fuerzas que actúan sobre la partícula, y es una función de la velocidad y de la posición. Pero en nuestro caso sencillo solo está determinada por el peso, que depende de dos constantes, la masa y la gravedad. Por tanto la fuerza es constante en toda la simulación en este ejemplo.

for … end: La última parte del programa es la principal: la iteración. Aquí dentro es donde dibujaremos la partícula en la posición que determine su variable x. En cada paso (step), esta posición cambiará, según el método de integración que empleemos, en particular en método del punto medio que ya expliqué en la entrada anterior. Se pueden hacer tantos pasos de integración como queramos. Cuantos más hagamos, más durará la simulación. En el ejemplo damos 100 pasos.

plot(): Dibuja la posición actual. La simulación del movimiento de la partícula se consigue porque se redibuja continuamente la partícula, eliminando cada vez el gráfico de la posición anterior y dibujando el de la posición siguiente. Es como si pusiéramos los fotogramas de una película uno detrás de otro. La función ‘plot’ puede dibujar gráficas si se le da vectores, o puntos si se le da las coordenadas, como en nuestro ejemplo. Yo he escogido dibujar el punto como una redonda azul (‘ob’), pero pueden escogerse otros símbolos y colores. Consulta la ayuda del programa los códigos para las otras posibilidades.

Edición: Una vez dibujada la figura, hay que especificar las propiedades. Hay que hacerlo cada vez dentro del for, porque cada plot es una figura nueva. En mi ejemplo pongo un titulo al gráfico con el paso actual, y también elijo las dimensiones del gráfico. En el ejemplo el gráfico va de –0.2 a 0.2 en horizontal, y de –1 a 1 en vertical.

pause(): Esta función es importante. Como el ordenador ejecuta el programa muy deprisa, no es posible ver las gráficas si no pausamos el programa durante un tiempo en cada iteración. El valor puede escogerse según la velocidad de nuestro ordenador y lo rápido que queramos ver la simulación. En el ejemplo hago una pausa de 0.01 segundos.

Guardar valores anteriores: Cuando hemos terminado con la representación gráfica del punto actual, ya estamos listos para calcular cuál será el siguiente estado de la partícula. Pero antes de calcularlo debemos guardar los valores que acabamos de dibujar, que partir de ahora serán los “anteriores”.

Paso de integración: Ahora que tenemos el estado anterior guardado (xa, va). Podemos calcular el estado siguiente siguiendo el método del punto medio. Primero se calcula la velocidad y posición en el punto medio predicho por el método de Euler explícito, y después, con esos valores de posición y velocidad calculados (xpm vpm), calculamos la nueva posición y velocidad (x, v). En el siguiente paso será esta la posición que dibuje el plot. En este ejemplo la fuerza es constante, pero si no lo fuese, había que actualizar su valor cada vez que sea necesario (cada vez que cambie la variable de la que dependa).

Esta es una versión muy sencilla de una simulación de caída libre o tiro parabólico. El resultado del programa anterior es el que se ve aquí abajo:

 

Tutorial_01

Hacer clic en la imagen si no se ve en movimiento

Resumiendo, lo que hemos visto en esta segunda parte es como puede escribirse el código en Matlab para una simulación de una sola partícula, eligiendo unas condiciones iniciales, y solamente con la fuerza (constante) de la gravedad, todo esto considerando dos coordenadas (2D).

En los siguientes tutoriales veremos cómo afecta el hecho de que la fuerza sobre la partícula no sea una constante.

 

III. Órbita gravitacional >


Esta entrada pertenece a la colección Animación con MatLab

6 comentarios

  1. Información Bitacoras.com

    Valora en Bitacoras.com: < I: Introducción   El programa MatLab es una herramienta matemática muy versátil. Puede utilizarse entre otras muchas cosas, como veremos en esta continuación del tutorial, para hacer simulaciones de sistemas de partícula..…

  2. […] Colección: Tutorial de Simulación de partículas en MatLab (Parte I, Parte II, Parte III) Debido casi a la petición popular, este año comencé una serie de entradas que […]

  3. […] visto simulaciones de una sola partícula, a las que se les aplicaba una fuerza que era constante (tiro parabólico) o que dependía de la posición de la partícula (órbita). En esta ocasión vamos a ver un caso […]

¿Qué te parece?

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: