### ¿Cómo funciona la suspensión de un auto?
> Una primer aproximación al modelo de la suspensión de un automovil es considerar el oscilador armónico amortiguado. El cual se representa a través de la siguiente ecuación diferencial. 

\begin{equation}
m\ddot{x} + k x + B \dot{x} = 0
\end{equation}
donde $k$ es la constante del muelle, y $B$ la constante de amortiguación. 

Referencia: 
   - https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html
   - https://docs.scipy.org/doc/scipy/reference/index.html

___
<div>




 </div>

Esta es una ecuación diferencial ordinaria (EDO). En python existe una función llamada _odeint_ del paquete _integrate_ de la libreria _scipy_, que permite integrar sistemas del tipo 
\begin{equation}
\frac{dy}{dt} = f(x,y)
\end{equation}
con condiciones iniciales $y(0) = y_{0}$. Ahora bien, si nos fijamos bien, la ecuación diferencial que tenemos es de segundo orden. No hay problema. La podemos simplificar como un sistema de ecuaciones de primer orden como sigue:

\begin{align}
\dot{x} & = y \\
\dot{y} & = -\frac{k}{m} x - \frac{B}{m} y  
\end{align}


```python
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint

%matplotlib inline
```


```python
from ipywidgets import *
import matplotlib as mpl
label_size = 14
mpl.rcParams['xtick.labelsize'] = label_size 
mpl.rcParams['ytick.labelsize'] = label_size 
```


```python

```


```python

```


```python



plt.legend(loc = 'best', prop={'size': 14})    
plt.xlabel('tiempo', fontsize = 14) 
plt.show()
```


```python

```


```python
plt.figure(figsize = (6,6))

plt.show()
```


```python
def amortiguado(t = 0):
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)

    ax.text(4, .6, 'tiempo =    %s'%tiempo[t])
    ax.text(4, .5, 'posición =  %s'%xx[t])
    fig.canvas.draw()

t_f = len(tiempo) 

```

### Casos

Teníamos
\begin{equation}
m\ddot{x} + k x + B \dot{x} = 0
\end{equation}

si recordamos que $\omega_0 ^2 = k/m$ y definimos $B/m\equiv 2\Gamma$, tendremos

\begin{equation}
\ddot{x} + 2\Gamma \dot{x}+ \omega_0^2 x = 0
\end{equation}

### Amortiguado

Si $\omega_0^2 > \Gamma^2$ se tiene movimiento oscilatorio amortiguado. 


```python
omega0 = k/m
Gamma = B/(2*m)
```


```python
omega0**2, Gamma**2
```


```python
omega0**2 > Gamma**2
```

Entonces, el primer caso que ya habíamos presentado corresponde a movimiento amortiguado. 


```python

plt.legend(loc = 'best', prop={'size': 14})    
plt.xlabel('tiempo', fontsize = 14) 
plt.show()
```


```python

```

### Sobreamortiguado

Si $\omega_0^2 < \Gamma^2$ se tiene movimiento oscilatorio amortiguado. 


```python
k = .1 # Constante del muelle
m = 1.0   # Masa
B = .5 # Constante de amortiguación
```


```python
omega0 = k/m
Gamma = B/(2*m)
```


```python
omega0**2, Gamma**2
```


```python
omega0**2 < Gamma**2
```


```python

```


```python

```


```python

plt.legend(loc = 'best', prop={'size': 14})    
plt.xlabel('tiempo', fontsize = 14) 
plt.show()
```


```python
plt.plot(xxA,yyA, c = 'r', label="Posicion") 

plt.legend(loc = 'best', prop={'size': 14})    
plt.xlabel('tiempo', fontsize = 14) 
plt.show()
```

### Amortiguamiento crítico

Si $\omega_0^2 = \Gamma^2$ se tiene movimiento aperiódico crítico (amortiguamiento crítico). 


```python
k = np.sqrt(.0625) # Constante del muelle
m = 1.0   # Masa
B = .5 # Constante de amortiguación
```


```python
omega0 = k/m
Gamma = B/(2*m)
```


```python
omega0**2, Gamma**2
```


```python
omega0**2 == Gamma**2
```


```python

```


```python

```


```python

plt.legend(loc = 'best',prop={'size': 14})  
plt.xlabel('tiempo', fontsize = 14) 
plt.show()
```


```python

```

En resumen, se tiene entonces: 


```python

```

> **Actividad**. ¿Cómo se ve el espacio fase para los diferentes casos así como para diferentes condiciones iniciales? 


```python

```


```python

```

c469382b691df224a7e3f05446dc8e752632435d
ipynb
Jupyter Notebook
Intro/Clase7/Clase7_OsciladorAmortiguado.ipynb
RoboticaIndustrial/Calando
a539a039404c5700e2d7d34e5b93c2f8be884f26
MIT
Intro/Clase7/Clase7_OsciladorAmortiguado.ipynb
RoboticaIndustrial/Calando
a539a039404c5700e2d7d34e5b93c2f8be884f26
MIT
Intro/Clase7/Clase7_OsciladorAmortiguado.ipynb
RoboticaIndustrial/Calando
a539a039404c5700e2d7d34e5b93c2f8be884f26
MIT
Qwen/Qwen-72B
1. YES
2. YES