Dans cet article, nous abordons les derniers aspects de la balistique externe en examinant les sixième et septième cas. Nous prendrons en compte la diminution de la gravité en fonction de l’altitude, ainsi que la courbure de la Terre.
Sixième cas
Septième cas. Début.
Septième cas. Reformulation du problème
Septième cas. Fin.
Nous allons mettre en pratique tout ce qui précède sous Python :
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
g0 = 9.80665 # m/s² — gravité au niveau de la mer
RE = 6371000 # m — rayon de la Terre
rho0 = 1.225 # kg/m³ — densité de l'air au niveau de la mer
H = 8000 # m — hauteur d'échelle
Vitesse du son en fonction de l'altitude (modèle simplifié)
def sound_speed(h):
if h < 11000: # Troposphère
return 340 - 0.0065 * h
else: # Stratosphère et au-delà
return 295
Paramètres du projectile
m = 2000 # kg — masse
S = 0.3 # m² — surface de section
Vitesse et angle initiaux
v0 = 4000 # m/s
theta0 = 50 # degrés
def cx(M):
"""Coefficient de traînée selon la loi de 1943"""
if M < 0.8:
return 0.15 + 0.25 M
elif M < 1.2:
return 0.4 - 0.3 (M - 0.8)
elif M<4:
return 0.28 + 0.05 * (M - 1.2)
else:
return 1
def rho(h):
"""Densité de l'air avec décroissance exponentielle"""
return rho0 * np.exp(-h / H)
def equations(t, state):
"""
Système des équations de mouvement
state = [r, phi, vr, vphi]
r — distance au centre de la Terre
phi — angle polaire
vr — vitesse radiale
vphi — vitesse azimutale
"""
r, phi, vr, vphi = state
h = r - RE # hauteur au-dessus de la surface
# Vérification des limites de calcul
if h < -100: # projectile sous terre
return [0, 0, 0, 0]
if h > 1e6: # hauteur supérieure à 1000 km — résistance négligeable
# Équations simplifiées sans résistance
dvr_dt = -g(h) + vphi**2 / r
dvphi_dt = -vr * vphi / r
return [vr, vphi / r, dvr_dt, dvphi_dt]
# Vitesse et nombre de Mach
v = np.sqrt(vr**2 + vphi**2)
if v == 0:
M = 0
else:
a = sound_speed(h)
M = v / a
# Densité de l'air et coefficient de traînée
rho_h = rho(h)
cx_val = cx(M)
# Forces de traînée
F_drag = 0.5 * rho_h * v**2 * S * cx_val
Fr = -F_drag * vr / v # composante radiale
Fphi = -F_drag * vphi / v # composante azimutale
# Accélérations
dvr_dt = Fr / m - g(h) + vphi**2 / r
dvphi_dt = Fphi / m - vr * vphi / r
return [vr, vphi / r, dvr_dt, dvphi_dt]
def event_ground(t, state):
"""Événement — atteinte de la surface de la Terre"""
r = state[0]
return r - RE # zéro lorsque r = RE
event_ground.terminal = True # arrête l'intégration
event_ground.direction = -1 # uniquement lors de la diminution de r
Conditions initiales
r0 = RE # distance initiale au centre de la Terre
phi0 = 0 # angle initial
vr0 = v0 np.sin(np.radians(theta0)) # vitesse radiale
vphi0 = v0 np.cos(np.radians(theta0)) # vitesse azimutale
initial_state = [r0, phi0, vr0, vphi0]
Intervalle de temps (temps maximum)
t_span = (0, 1000) # 0–1000 secondes (suffisant pour la plupart des cas)
plt.subplot(2, 2, 4)
plt.plot(t, M_history, label="Nombre de Mach", linewidth=2, color="red")
plt.xlabel('Temps, s')
plt.ylabel('Nombre de Mach')
plt.title('Nombre de Mach de vol')
plt.grid(True, alpha=0.3)
plt.legend()
plt.tight_layout()
plt.show()
Les résultats de la simulation sont illustrés ci-dessous :
Graphiques
En conclusion, la problématique initiale est résolue. Une modélisation mathématique réaliste a été élaborée, prenant en compte de nombreux paramètres et facteurs influençant le mouvement d’un corps dans l’atmosphère terrestre. Un algorithme a été proposé pour résoudre ce modèle avec une grande précision dans un temps raisonnable.
Points à retenir
La gravité diminue avec l’altitude, impactant le comportement du projectile.
La courbure de la Terre doit être intégrée pour des trajectoires longues.
Les variations de la densité de l’air influencent la traînée sur le projectile.
Le nombre de Mach varie au cours du vol, affectant ainsi le coefficient de traînée.
Le modèle mathématique proposé est robuste pour simuler des cas variés en balistique.
En tant que passionné de balistique, je ne peux m’empêcher d’admirer la complexité de ces phénomènes. L’importance de la modélisation mathématique devient cruciale pour comprendre le mouvement des projectiles dans notre atmosphère. Quelles nouvelles applications pourrions-nous envisager, allant des simples projets éducatifs à des implications militaires avancées ? La discussion est ouverte, et vos réflexions pourraient nous mener à des découvertes passionnantes.