ENUNCIADO DEL EJEMPLO 10
Un disco homogeneo de masa m2 y radio R gira a velocidad constante segun su eje que es vertical. Sobre un punto de su extremo pende un pendulo formado por un segmento de masa despreciable y una masa puntual en su extremo.
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.
> | cg:=[theta,phi]; |
Paso 2. Definición mediante variables de los elementos que forman el sistema mecánico.
> | masa:=[punto,(R+l*sin(theta))*cos(phi),(R+l*sin(theta))*sin(phi),-(l*cos(theta)),m1]; |
> | disco1:=[disco,[0,0,0],rota(phi,3),m2,R]; |
> | l1:=[segmento,[R*cos(phi),R*sin(phi),0],[(R+l*sin(theta))*cos(phi),(R+l*sin(theta))*sin(phi),-(l*cos(theta))],red]; |
Paso 3. Definición de los elementos gráficos que definiran nuestro sistema de ejes.
> | ejex:=[vector,[0,0,0],[20,0,0],red]: |
> | ejey:=[vector,[0,0,0],[0,20,0],green]: |
> | ejez:=[vector,[0,0,0],[0,0,20],blue]: |
> | TO := [texto,[0,0,-1],"O"]: |
> | TX := [texto,[20,0,-1],"X"]: |
> | TY := [texto,[0,20,-1],"Y"]: |
> | TZ := [texto,[0,0,21],"Z"]: |
Paso 4. Definición de la variable sistema que agrupa en una lista todos los elementos anteriores.
> | sistema:=[masa,disco1,l1,ejex,ejey,ejez,TO,TX,TY,TZ]: |
Paso 5. Obtención de la energía potencial del sistema mediante fV asignándola a la variable V.
> | V:=fV(sistema); |
Paso 6. Obtención de la energía cinética del sistema mediante fT asignándola a la variable T.
> | T:=fT(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:=map(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.
> | R:=10:l:=5:m1:=5:m2:=5:g:=9.8: |
Paso 10. Integración numérica del problema mediante la función fint asignando el resultado a la variable res.
> | res:=fint([0,10,0,10]): |
Paso 11. Representación gráfica de las evoluciones temporales de phi y theta mediante odeplot.
> | odeplot(res,[t,theta(t)],0..20,numpoints=100); |
> | odeplot(res,[t,phi(t)],0..20,numpoints=100); |
Paso 12. Procedemos a realizar una animación del movimiento del conjunto por medio de la función dibu3
> | dibu3(1,70); |
> |