La page ci-présente existe en version notebook téléchargeable grâce au bouton
(choisir le format .ipynb). On rappelle qu’l faut ensuite l’enregistrer dans un répertoire adéquat sur votre ordinateur (capa_num par exemple dans votre répertoire personnel) puis lancer Jupyter Notebook depuis Anaconda pour accéder au notebook, le modifier et exécutez les cellules de code adéquates.
6. Etude d’un pendule simple¶
But : à l’aide d’un langage de programmation, mettre en évidence le non isochronisme des oscillations d’un pendule.
6.1. Position du problème¶
Nous allons chercher à étudier les oscillations d’un pendule simple :
Aux petites oscillations. Ce sera l’occasion de tester le schéma d’Euler mis en place pour étudier le système en le comparant aux attentes.
Pour des oscillations quelconques. On cherchera alors à déterminer la période des oscillations en fonction de l’amplitude pour observer le non isochoronisme des oscillations. On comparera notamment les résultats trouvés à la formule théorique approchée.
6.1.1. Rappel : Mise en équation¶
On considère un pendule simple de longueur \(l\) sans sources d’amortissement dans un champ de pesanteur uniforme \(g\). La masse au bout du pendule est \(m\).
Pour les applications numériques, on prendra \(l = 1 m; g = 9.81 m.s^{-2}; m=1 kg\).
On rappelle que la mise en équation du pendule amène à l’équation :
qui devient aux petits angles :
L’énergie potentielle de pesanteur s’écrit :
et l’énergie cinétique : \(E_c = {1 \over 2} m l^2 \dot \theta^2\)
6.1.2. Rappel : Schéma d’Euler¶
On va utiliser un schéma d’Euler explicite. Le système étant d’ordre 2, on utilise un système d’équations différentielles définit par la relation vectorielle :
où \( Y(t) = \begin{pmatrix} \theta(t)\\ \dot \theta(t) \end{pmatrix} \)
Pour des valeurs discrètes \(Y_k\) aux temps \(t_k\) (on notera \(x_k\) et \(v_k\) les valeurs de \(\theta(t)\) et \(\dot \theta(t)\) aux temps \(t_k\)), on peut approcher la dérivée de la fonction entre \(t_k\) et \(t_{k+1}\) par :
soit, en notant \(h = t_{k+1} - t_k\) :
On a la relation de récurrence qui définit les \(Y_k\) par le schéma d’Euler (explicite).
6.2. Implémentation du schéma d’Euler¶
Cette fois, on va directement raisonner avec le vecteur \(Y_k\) et non avec deux grandeurs séparées \(\theta_k\) et \(\dot \theta_k\)
Exercice 1 :
Vous devez :
Ecrire une fonction
F_petitqui prend comme argument un flottanttet un vecteurYà deux éléments et qui renvoie le vecteurF(Y, t)dans le cas d’un pendule aux petites oscillations.Ecrire (ou plutôt réécrire en servant de ce que vous avez fait précédemment) une fonction
eulerqui prend comme arguments :
une fonction
F(semblable àF_petitqui prendra le même type d’arguments et renverra le même type de vecteur).un vecteur
Y0donnant les deux conditions initiales (ici à \(t=0\)) sur les deux composants deYun flottant
hqui sera le pas d’intégration \(h = t_{k+1} - t_k\)deux flottants
t0ettfqui seront les temps initial et final de l’intégration. et qui renvoie :un tableau à 3 colonnes contenant respectivement : les temps \(t_k\), les angles \(\theta_k\) et les vitesses angulaires \(\dot \theta_k\).
Données utiles :
pour rappel, il est plus simple de créer une liste de vecteurs à 3 éléments qu’on transforme en tableau de N lignes et 3 colonnes.
La sélection de la ligne d’indice i d’un tableau se fait par
tableau[i]. Attention, les indices commencent à 0 et se terminent à N-1.La sélection de la colonne d’indice j d’un tableau se fait par
tableau[:,j]. Attention, les indices commencent à 0 et se terminent à m-1.La sélection de l’élément d’indice (i, j) d’un tableau se fait par
tableau[i, j]. Attention, les indices commencent à 0 et se terminent à N-1 (ou m-1).
"""
Ne pas oublier d'importer les bibliothèques scientifiques.
"""
"\nNe pas oublier d'importer les bibliothèques scientifiques.\n"
6.3. Test sur le système aux petits angles¶
6.3.1. Intégration numérique¶
Exercice 2 :
Vous devez :
Ecrire une fonction
sol_ptanglequi prend comme argument un tempstet un vecteur à deux élémentsY0et qui renvoie la solution analytique de l’équation du pendule simple aux petits angles avec comme conditions initiales les élements du vecteurY0à l’instantt. Cette fonction devra être vectorialisable c’est-à-dire qu’elle doit pouvoir s’appliquer correctement quetsoit un flottant ou un vecteur numpy.Utiliser la fonction
eulerpour résoudre numériquement le cas du pendule aux petits angles en supposant que le pendule par du point le plus bas avec une vitesse angulaire \(\omega_i = .1 rad/s\). Tracer alors sur le même graphique la solution analytique et la solution numérique pour les comparer. On réfléchira au choix du pas d’intégration et à l’intervale de temps \([0, t_f]\) d’étude.
Données utiles :
Pour sélectionner une colonne d’un tableau, on utilise la syntaxe
tableau[:, i]oùiest l’indice de la colonne (qui démarre à 0).
6.3.2. Détermination de la période.¶
Par la suite, le signal ne sera plus forcément sinusoïdal mais restera périodique, on va chercher à déterminer la période du signal obtenu par résolution numérique.
Méthode choisie : On va déterminer les temps \(t_{0i}\) successifs des points où la solution numérique pour \(\theta(t)\) s’annule (plus précisément les temps médians entre deux instants où le signal change de signe). Comme il n’y a que 2 annulations des angles dans une période (cf. étude des systèmes conservatifs), il suffira de compter le nombre \(N_0\) de 0. La période \(T\) du signal s’écrit alors :
Exercice 3 :
Ecrire une fonction
periodequi prend en arguments deux vecteurs de mêmes tailletketthetaket qui renvoie la période du signalthetaken considérant lestkcomme les temps associés.Tester votre fonction sur le signal intégré numériquement pour vérifier que vous trouvez bien la bonne période.
6.4. Anisochronisme des grandes oscillations.¶
On a observé théoriquement que la période des oscillations dépendaient aux fortes amplitudes des oscillations. Pour une amplitude “pas trop forte”, une approximation de l’intégrale trouvée en TD amène à la formule dite de Borda :
avec \(T_0\) la période propre aux petites oscillations
Exercice 4 :
Pour une liste d’amplitude angulaire entre 0 et \(\pi\) (non inclus) (5 valeurs), vous devez :
Procéder à l’intégration numérique de l’évolution de l’angle sans approximation pour l’amplitude considérée et la solution analytique aux petits angles
Tracer sur deux graphiques : l’évolution temporelle de \(\theta(t)\) et le portrait de phase \((\theta(t), \frac{\rm{d}\theta}{\rm{dt}}(t))\) du pendule our l’amplitude considérée.
Comparer à chaque fois la solution aux petits angles et la solution numérique trouvée.
Ecrire une fonction
periode_bordaqui renvoie pour une amplitudetheta0donnée la période approchée par la formule de BordaPour une liste d’amplitude angulaire entre \(\pi / 50\) et \(\pi\) (non inclus) (49 valeurs), vous devez déterminer pour chaque amplitude la période des oscillations pour le signal obtenu numériquement \(T_{num}(\theta_0)\) et par la formule de Borda \(T_{Borda}(\theta_0)\) puis représenter les deux périodes en fonction de l’amplitude.
Observer alors l’anisochronisme des oscillations
Comparer les résultats obtenus par l’intégrale et par intégration numérique de l’équation différentielle. A partir de quand doit-on considérer la formule de Borda non acceptable.
6.5. Trajectoire de diffusion¶
On s’intéresse au cas où le pendule part de sa position la plus basse avec une vitesse angulaire \(\omega_i\).
Exercice 5 :
Déterminer par le calcul la pulsation \(\omega_i\) qui permet d’atteindre l’angle \(\pi\) et de s’y arrêter. En théorie, quel temps met-on pour atteindre ce point ?
Intégrer l’équation du pendule avec la valeur de \(\omega_i\) précédente et observer l’allure de \(\theta(t)\) et \(\dot \theta(t)\). Commenter
Intégrer l’équation du pendule avec une valeur de \(\omega_i\) supérieure à celle trouvée précédemment et observer l’allure de \(\theta(t)\) et \(\dot \theta(t)\). Commenter.