```python
#6. Formulacion cinetica de lagrange
```


```python
from sympy import symbols, sin, cos
from sympy.physics.mechanics import ReferenceFrame, inertia, Point, dynamicsymbols
from sympy.physics.mechanics import RigidBody, LagrangesMethod, Lagrangian
import numpy as np
```


```python
# Para el ejemplo del movimiento de un cilindro sobre una rampa
t,m,g,I,R,theta,=symbols('t,m,g,I,R,theta')
q1,q2=dynamicsymbols('q1,q2')

a=ReferenceFrame('A')
d=a.orientnew('D','Axis',(theta,a.z))
c=d.orientnew('C','Axis',(q2,d.z))

#Defina puntos de interés y velocidades
o=Point('O')
c_com=o.locatenew('C_com',d.x*q1)
o.set_vel(a,0)
c_com.set_vel(c,0)

Ic=inertia(c,0,0,I)

#Defina un cuerpo rígido para el cilindro
body_cilindro=RigidBody('cilindro',c_com,c,m,(Ic,c_com))


V=m*g*q1*sin(theta)
T=body_cilindro.kinetic_energy(a)
```


```python
#Calcule el Lagrangiano
L=T-V
```


```python
# Utilice el método de Lagrange para obtener las equaciones de movimiento
lm=LagrangesMethod(L,[q1,q2],nonhol_coneqs=[q1.diff(t)-q2.diff(t)*R])
#Observe que se define lambda1 (multiplicador de Lagrange)
lm.form_lagranges_equations()
```




$\displaystyle \left[\begin{matrix}g m \sin{\left(\theta \right)} + m \frac{d^{2}}{d t^{2}} \operatorname{q_{1}}{\left(t \right)} + \operatorname{lam_{1}}{\left(t \right)}\\I \frac{d^{2}}{d t^{2}} \operatorname{q_{2}}{\left(t \right)} - R \operatorname{lam_{1}}{\left(t \right)}\end{matrix}\right]$




```python
# Observe las equaciones de movimiento descritas en la forma MM(q,q')[q' q'' lambda]=[F(q,q') constraints]
MM=lm.mass_matrix_full
F=lm.forcing_full
# Defina el vector xdot como [q' q'' lambda] (expandiendo con lambda)
xdot=lm.q.col_join(lm.u).diff(t)
xdot=xdot.col_join(lm.lam_vec)
MM*(xdot)-F # ==0
```




$\displaystyle \left[\begin{matrix}0\\0\\g m \sin{\left(\theta \right)} + m \frac{d^{2}}{d t^{2}} \operatorname{q_{1}}{\left(t \right)} - \operatorname{lam_{1}}{\left(t \right)}\\I \frac{d^{2}}{d t^{2}} \operatorname{q_{2}}{\left(t \right)} + R \operatorname{lam_{1}}{\left(t \right)}\\- R \frac{d^{2}}{d t^{2}} \operatorname{q_{2}}{\left(t \right)} + \frac{d^{2}}{d t^{2}} \operatorname{q_{1}}{\left(t \right)}\end{matrix}\right]$




```python
# Para el ejemplo del modelo de un tren de aterrizaje

# Defina las variables de movimiento
# y parametros del modelo
q1,q2=dynamicsymbols('q1,q2')
# Parámetros del modelo
h,d,mb,mc,Ia,Ir,g=symbols('h,d,mb,mc,Ia,Ir,g')

#Marcos de referencia
a=ReferenceFrame('A')
b=a.orientnew('B','Axis',(q1,a.z))
c=b.orientnew('C','Axis',(q2,b.x))

# Puntos de interes
o=Point('O')
b_com=o.locatenew('Bcom',-h*b.y/2)
b_end=o.locatenew('Bend',-h*b.y)
c_com=b_end.locatenew('Ccom',d*b.x)

# Defina la velocidad de cada punto
o.set_vel(a,0)
b_com.set_vel(b,0)
c_com.set_vel(c,0)
b_com.v2pt_theory(o,a,b)
c_com.v2pt_theory(b_end,b,c)

#Propiedades inerciales
ic=inertia(c, Ia, Ir, Ir)

# Cuerpos rígidos
body_llanta=RigidBody('llanta',c_com,c,mc,(ic,c_com))

# En el ejemplo anterior calculo el Lagrangiano definiendo explícitamente L=T-V
# en este caso utilice el método Lagrangian
body_llanta.potential_energy=mc*g*(h-h*cos(q1)+d*sin(q1))
L=Lagrangian(a,body_llanta).simplify()
L
```




$\displaystyle \frac{Ia \left(\frac{d}{d t} \operatorname{q_{2}}{\left(t \right)}\right)^{2}}{2} + \frac{Ir \left(\frac{d}{d t} \operatorname{q_{1}}{\left(t \right)}\right)^{2}}{2} - g mc \left(d \sin{\left(\operatorname{q_{1}}{\left(t \right)} \right)} - h \cos{\left(\operatorname{q_{1}}{\left(t \right)} \right)} + h\right) + \frac{mc \left(d^{2} + h^{2}\right) \left(\frac{d}{d t} \operatorname{q_{1}}{\left(t \right)}\right)^{2}}{2}$




```python
# Defina el escalar M3 como el momento externo sobre el marco B
M3=symbols('M3')
lm=LagrangesMethod(L,[q1,q2],forcelist=[(b,M3*b.z)],frame=a)
lm.form_lagranges_equations()
```




$\displaystyle \left[\begin{matrix}Ir \frac{d^{2}}{d t^{2}} \operatorname{q_{1}}{\left(t \right)} - M_{3} + g mc \left(d \cos{\left(\operatorname{q_{1}}{\left(t \right)} \right)} + h \sin{\left(\operatorname{q_{1}}{\left(t \right)} \right)}\right) + mc \left(d^{2} + h^{2}\right) \frac{d^{2}}{d t^{2}} \operatorname{q_{1}}{\left(t \right)}\\Ia \frac{d^{2}}{d t^{2}} \operatorname{q_{2}}{\left(t \right)}\end{matrix}\right]$



f68d48dbaaf4837782ebde55bb184b89b5a2bcf3
ipynb
Jupyter Notebook
Capitulo_6/Capitulo6.ipynb
JonathanCamargo/Dinamica_Mecanica_Material_Interactivo
58fd21f1efccd1eda88f03e39cf69d122d280fdd
MIT
Capitulo_6/Capitulo6.ipynb
JonathanCamargo/Dinamica_Mecanica_Material_Interactivo
58fd21f1efccd1eda88f03e39cf69d122d280fdd
MIT
Capitulo_6/Capitulo6.ipynb
JonathanCamargo/Dinamica_Mecanica_Material_Interactivo
58fd21f1efccd1eda88f03e39cf69d122d280fdd
MIT
Qwen/Qwen-72B
1. YES
2. YES