Le pendule

On considère l’équation : $\( \theta^{\prime\prime} = -\sin{\theta}\)$

Pour résoudre cette équation, on définit le tableau \(y(t) = (\theta(t), \theta^\prime(t))\).

  1. Écrire la fonction Python f(t, y) qui renvoie la dérivée de \(y\)

  2. Résoudre et tracer le resultat de l’équation différentielle pour les conditions initiales : \(\theta(0) = 2\pi/4\) et \(\theta^\prime(0) = 0\)

  3. Vérifier que l’énergie totale est conservée


Solution

import matplotlib.pyplot as plt

import numpy as np
from numpy import pi

from scipy.integrate import solve_ivp
def f(t, y):
    theta, theta_prime = y
    return np.array([theta_prime, -np.sin(theta)])
t_eval = np.linspace(0, 10)

res = solve_ivp(f, [0, 10], [3*np.pi/4, 0], t_eval=t_eval)

plt.plot(res.t, res.y[0])
plt.xlabel('t')
plt.ylabel(r'$\theta$');
../_images/64bc15787a9cb62e93d3b0645e5883bf9293163630763bb801c7233d8530ee29.png
energie_potentielle = -np.cos(res.y[0])
energie_cinetique = res.y[1]**2/2

plt.plot(res.t, energie_potentielle, label='Pot.')
plt.plot(res.t, energie_cinetique, label='Cin.')
plt.plot(res.t,  energie_potentielle + energie_cinetique, label='tot.')
plt.legend();
../_images/3b4dbca8e42da1040dee3f769226cbc5252439c69c2fbbcff52b49d5d31bb995.png