jueves, diciembre 28, 2006

Animaciones con Matlab/GNU-Octave





Esto puede resultar de ayuda cuando se quiere calcular la dinámica de un sistema mecánico, es decir su posición en función del tiempo, su velocidad o su aceleración para el cálculo de las fuerzas de trepidación. Además de el cálculo, uno puede "ver" estas magnitudes, en un animación.

Este es el ejemplo clásico del cálculo de un mecanismo de cuatro barras. Se llama de cuatro barras, pero sólo tres de ellas se mueven

Animación en Matlab o GNU/Octave


Simplemente es ir calculando para cada instante la posición de nuestro "sistema", las guardamos en matrices o vectores, y después graficamos para cada instante. Luego si se desea se puede guardar en un gif y se ve como el pistón de arriba ( para ver más Aquí para hacer un gif con matlab


Conocer la posición de un sistema Pistón Biela Manivela



Se plantea la posición del sistema en un instante cualquiera para establecer las ecuaciones que permitan calcularla.

Geometría



La geometría conocida del sistema es:

  • x posición del pistón respecto del eje de giro de la manivela

  • lb Longitud de la biela

  • lm Longitud de la manivela

  • t1 Ángulo entre la línea de recorrido del pistón y la manivela

  • t2 Ángulo entre la línea de recorrido del pistón y la biela



Las ecuaciones se determinan sumando en cada componente los desplazamientos a partir de un punto y llegando al mismo punto. En este caso, partiendo del punto de rotación de la manivela, los desplazamientos serían:

Desplazamientos


Es sistema de ecuaciones queda:

Ecuación de desplazamiento en X
Ecuación de desplazamiento en Y

Conocida la geometría, el largo de la biela y la manivela, y dado el ángulo de la línea de recorrido del pistón y la manivela, el sistema de ecuaciones que queda, tiene como incógnita la posición del pistón y el ángulo.


Se puede resolver despejando en la primera ecuación el valor de t2 y luego reemplazar en la segunda ecuación para encontrar x. Pero para generalizar el método, es conveniente resolver de otra forma el sistema para casos en que hay dos incógnitas, ambas en las dos ecuaciones y como argumento de una función trigonométrica, como en el caso del mecanismo de cuatro barras.



Resolución del sistema de ecuaciones



Para ello se define una función F de dimensión 2, que tiene componentes los miembros del sistema de ecuaciones distintos de cero:
Función para resolver el sistema de Ecuaciones

La función se iguala a cero por el segundo miembro del sistema de ecuaciones.
Para encontrar las incógnitas se utiliza la aproximación de la función por los dos primeros términos de la serie de Taylor.

Serie de Taylor

Lo que desarrollado es:
Desarrollo de serie de Taylor


Se impone que el valor de la aproximación de la serie de Taylor sea cero, coincidente con el de la función, entonces queda:
Desarrollo de la serie

Escrito de otra manera:
Ecuación para conocer incógnito

Por lo que basta con invertir la matriz para conocer el valor de las incógnitas de la aproximación de la función por la serie de Taylor. Dichos valores son una aproximación a los valores que reemplazados en el sistema lo satisfacen. Por lo que se programa una iteración, de manera de partir con ciertos valores iniciales, evaluar la función, calcular las derivadas parciales, invertir la matriz, obtener valores nuevos, sumarlos a los antiguos, evaluar la función para que sea menor a un error pequeño predefinido y si es así estos valores son considerados los que satisfacen el sistema. Si no es así, se vuelve a iterar. Lo que aparece resumido en el diagrama de flujo.


Ecuación para conocer incógnito

La función de cálculo


Es diagrama de flujo anterior implementado en código GNU-Octave/Matlab se muestra a continuación. Nótese que como valores de entrada están el ángulo de la manivela, para el cual el sistema tiene una única posición y además se incluyen los valores de x y t2 iniciales, los que deben ser tentativos.
La función entrega como parametro de salidas las incógnitas x y t2 y ademas de esos dos vectores, xx e yy, en los que se guardan la posición de los puntos para cada instante en los ejes x e y.




La animación


Para animar el sistema debemos tener calculada la posición del sistema dados varios instantes, o mejor dicho, para varios ángulos de la manivela. Así, si se supone una velocidad angular constante en la manivela, puede calcularse para ángulos t1 conocidos, a un paso conocido,y luego graficar cada resultado del sistema para cada valor de angulo t1.

Las instrucciones anteriores se indican en el siguiente código:



Lo anterior puede guardarse como imágenes y puede elaborarse un gif de un pistón agregando la sintaxis del artículo citado, y quedará una animación como la que se ve en la cabeza del artículo.

Dibujar el pistón


Como la "animación" descrita dibuja solo lineas y puntos, agregué una función que dibuja un cuadrado para representar el pistón, tomando como referencia el punto calculado para la posición de este

Notar que x e y son las coordenadas del pistón. El pistón es un cuadrado de lado e que recorre una línea horientada con la vertical de ángulo a




Archivos *.m


Dada cualquier eventualidad los archivos *.m están en los siguientes enlaces:




Francisco Roco

12 comentarios:

Roxana dijo...

Ehm...
No cabe diuda que todo esto te gusta... Lo que es yo tengo una relación de amor/odio con matlab... me gusta, pro siempre terminamos peleados, y yo sufriendo por algún código... eeen fín.

Lindo blog.. pero aprovechando sus conocimientos de Matlab, extrapolelos a html y personalíce la página!! estoy segura que te puede quedar entrete.

Saludos!! y que pases un feliz año nuevo!!

(cuando juegue con el html de mi blog agrego un link al tuyo, vale?)

Rox.

Anónimo dijo...

como es que puedo poner un texto
donde me salga en la animacion, el incremento de los angulos, el de la biela y el del piston

gracias por tu ayuda

Anónimo dijo...

Excelente ayuda roco. Voy a segir esto para aprender. (Pacheco)

Anónimo dijo...

Vaya tio, me ha salido a la primera, no sabia que era tan util el matlab, parece divertido

Anónimo dijo...

hola esta chido tu programa, hace ver de otra manera el matlab

gracias sirve mucho de ayuda para seguir desarrollando

saludos

Anónimo dijo...

hola esta chido tu programa, hace ver de otra manera el matlab

gracias sirve mucho de ayuda para seguir desarrollando

saludos

Anónimo dijo...

disculpen no puedo cargar el programa me sale error en el lm
xfavor ayudenme tengo matlab 2011 mi correo es leonardocastroskp18@live.com

Francisco Roco dijo...

¿Puede publicar el error? Recuerde que debe tener los tres archivos en una carpeta.

Anónimo dijo...

hola por favor podrias subir los links del programa por que estan caidos opor favor enviarme a mi correo pezamora97@outlook.com

MARIA dijo...

Hola, me parece un excelente trabajo, aunque tengo una pregunta tengo los tres archivos en una sola carpeta pero tengo la inquietud de cual es el que debo correr para que me funcione el programa.. o como hago para correrlo..Muchas gracias por tu ayuda.

Francisco Roco dijo...

Hola

Debes correr el archivo que se llama "bloganimacion.m"

Ese archivo llama a las funciones para funcionar y graficar.



Anónimo dijo...

qq722 inov 8 schuhe,clarksbuty,gabor cipő,hoka japan,supra skytop,danner bot,aldo shoes,danner nz,etniesschuheschweiz zk828