Adloun

mécanique 2 : référentiels non galiléens et fluides (PC) · Chapitre 2 · Application directe du cours

Tir vertical et force de Coriolis, en Python

Dynamique dans un référentiel non galiléen · niveau 2

Énoncé

À la latitude , on tire depuis le sol, verticalement vers le haut, un projectile de vitesse initiale ; on néglige les frottements et l'on suppose uniforme (, ).

  • Montrer, au premier ordre en , que le projectile retombe à l'ouest du point de tir, à la distance .
  • Écrire un programme Python qui intègre le PFD dans le référentiel terrestre par la méthode d'Euler semi-implicite et donne le point de chute, pour , et . Comparer à la formule.
  • Comparer à la déviation d'un corps lâché sans vitesse du sommet de la trajectoire.

Corrigé

  • À l'ordre zéro, , et la force de Coriolis par unité de masse vaut (la composante verticale de , parallèle à la vitesse, ne donne rien). D'où , puis, avec des conditions initiales nulles, . Au retour au sol, :

le projectile retombe à l'ouest. À la montée, la vitesse est vers le haut et la force de Coriolis pousse vers l'ouest ; à la descente, elle pousse vers l'est mais n'annule pas la vitesse vers l'ouest acquise.

  • Le programme (Euler semi-implicite : la vitesse d'abord, puis la position avec la nouvelle vitesse ; le passage au sol est interpolé) :

import numpy as np

g, Omega = 9.81, 7.29e-5
lam = np.radians(45)
# vecteur rotation dans la base locale (est, nord, haut)
Om = Omega * np.array([0.0, np.cos(lam), np.sin(lam)])

def tir(v0, dt=1e-3):
    """Point de chute (est, nord, haut) d'un tir vertical."""
    r = np.zeros(3)
    v = np.array([0.0, 0.0, v0])
    while True:
        # PFD non galileen
        a = np.array([0.0, 0.0, -g]) - 2.0 * np.cross(Om, v)
        v = v + a * dt              # Euler semi-implicite : la vitesse,
        r_new = r + v * dt          # puis la position avec la nouvelle vitesse
        if r_new[2] < 0.0:          # passage au sol, interpole lineairement
            s = r[2] / (r[2] - r_new[2])
            return r + s * (r_new - r)
        r = r_new

for v0 in (25.0, 50.0, 100.0):
    x, y, _ = tir(v0)
    x_th = -4.0 / 3.0 * Omega * np.cos(lam) * v0**3 / g**2
    print(f"v0 = {v0:3.0f} m/s : est {100*x:7.2f} cm (formule {100*x_th:7.2f} cm),"
          f" nord {1e3*y:6.3f} mm")

Il affiche , et vers l'est, c'est-à-dire vers l'ouest, en accord avec la formule à mieux que près ; la loi en se lit sur les rapports ( d'une ligne à l'autre). Le déplacement nord-sud, du second ordre, reste inférieur au millimètre.

  • Le sommet est à pour . Un corps lâché de là dévie de vers l'est, soit exactement le quart de : le tir vertical retombe quatre fois plus loin, et du côté opposé.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →