Loading [MathJax]/jax/output/HTML-CSS/jax.js

Simulación de masas unidas mediante muelles 
El modelado de masas interconectadas con muelles es muy utilizado para la simulación de sistemas físicos y de otras estructuras dinámicas. Plantearemos las ecuaciones diferenciales básicas y a continuación realizaremos una implementación numérica mediante el método de Euler.

La teoría.

La fuerza que actúa sobre un punto pi se puede definir, según la primera ley de Newton, como:
Fi=miai
Si despejamos la aceleración nos queda:
ai=1miFi
Como la aceleración es la derivada de la velocidad con respecto al tiempo:
dvidt=1miFi
Teniendo en cuenta que la fuerza total aplicada sobre el punto pi es la suma de cada una de las fuerzas aplicadas en ese punto:
dvidt=1mijFij
Siendo Fij la fuerza aplicada en el punto pi por parte del muelle que conecta dicho punto al punto pj. Desarrollando la ecuación anterior utilizando la ley de Hooke para el cálculo de Fij, obtenemos el siguiente sistema de ecuaciones diferenciales:
dvidt=1mij(kmijeijkaij(vivj))
dpidt=vi
Siendo:
pi = El vector posición del punto i.
vi = El vector velocidad del punto i (derivada de pi con respecto al tiempo).
vj = El vector velocidad del punto j (derivada de pj con respecto al tiempo).
eij = El vector elongación del punto i con respecto al punto j.
mi = La masa del punto i.
kmij = La constante del muelle que une los puntos i y j.
kaij = La constante del amortiguador que une los puntos i y j.

En esta ecuación, kmijeij es la fuerza del muelle puro y kaij(vivj) es la fuerza del amortiguador.

El vector de elongación eij se calcula de la siguiente manera:
Siendo lrij la longitud, en reposo, del muelle que une los puntos pi y pj.
Si Distancia(pi,pj)<lrij, entonces eij es el vector unitario que va de pj a pi.
Si Distancia(pi,pj)>lrij, entonces eij es el vector unitario que va de pi a pj.
Si Distancia(pi,pj)=lrij, entonces eij=(0,0).

El sumatorio debe recorrer todos los j que representen puntos unidos al punto i mediante un muelle.

Para implementar las ecuaciones diferenciales se puede aplicar el método de Euler (tiene un buen comportamiento para intervalos de t pequeños y constantes y es múy fácil de programar aunque el error es un poco alto). Lo que se suele recomendar en foros de programación es el método de Runge-Kutta de cuarto orden: no es complicado de implementar y tiene un error razonablemente bajo.

Implementación mediante el método de Euler.

Para una ecuación diferencial de la siguiente forma:
dydt=f(t,y)
Podemos aproximar de forma numérica la integral resultante:
y=f(t,y)dt
mediante la siguiente ecuación de recurrencia:
yn+1=yn+hf(tn,yn)
Siendo h el ancho del intervalo de integración en el tiempo (cuando más chico mejor). Si integramos el sistema de ecuaciones diferenciales del sistema de puntos unidos por muelles:
vi=1mij(kmijeijkaij(vivj))dt
pi=vidt
podemos aplicar el método de Euler de forma directa:
vi[n+1]=vi[n]+h1mij(kmijeij[n]kaij(vi[n]vj[n]))
pi[n+1]=pi[n]+hvi[n]
h es el ancho en segundos de cada intervalo de simulación. Esta h se puede calcular de la siguiente manera:
h=1fps
Siendo fps la tasa de refresco en frames por segundo.

En esta web he implementado en javascript y HTML5 un pequeño sistema de cuatro masas unidas por muelles. Haciendo click con el ratón se pueden mover las masas e interactuar con el sistema.

[ añadir comentario ] ( 1793 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente  |   ( 3 / 2177 )

<< <Anterior | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Siguiente> >>