Adloun

Non-isochronisme et « erreur circulaire » d'une horloge

Exercice de TD · niveau 2 · mécanique (MPSI), chapitre 8 — Mouvement d'un solide · D. Le pendule pesant

Énoncé

On reprend le pendule pesant, , avec et , lâché sans vitesse depuis l'amplitude .

1) Capacité numérique. Écrire un script Python qui intègre l'équation du mouvement et mesure la période en détectant les passages successifs de par zéro dans le même sens. Calculer pour , , , et .

2) Comparer à la formule de Borda, , établie au chapitre 3. Jusqu'où est-elle fiable ? Que devient quand ?

3) Une horloge à balancier est réglée pour battre juste quand l'amplitude vaut . En s'encrassant, l'amplitude tombe à . L'horloge avance-t-elle ou retarde-t-elle ? De combien de secondes par jour ?

4) On ajoute un frottement visqueux de moment , avec . Montrer que . Modifier le script pour suivre l'énergie mécanique et commenter sa décroissance.

Corrigé

La stratégie. On intègre numériquement avec une grande précision et l'on repère les instants où s'annule en décroissant ; leur écart est la période. On vérifie ainsi la formule de Borda du chapitre 3 et l'on mesure son domaine de validité.

1) Le script. On écrit le système du premier ordre , et l'on utilise la détection d'événements de solve_ivp : la fonction passage s'annule quand , et direction = -1 ne retient que les passages où décroît, un par période.

import numpy as np
from scipy.integrate import solve_ivp

w0 = 2.0                  # pulsation propre (rad/s)
T0 = 2*np.pi/w0

def champ(t, Y):
    theta, omega = Y
    return [omega, -w0**2*np.sin(theta)]

def passage(t, Y):        # theta = 0, en decroissant
    return Y[0]
passage.direction = -1

def periode(th0):
    sol = solve_ivp(champ, (0, 10*T0), [th0, 0.0],
                    events=passage, rtol=1e-11, atol=1e-12)
    tp = sol.t_events[0]  # un passage par periode
    return np.mean(np.diff(tp))

for th0 in (np.radians(5), 0.5, 1.0, 2.0, 3.0):
    r = periode(th0)/T0
    print(f"{th0:.3f} rad  T/T0 = {r:.5f}  Borda = {1+th0**2/16:.5f}")

Le script affiche :

0.087 rad  T/T0 = 1.00048  Borda = 1.00048
0.500 rad  T/T0 = 1.01585  Borda = 1.01562
1.000 rad  T/T0 = 1.06633  Borda = 1.06250
2.000 rad  T/T0 = 1.32890  Borda = 1.25000
3.000 rad  T/T0 = 2.57123  Borda = 1.56250

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, avec les autres exercices du chapitre et le tuteur qui guide sans donner la réponse.

Voir le corrigé complet

Gratuit : il suffit de créer un compte (e-mail, nom d'utilisateur, mot de passe, classe), et tu arrives directement sur le corrigé.

Le cours du chapitre · Les autres exercices du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.