5
Cómo hacer simulaciones de partículas en Matlab. II: Tiro parabólico (1 Part. – 2D) SEP 7 Publicado por Pareidolico < 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

Cómo hacer simulaciones de partículas en Matlab.docx

Embed Size (px)

Citation preview

Cmo hacer simulaciones de partculas en Matlab. II: Tiro parablico (1 Part. 2D)SEP 7Publicado porPareidolico< I: IntroduccinEl 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 laentrada 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 simularemosun 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 = m gDicho esto, voy a explicar cada una de las partes del programa que adjunto justo aqu abajo.clearfigure(1)%variablesx=[];v=[];F=[];%parametrosm=1;g=[0;-9.81];h=0.01;%condiciones inicialesx=[0;0];v=[0.1;4];%variable externaF=m*g;forstep=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;endclear: 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 laentrada 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 (posicinyvelocidad) 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 laentrada 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 programalos cdigos para las otras posibilidades.Edicin:Una vez dibujada la figura, hay que especificar las propiedades. Hay que hacerlo cada vez dentro delfor, porque cadaplotes 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 elplot. 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 movimientoResumiendo, 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.