import numpy as np import matplotlib.pyplot as plt # pour les graphiques from scipy.integrate import odeint # pour obtenir un module contenant différentes méthodes d'intégration from math import sin, cos, pi ##### Constantes et conditions expérimentales ##### L = .......... # longueur du fil, en m g = .......... # accélération de la pesanteur, en m/s^2 theta0 = .......... # angle initial, en rad thetap0 = .......... # vitesse angulaire initiale (theta point zéro), en rad \cdot s^{-1} t0 = .......... # début de la simulation, en s w0 = np.sqrt(..........) # pulsation des petites oscillations T0 = ..........*np.sqrt(..........) # période des petites oscillations tf = .......... # durée de la simulation, en s (choix de tf pour représenter 3 périodes pour les petites oscillations) N = .......... # nombre de points de discrétisation pour le tracé h = (tf-t0)/(N-1) # pas de calcul (durée qui sépare deux points consécutifs sur le graphique) t = np.linspace(t0,tf,N) # liste des instants (N+1 instants) répartis régulièrement entre t0 et tf ##### Résolution de l'équation différentielle ##### def Eq1 (theta_thetap, t): # L'équation différentielle (Eq1) sous forme d'une équation vectorielle theta, thetap = theta_thetap return [thetap, - w0*w0*sin(theta)] CI = (theta0, thetap0) # conditions initiales solution = odeint(Eq1 , CI, t) # résolution de l'équation différentielle (Eq1) en tenant compte des conditions initiales theta, thetap = solution.T # Les valeurs de theta et thetap peuvent être récupérées ##### Graphiques ##### plt.figure() for theta0 in np.linspace(.......... , .......... , ..........): CI = (theta0, thetap0) solution = odeint(Eq1, CI, t) theta, thetap = solution.T plt.plot(t, theta, label='theta0='+str(theta0)+' rad') plt.title(r'Évolution temporelle de $\theta$ pour différentes conditions initiales') # titre du graphique plt.xlabel(r'$t$ (s)') plt.ylabel(r'${\theta}$ $(\mathrm{rad})$') plt.legend(loc='lower right') # affichage de la légende en bas à droite plt.grid() # affichage d'une grille plt.show()