You are on page 1of 5

Cmo hacer simulaciones de partculas

en Matlab. II: Tiro parablico (1 Part.


2D)
SEP 7
Publicado por Pareidolico

< I: Introduccin

El programa MatLab es una herramienta matemtica muy verstil. Puede utilizarse entre
otras muchas cosas, como veremos en esta continuacin del tutorial, para hacer
simulaciones de sistemas de partculas. Por supuesto deben haber otros programas dedicados
especialmente a la animacin, pero con un uso bsico de Matlab ya pueden obtenerse
resultados interesantes. Como advert en la entrada anterior, doy por hecho un
conocimiento bsico del programa. De todas formas ir comentando las partes del cdigo
siempre que pueda.
La primera parte de este tutorial establece casi toda la teora que hace falta para hacer
simulaciones, pero aquello solo fueron fsica y matemticas, sin nada de programacin. Mi
intencin con esta entrada es poner en prctica toda aquella teora en un primer programa
muy sencillo, en el que simularemos un sistema de una sola partcula, y solo considerando
dos dimensiones.
Como primer ejemplo he pensado en la caso ms 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
acta sobre una partcula poda depender de la posicin de la partcula 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 partcula se debe a su propio peso:
F=mg

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 integracin
vpm = va + (h/2)*(F/m);
xpm = xa + (h/2)*va;
v = va + h*(F/m);
x = xa + h*vpm;
end

clear: esta funcin 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 funcin para abrir una ventana, concretamente la 1, sobre la que
vamos a dibujar la simulacin. Si no se especifica, se dibujara sobre la ltima ventana
activa.
Parmetros: Es necesario dar valor a las constantes que vamos a utilizar. En nuestro
ejemplo de cada libre, las constantes son la masa de la partcula (m), la aceleracin de la
gravedad (g), y el paso de integracin (h). La gravedad es una aceleracin, y por tanto un
vector de dos componentes (en este caso), que es vertical, y que apunta hacia abajo. Para
informacin sobre el significado del parmetro h, por favor consulta la entrada
introductoria.
Variables: Tambin 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
simulacin. Nuestras variables son tres: dos de estado (posicin y velocidad) y una externa
(fuerza). Al comienzo les damos valores vacos, pero sern vectores de dos componentes. No
confundir la variable x (posicin) con la coordenada horizontal. La variable x representa un
vector con las dos coordenadas: horizontal y vertical.
Condiciones iniciales: Antes de comenzar la simulacin hay que establecer en qu estado
comienza nuestro sistema de una sola partcula. Eso se conoce como condicin inicial. En
este punto se da el valor inicial a las variables de estado (posicin y velocidad). Yo he
elegido para el ejemplo que la posicin 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 parablico. 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 parablico.
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, tambin es necesario darle valor. En general, la Fuerza representa la suma de
todas las fuerzas que actan sobre la partcula, y es una funcin de la velocidad y de la
posicin. 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 simulacin
en este ejemplo.
for end: La ltima parte del programa es la principal: la iteracin. Aqu dentro es donde
dibujaremos la partcula en la posicin que determine su variable x. En cada paso (step),
esta posicin cambiar, segn el mtodo de integracin que empleemos, en particular en
mtodo del punto medio que ya expliqu en la entrada anterior. Se pueden hacer tantos
pasos de integracin como queramos. Cuantos ms hagamos, ms durar la simulacin. En el
ejemplo damos 100 pasos.
plot(): Dibuja la posicin actual. La simulacin del movimiento de la partcula se consigue
porque se redibuja continuamente la partcula, eliminando cada vez el grfico de la posicin
anterior y dibujando el de la posicin siguiente. Es como si pusiramos los fotogramas de una
pelcula uno detrs de otro. La funcin plot puede dibujar grficas 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 smbolos y colores. Consulta
laayuda del programa los cdigos para las otras posibilidades.
Edicin: 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 grfico con el paso actual, y tambin elijo las dimensiones del grfico. En el
ejemplo el grfico va de 0.2 a 0.2 en horizontal, y de 1 a 1 en vertical.
pause(): Esta funcin es importante. Como el ordenador ejecuta el programa muy deprisa,
no es posible ver las grficas si no pausamos el programa durante un tiempo en cada
iteracin. El valor puede escogerse segn la velocidad de nuestro ordenador y lo rpido que
queramos ver la simulacin. En el ejemplo hago una pausa de 0.01 segundos.
Guardar valores anteriores: Cuando hemos terminado con la representacin grfica del
punto actual, ya estamos listos para calcular cul ser el siguiente estado de la partcula.
Pero antes de calcularlo debemos guardar los valores que acabamos de dibujar, que partir de
ahora sern los anteriores.
Paso de integracin: Ahora que tenemos el estado anterior guardado (xa, va). Podemos
calcular el estado siguiente siguiendo el mtodo del punto medio. Primero se calcula la
velocidad y posicin en el punto medio predicho por el mtodo de Euler explcito, y despus,
con esos valores de posicin y velocidad calculados (xpm vpm), calculamos la nueva posicin
y velocidad (x, v). En el siguiente paso ser esta la posicin que dibuje el plot. En este
ejemplo la fuerza es constante, pero si no lo fuese, haba que actualizar su valor cada vez
que sea necesario (cada vez que cambie la variable de la que dependa).
Esta es una versin muy sencilla de una simulacin de cada libre o tiro parablico. El
resultado del programa anterior es el que se ve aqu abajo:

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 cdigo en
Matlab para una simulacin de una sola partcula, eligiendo unas condiciones iniciales, y
solamente con la fuerza (constante) de la gravedad, todo esto considerando dos coordenadas
(2D).
En los siguientes tutoriales veremos cmo afecta el hecho de que la fuerza sobre la partcula
no sea una constante.

You might also like