Consideremos o pêndulo conforme a figura abaixo
Para escrever as equações do movimento deste Pêndulo escrevemos que: $$ \begin{gather} \mathbf{r}(t) = L(\sin(\theta) \mathbf{i} - \cos(\theta)\mathbf{j}) = L\mathbf{e}_1(t) \\ \dot{\mathbf{r}}(t) =L \dot{\mathbf{e}}_1(t) = L\dot{\theta}(\cos{\theta}\mathbf{i} + \sin{\theta}\mathbf{j})=L\dot{\theta}\mathbf{e_2}(t) \\ \ddot{\mathbf{r}}(t) = L\ddot{\theta}\mathbf{e}_2(t) + L\dot{\theta}\dot{\mathbf{e}}_2(t)=-L\dot{\theta}^2\mathbf{e}_1(t) + L\ddot{\theta}\mathbf{e_2}(t) \end{gather}$$ As forças que atuam na partícula são a força peso $-Mg\mathbf{j}$ e força de reação vincular da haste que segura a partícula $-\alpha(t)\mathbf{e}_1(t).$ Como $\mathbf{j}= -\cos{\theta}\mathbf{e}_1 + \sin{\theta}\mathbf{e}_2$, podemos reescrever a força peso como $$ \mathbf{P} = Mg\cos{\theta}\mathbf{e}_1 - Mg\sin{\theta}\mathbf{e}_2 $$ e aplicando a lei de Newton temos a equação do movimento neste caso: $$ \ddot{\theta}(t) = -\frac{g}{L}\sin(\theta) $$ Esta equação pode-se escrever como um sistema de EDO de primeira ordem: $$ \begin{eqnarray} \dot{\theta} &= & \omega\\ \dot{\omega} & = & -\frac{g}{L}\sin(\theta) \end{eqnarray}$$
Os pontos da forma $({n\pi},0)$ são pontos de equilíbrio do sistema acima. Quando $n$ é ímpar os pontos de equilíbrios são intáveis. Podemos acrescentar um torque ajustável no pêndulo de forma que a equação do sistema depende agora desta nova variável: $$ \begin{eqnarray} \dot{\theta} &= & \omega\\ \dot{\omega} & = & -\frac{g}{L}\sin(\theta) + u(t) \end{eqnarray}$$ Podemos escolher este torque de modo que os pontos de equilíbrios instáveis fiquem estáveis?
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
from scipy.integrate import odeint
# \theta = y[0] \omega =y[1]
g=9.8
L=10
def rhs(y,t):
return [y[1], -g/L* np.sin(y[0])]
y0=[0.1, 1.0]
t_out = np.arange(0,10,0.1)
y_out = odeint(rhs,y0, t_out)
theta=y_out[:,0]
omega=y_out[:,1]
plt.plot(t_out,theta)
plt.grid()
plt.plot(t_out,omega)
plt.grid()
plt.plot(theta,omega)
[<matplotlib.lines.Line2D at 0x7f84c8395c88>]