ENUNCIADO EJEMPLO 7
Un sólido rígido está formado por un disco pesado con centro en el punto A, de radio R y masa M y una varilla OA de masa m de longitud 2r que se encuentra articulada a un punto fijo O.
El punto A se puede mover libremente en todas las direcciones del espacio. Además, el disco puede girar libremente alrededor de OA.
Paso 0. Reiniciación de las variables del sistema y llamada a los paquetes linalg, plots y plottools.
> | restart: |
> | with(linalg):with(plots):with(plottools): |
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the name changecoords has been redefined
Warning, the name arrow has been redefined
> | libname:="C:/",libname: |
> | with(mecapac3d): |
Paso 1. Definimos las coordenadas generalizadas del sistema en una lista que se denominará cg.. Al moverse A en todo el espacio y O estar fijo tendremos 3 grados de libertad que definiremos a continuación:
> | cg := [alpha,theta,beta] : |
Paso 2. Definición mediante variables de los elementos que forman el sistema mecánico, la varilla y el disco.
Para la varilla:
> | xgv := [r*sin(alpha)*sin(theta),-r*sin(alpha)*cos(theta),r*cos(alpha)]; |
> | rotv1 := rota(theta,3); |
> | rotv2 := rota(alpha,1); |
> | rottotv := evalm(rotv1 &* rotv2); |
> | v1 := [varilla,xgv,rottotv,mvar,2*r] : |
A continuación definimos igualmente el disco y sus correspondientes giros:
> | xgd := [2*r*sin(alpha)*sin(theta),-2*r*sin(alpha)*cos(theta),2*r*cos(alpha)]; |
> | rotd1 := rota(theta,3); |
> | rotd2 := rota(alpha,1); |
> | rotd3 := rota(beta,3); |
> | rottotd := evalm(rotd1 &* rotd2 &* rotd3); |
> | d1:= [disco,xgd,rottotd,mdis,R]: |
Paso 3. Definición de los elementos gráficos que definiran nuestro sistema de ejes.
> | TO := [texto,[0,0,-1],"O"]: |
> | TX := [texto,[5,0,-1],"X"]: |
> | TY := [texto,[0,5,-1],"Y"]: |
> | TZ := [texto,[0,0,6],"Z"]: |
> | ejex:=[vector,[0,0,0],[5,0,0],red]: |
> | ejey:=[vector,[0,0,0],[0,5,0],green]: |
> | ejez:=[vector,[0,0,0],[0,0,5],blue]: |
Paso 4. Definición de la variable sistema que agrupa en una lista todos los elementos anteriores.
> | sistema := [v1,ejex,ejey,ejez,d1,TO,TX,TY,TZ]: |
Paso 5. Obtención de la energía cinética del sistema mediante fT asignándola a la variable T.
> | T := fT(sistema); |
Paso 6. Obtención de la energía potencial del sistema mediante fV asignándola a la variable V
> | V := fV(sistema); |
Paso 7. Obtención de la lagrangiana como diferencia de energías entre la energía cinética y la potencial.
> | L := simplify(T-V); |
Paso 8. Obtención de las ecuaciones de lagrange para las dos coordenadas generalizadas mediante el operador Ec_lag
> | ecua := simplify(ec_lag()); |
Paso 9. Asignación de valores numéricos a los parámetros que queden sun asignar para poder proceder a la integración numérica.
> | mvar:=1: g:=9.8: mdis:=10: r:=1: R:=1: |
Paso 10. Visualizamos la configuracion del sistema para distintas posiciones:
Posición en el instante inicial
> | fG([evalf(0),evalf(0),evalf(0)]); |
En una posición generica
> | fG([evalf(Pi/4),evalf(0/4),evalf(0/4)]); |
Paso 11. Integración numérica del problema mediante la función fint asignando el resultado a la variable res.
> | res := fint([0.1,0,0,0,0,50]): |
Paso 12. Procedemos a realizar una animación del movimiento del conjunto por medio de la función dibu3.
> | dibu3(6,70); |
> |