ENUNCIADO EJEMPLO 16

    Un disco de masa M y radio R puede girar libremente alrededor de su eje de revolución vertical OZ. En el disco existe una acanaladura radial sin masa y lisa por la que desliza una rótula cilíndrica de masa m, que a su vez es el punto de suspensión de un péndulo simple de longitud l y masa m. La rótula actúa obligando al péndulo a moverse en el plano vertical que contiene a la acanaladura.

   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:=[phi,theta,s];

cg := [phi, theta, s]

   Paso 2. Definición mediante variables de los elementos que forman el sistema mecánico.

> rotula:=[punto,s*cos(phi),s*sin(phi),0,m]:

> punt:=[punto,(s+l*sin(theta))*cos(phi),(s+l*sin(theta))*sin(phi),-l*cos(theta),m]:

> xg:=[0,0,0]:

> roti:=rota(phi,3):

> disc:=[disco,xg,roti,M,R]:

   Paso 3. Definición de los elementos gráficos que definiran nuestro sistema de ejes.

> aphi:=[angulo,[1,0,0],[0,0,0],[cos(phi),sin(phi),0],1]:

> atheta:=[angulo,[s*cos(phi),s*sin(phi),-1],[s*cos(phi),s*sin(phi),0],[(s+sin(theta))*cos(phi),(s+sin(theta))*sin(phi),-cos(theta)],1]:

> aca:=[segmento,[0,0,0],[R*cos(phi),R*sin(phi),0],black]:

> var:=[segmento,[s*cos(phi),s*sin(phi),0],[(s+l*sin(theta))*cos(phi),(s+l*sin(theta))*sin(phi),-l*cos(theta)],red]:

> ejeX:=[vector,[0,0,0],[R+2,0,0],red]:

> ejeY:=[vector,[0,0,0],[0,R+2,0],green]:

> ejeZ:=[vector,[0,0,0],[0,0,R+2],blue]:

> TO := [texto,[0,1,0],"O"]:

> TX := [texto,[R+3,0,0],"X"]:

> TY := [texto,[0,R+3,0],"Y"]:

> TZ := [texto,[0,0,R+3],"Z"]:

   Paso 4. Definición de la variable sistema que agrupa en una lista todos los elementos anteriores.

> sistema:=[punt,rotula,disc,aca,var,atheta,aphi,ejeX,ejeY,ejeZ,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);

T := 1/2*m*(((s1+l*cos(theta)*theta1)*cos(phi)-(s+l*sin(theta))*sin(phi)*phi1)^2+((s1+l*cos(theta)*theta1)*sin(phi)+(s+l*sin(theta))*cos(phi)*phi1)^2+l^2*sin(theta)^2*theta1^2)+1/2*m*((s1*cos(phi)-s*s...

   Paso 6. Obtención de la energía potencial del sistema mediante fV asignándola a la variable V.

> V:=fV(sistema);

V := -m*g*l*cos(theta)

   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);

L := m*s1^2+1/4*phi1^2*M*R^2+m*s1*l*cos(theta)*theta1+m*s*phi1^2*l*sin(theta)+m*s^2*phi1^2+1/2*m*l^2*theta1^2-1/2*m*phi1^2*l^2*cos(theta)^2+1/2*m*phi1^2*l^2+m*g*l*cos(theta)

   Paso 8. Obtención de las ecuaciones de lagrange para las dos coordenadas generalizadas mediante el operador Ec_lag

> ecua:=ec_lag();

ecua := [1/2*diff(phi(t), `$`(t, 2))*M*R^2+2*m*diff(s(t), t)*diff(phi(t), t)*l*sin(theta(t))+2*m*s(t)*diff(phi(t), `$`(t, 2))*l*sin(theta(t))+2*m*s(t)*diff(phi(t), t)*l*cos(theta(t))*diff(theta(t), t)...ecua := [1/2*diff(phi(t), `$`(t, 2))*M*R^2+2*m*diff(s(t), t)*diff(phi(t), t)*l*sin(theta(t))+2*m*s(t)*diff(phi(t), `$`(t, 2))*l*sin(theta(t))+2*m*s(t)*diff(phi(t), t)*l*cos(theta(t))*diff(theta(t), t)...ecua := [1/2*diff(phi(t), `$`(t, 2))*M*R^2+2*m*diff(s(t), t)*diff(phi(t), t)*l*sin(theta(t))+2*m*s(t)*diff(phi(t), `$`(t, 2))*l*sin(theta(t))+2*m*s(t)*diff(phi(t), t)*l*cos(theta(t))*diff(theta(t), t)...ecua := [1/2*diff(phi(t), `$`(t, 2))*M*R^2+2*m*diff(s(t), t)*diff(phi(t), t)*l*sin(theta(t))+2*m*s(t)*diff(phi(t), `$`(t, 2))*l*sin(theta(t))+2*m*s(t)*diff(phi(t), t)*l*cos(theta(t))*diff(theta(t), t)...ecua := [1/2*diff(phi(t), `$`(t, 2))*M*R^2+2*m*diff(s(t), t)*diff(phi(t), t)*l*sin(theta(t))+2*m*s(t)*diff(phi(t), `$`(t, 2))*l*sin(theta(t))+2*m*s(t)*diff(phi(t), t)*l*cos(theta(t))*diff(theta(t), t)...

   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:=3: l:=2 :m:=5: M:=10: 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([1.0,evalf(Pi/8),1.0,1.0,0.0,0]):

> res(0.1):

   Paso 11. Representación gráfica de las evoluciones temporales de z mediante odeplot.

> odeplot(res,[t,theta(t)],0..3);

[Plot]

> odeplot(res,[t,phi(t)],0..3);

[Plot]

> odeplot(res,[t,s(t)],0..3);

[Plot]

   Paso 12. Procedemos a realizar una animación del movimiento del conjunto por medio de la función dibu3.

> dibu3(2,50);

[Plot]

>