Livre_silo 30 août 2013 16:32 Page 236
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
236
Informatique pour tous
On va terminer avec le pendule non amorti (et non linéarisé), pour lequel on présente des
portraits de phase calculés avec odeint pour différentes valeurs de la vitesse initiale (mais
toujours θ(0) = 0) : le code ayant produit la figure 9.10 est donné programme 10 ci-après.
Les résultats confirment l’intuition et la théorie :
• Si l’impulsion initiale est faible, le mouvement est périodique ; on retrouve l’aspect observé dans le cas linéarisé.
• Si l’impulsion initiale est forte, le mouvement est pseudo-périodique : il existe T > 0
tel que θ(t + T ) = θ(t) + 2π et ˙
θ(t + T ) = ˙
θ(t) pour tout t.
• Dans le cas limite (qui est fort difficile à expérimenter !),
(
θ(t), ˙
θ(t)
)
tend vers (π, 0)
lorsque t tend vers +∞. Nous reviendrons sur ce point plus tard.
PROGRAMME 10 Portraits de phase avec odeint
def fpendule(X, _):
theta, thetap = X[0], X[1]
return array([thetap, -np.sin(theta)])
t = np.arange(0, 10, 0.01)
for theta_point_0 in [0.5, 1, 2, 2.05, 2.4]:
r = odeint(fpendule, array([0, theta_point_0]), t)
pl.plot(r[:, 0], r[:, 1])
# (...)
pl.xlabel(r'$\theta(t)$', fontsize=18)
# ...
pendule-odeint.pdf
Figure 9.10
Le pendule non amorti, avec
différentes conditions initiales
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
236
Informatique pour tous
On va terminer avec le pendule non amorti (et non linéarisé), pour lequel on présente des
portraits de phase calculés avec odeint pour différentes valeurs de la vitesse initiale (mais
toujours θ(0) = 0) : le code ayant produit la figure 9.10 est donné programme 10 ci-après.
Les résultats confirment l’intuition et la théorie :
• Si l’impulsion initiale est faible, le mouvement est périodique ; on retrouve l’aspect observé dans le cas linéarisé.
• Si l’impulsion initiale est forte, le mouvement est pseudo-périodique : il existe T > 0
tel que θ(t + T ) = θ(t) + 2π et ˙
θ(t + T ) = ˙
θ(t) pour tout t.
• Dans le cas limite (qui est fort difficile à expérimenter !),
(
θ(t), ˙
θ(t)
)
tend vers (π, 0)
lorsque t tend vers +∞. Nous reviendrons sur ce point plus tard.
PROGRAMME 10 Portraits de phase avec odeint
def fpendule(X, _):
theta, thetap = X[0], X[1]
return array([thetap, -np.sin(theta)])
t = np.arange(0, 10, 0.01)
for theta_point_0 in [0.5, 1, 2, 2.05, 2.4]:
r = odeint(fpendule, array([0, theta_point_0]), t)
pl.plot(r[:, 0], r[:, 1])
# (...)
pl.xlabel(r'$\theta(t)$', fontsize=18)
# ...
pendule-odeint.pdf
Figure 9.10
Le pendule non amorti, avec
différentes conditions initiales
