Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
technique:integration_rk4 [2026/08/12 12:09] – Corrige deux formules : l espace fine TeX ressortait en virgule (CommonMark mange l antislash) Lepigeontechnique:integration_rk4 [2026/08/14 21:41] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 # L'intégration numérique par la méthode de Runge-Kutta d'ordre 4 (RK4) # L'intégration numérique par la méthode de Runge-Kutta d'ordre 4 (RK4)
  
-Les équations de la balistique — intérieure comme extérieure — n'admettent pas de solution analytique en forme close dès qu'on emploie un modèle réaliste : la traînée suit une table expérimentale fonction du nombre de Mach, l'air change de densité avec l'altitude, la poudre brûle selon une loi empirique. On les résout donc **numériquement**, pas de temps par pas de temps. L'algorithme employé pour cela sur Tireur.org est la **méthode de Runge-Kutta d'ordre 4**, abrégée **RK4**, due aux travaux de Carl Runge (1895) et Wilhelm Kutta (1901).+Les équations de la balistique — intérieure comme extérieure — n'admettent pas de solution analytique en forme close dès qu'on emploie un modèle réaliste : la traînée suit une table expérimentale fonction du nombre de Mach, l'air change de densité avec l'altitude, la poudre brûle selon une loi empirique. On les résout donc **numériquement**, pas de temps par pas de temps. L'algorithme employé pour cela sur Tireur.org est la **méthode de Runge-Kutta d'ordre 4**, abrégée **RK4**, due aux travaux de Carl Runge (1895) [6] et Wilhelm Kutta (1901) [3].
  
 Cette page part du problème lui-même, expose la méthode la plus élémentaire qui le résout — celle d'Euler — puis ce que RK4 y ajoute, et décrit enfin la façon dont l'algorithme est appliqué dans nos outils, et ce qui, chez eux, n'en relève pas. Aucune connaissance préalable en analyse numérique n'est supposée. Cette page part du problème lui-même, expose la méthode la plus élémentaire qui le résout — celle d'Euler — puis ce que RK4 y ajoute, et décrit enfin la façon dont l'algorithme est appliqué dans nos outils, et ce qui, chez eux, n'en relève pas. Aucune connaissance préalable en analyse numérique n'est supposée.
Ligne 14: Ligne 14:
 Toute la difficulté tient au fait que cette règle ne donne **jamais la position directement**. Elle ne donne que la *tendance* : de combien la vitesse est en train de changer, à cet instant précis, dans cet état précis. Et cette tendance change avec l'état — la traînée dépend de la vitesse, or la vitesse est précisément ce que la traînée modifie. Chacune des deux grandeurs est l'entrée de l'autre. Toute la difficulté tient au fait que cette règle ne donne **jamais la position directement**. Elle ne donne que la *tendance* : de combien la vitesse est en train de changer, à cet instant précis, dans cet état précis. Et cette tendance change avec l'état — la traînée dépend de la vitesse, or la vitesse est précisément ce que la traînée modifie. Chacune des deux grandeurs est l'entrée de l'autre.
  
-C'est ce que les mathématiques appellent une **équation différentielle** : une relation qui ne dit pas ce que vaut la quantité cherchée, mais à quelle vitesse elle varie. Pour des cas simples, on sait « remonter » de la variation à la quantité elle-même, une fois pour toutes, par une formule — c'est l'intégration au sens du lycée. La chute libre sans air en est l'exemple canonique : $y = -\frac{1}{2}gt^2$ donne la hauteur à n'importe quel instant, sans calcul intermédiaire.+C'est ce que les mathématiques appellent une **équation différentielle** : une relation qui ne dit pas ce que vaut la quantité cherchée, mais à quelle vitesse elle varie. Elle s'écrit toujours de la même façon :
  
-Dès que la traînée entre en scène, cette formule n'existe plus. Il reste alors une méthode dont personne ne peut nous priver : **avancer par petits pas**. On connaît l'état maintenant, donc on connaît la tendance maintenant ; on suppose qu'elle reste à peu près valable pendant un très court instant $\Delta t$ ; on en déduit l'état à $t + \Delta t$ ; et on recommence. Mille fois, dix mille fois, jusqu'à la cible. C'est exactement ce que fait un GPS de randonnée qui reconstitue un parcours à partir d'un cap et d'une vitesse relevés chaque seconde.+$$ \frac{dy}{dt} = f(t, y) $$ 
 + 
 +À gauche, la variation de l'état ; à droite, la **règle de changement** $f$, qui calcule cette variation à partir de l'instant $t$ et de l'état courant $y$. Cette écriture gouverne tout le reste de la page : $y$ y désignera le paquet « position et vitesse » du projectile, et $f$ le calcul des forces qui s'y appliquent. 
 + 
 +Le cas d'école est la chute libre sans air, dont la règle de changement ne dépend de rien : elle vaut $-g$ à tout instant. On sait alors « remonter » de la variation à la quantité elle-même, une fois pour toutes — c'est ce qu'on appelle **intégrer** l'équation : 
 + 
 +$$ \frac{dv}{dt} = -g \quad \Longrightarrow \quad v = -gt \quad \Longrightarrow \quad h = -\frac{1}{2}gt^2 $$ 
 + 
 +La formule obtenue donne la hauteur à n'importe quel instant, sans calcul intermédiaire. Ce qui met fin à ce confort, c'est que la vraie règle de changement **dépend de l'état** : $f$ réclame la vitesse pour calculer la traînée, et la traînée modifie la vitesse. Quelques cas de ce genre restent solubles à la main — on s'en servira plus bas comme étalon — mais aucune formule ne survit à un coefficient de traînée lu dans une table de mesures. 
 + 
 +Il reste alors une méthode dont personne ne peut nous priver : **avancer par petits pas**. On connaît l'état maintenant, donc on connaît la tendance maintenant ; on suppose qu'elle reste à peu près valable pendant un très court instant $\Delta t$ ; on en déduit l'état à $t + \Delta t$ ; et on recommence. Mille fois, dix mille fois, jusqu'à la cible. C'est exactement ce que fait un GPS de randonnée qui reconstitue un parcours à partir d'un cap et d'une vitesse relevés chaque seconde.
  
 Cette approche s'appelle l'**intégration numérique**. Elle ne donne pas une formule, elle donne une liste de points — et c'est bien assez pour dresser une table de chute. Tout le savoir-faire consiste alors à choisir *comment* franchir chaque petit pas : c'est là que se joue la différence entre la méthode d'Euler et RK4, et c'est l'objet de cette page. Cette approche s'appelle l'**intégration numérique**. Elle ne donne pas une formule, elle donne une liste de points — et c'est bien assez pour dresser une table de chute. Tout le savoir-faire consiste alors à choisir *comment* franchir chaque petit pas : c'est là que se joue la différence entre la méthode d'Euler et RK4, et c'est l'objet de cette page.
Ligne 92: Ligne 102:
 $$ y_{n+1} = y_n + \frac{\Delta t}{6} \left( k_1 + 2k_2 + 2k_3 + k_4 \right) $$ $$ y_{n+1} = y_n + \frac{\Delta t}{6} \left( k_1 + 2k_2 + 2k_3 + k_4 \right) $$
  
-Le poids double accordé à $k_2$ et $k_3$, les évaluations centrales, revient à privilégier le milieu du pas — c'est ce qui fait la précision de la formule. L'erreur commise sur un pas isolé décroît comme $\Delta t^5$ ; c'est son accumulation sur l'ensemble des pas d'une trajectoire qui ramène la méthode à l'ordre 4.+Le poids double accordé à $k_2$ et $k_3$, les évaluations centrales, revient à privilégier le milieu du pas — c'est ce qui fait la précision de la formule. Elle n'est d'ailleurs pas la seule possible : le système d'équations qui définit une méthode de Runge-Kutta jusqu'à l'ordre 4 est **sous-déterminé**, une des constantes pouvant être choisie arbitrairement, si bien que plusieurs formules d'ordre 4 coexistent [1]. Celle donnée ici est la formule classique de Kutta [3] ; la variante de Gill en est une autre, longtemps préférée pour son moindre encombrement en mémoire. L'erreur commise sur un pas isolé décroît comme $\Delta t^5$ ; c'est son accumulation sur l'ensemble des pas d'une trajectoire qui ramène la méthode à l'ordre 4.
  
 ![Panneau A : cinq pas d'Euler de 0,1 s décrochent visiblement de la solution exacte, toujours du même côté. Panneau B : dans le tout premier pas, les quatre pentes sondées par RK4 — k₂ et k₃ sont prises au même instant, sur deux estimations différentes de l'état — et le point d'arrivée, confondu avec la courbe exacte.](technique:euler_vs_rk4.svg?640) ![Panneau A : cinq pas d'Euler de 0,1 s décrochent visiblement de la solution exacte, toujours du même côté. Panneau B : dans le tout premier pas, les quatre pentes sondées par RK4 — k₂ et k₃ sont prises au même instant, sur deux estimations différentes de l'état — et le point d'arrivée, confondu avec la courbe exacte.](technique:euler_vs_rk4.svg?640)
Ligne 121: Ligne 131:
 Nos solveurs avancent à **pas constant**, choisi une fois pour toutes : $\Delta t = 0{,}0005$ s pour la trajectoire extérieure, 1 microseconde pour la simulation intérieure, où tout se joue en une à deux millisecondes. Nos solveurs avancent à **pas constant**, choisi une fois pour toutes : $\Delta t = 0{,}0005$ s pour la trajectoire extérieure, 1 microseconde pour la simulation intérieure, où tout se joue en une à deux millisecondes.
  
-Les intégrateurs à **pas adaptatif** — Runge-Kutta-Fehlberg, Dormand-Prince, ceux que l'on trouve derrière un `ode45` — estiment l'erreur à chaque pas en comparant deux formules d'ordres différents, puis resserrent ou relâchent $\Delta t$ en conséquence. Sur une trajectoire, ils raccourciraient le pas au passage transsonique et l'allongeraient sur la fin de course. À pas fixe, la marge se prend en amont : on retient un pas assez court pour la phase la plus raide et on le garde partout. C'est plus simple, un peu plus coûteux en calcul, et suffisant tant que le pas reste petit devant les temps caractéristiques du problème.+Les intégrateurs à **pas adaptatif** — Runge-Kutta-Fehlberg, Dormand-Prince, ceux que l'on trouve derrière un `ode45` — estiment l'erreur à chaque pas en comparant deux formules d'ordres différents, puis resserrent ou relâchent $\Delta t$ en conséquence [2]. Sur une trajectoire, ils raccourciraient le pas au passage transsonique et l'allongeraient sur la fin de course. À pas fixe, la marge se prend en amont : on retient un pas assez court pour la phase la plus raide et on le garde partout. C'est plus simple, un peu plus coûteux en calcul, et suffisant tant que le pas reste petit devant les temps caractéristiques du problème.
  
 ## Application vectorielle ## Application vectorielle
Ligne 138: Ligne 148:
 ### Et le 6-DOF ? ### Et le 6-DOF ?
  
-Un modèle **6-DOF** suit en plus l'attitude du projectile : son vecteur d'état compte douze variables — trois de position, trois de vitesse, trois d'orientation et trois de vitesse angulaire. Il ne réclame plus un simple coefficient de traînée mais un jeu complet de coefficients aérodynamiques : portance, moment de tangage, amortissement en tangage et en roulis, effet Magnus. Ces coefficients se mesurent au tunnel balistique ou en soufflerie, ou s'estiment par des codes comme McDrag et McGyro, dus à Robert L. McCoy.+Un modèle **6-DOF** suit en plus l'attitude du projectile : son vecteur d'état compte douze variables — trois de position, trois de vitesse, trois d'orientation et trois de vitesse angulaire. Il ne réclame plus un simple coefficient de traînée mais un jeu complet de coefficients aérodynamiques : portance, moment de tangage, amortissement en tangage et en roulis, effet Magnus. Ce jeu complet s'obtient par réduction de tirs en tunnel balistique ou d'essais en soufflerie. Les codes semi-empiriques que les tireurs connaissent de nom n'en fournissent chacun qu'une pièce : **McDrag**, publié par Robert L. McCoy en 1981 [4], estime le seul coefficient de traînée à incidence nulle, et **McGyro** le facteur de stabilité gyroscopique et le pas de rayure nécessaire. Ni l'un ni l'autre ne rend la portance, les amortissements ou l'effet Magnus.
  
-Ils ne sont publiés pour presque aucune balle du commerce : c'est ce qui cantonne le 6-DOF à l'étude de la stabilité et de la dispersion plutôt qu'à la prévision courante de trajectoire, où un modèle point-masse correctement renseigné fait pratiquement aussi bien. L'algorithme d'intégration, lui, ne change pas : RK4 s'applique à un vecteur de douze composantes exactement comme à un vecteur de six.+Ils ne sont publiés pour presque aucune balle du commerce. Mais la raison de fond tient au vol lui-même, et McCoy l'énonce sans détour [5] : **le 6-DOF n'est pas nécessaire au travail courant de balistique extérieure**. Tant que l'incidence totale reste faible sur tout le parcours, un modèle point-masse est « souvent suffisamment exact à toutes fins pratiques ». Le 6-DOF s'impose dès que le projectile vole à **forte incidence** — un obus tiré à 70° de site, une balle lâchée en travers du vent relatif d'un avion. En tir tendu, la .308 de 168 gr qu'il prend en exemple ne dépasse jamais 5° de tangage-lacet : le cas ne relève pas du 6-DOF. 
 + 
 +L'intégrateur, lui, reste de la même famille sans être identique. Le programme 6-DOF du laboratoire de recherche balistique américain emploie la variante de Gill [5], avec un pas de temps **variable**, réévalué en continu sur la période du cycle de lacet ; une cinquantaine de pas par cycle sont nécessaires pour obtenir quatre à cinq chiffres significatifs. Le contrôle d'exactitude y est élégant : l'orientation étant portée par un vecteur unitaire, il suffit de vérifier à chaque pas que son produit scalaire avec lui-même vaut toujours 1 — un écart de plus de $10^{-5}$ signale un pas trop long.
  
 ## Quel outil intègre quoi ## Quel outil intègre quoi
Ligne 152: Ligne 164:
 ## Références ## Références
  
-1. C. Runge — //Über die numerische Auflösung von Differentialgleichungen//, Mathematische Annalen 46, 1895. +Par ordre alphabétique d'auteur, puis chronologique pour un même auteur ; les renvois **[n]** dans le texte pointent vers cette liste. 
-2. W. Kutta — //Beitrag zur näherungsweisen Integration totaler Differentialgleichungen//, 1901 (formule classique d'ordre 4). + 
-3. J. C. Butcher — //Numerical Methods for Ordinary Differential Equations//, Wiley, 3ᵉ éd., 2016. +1. Butcher, J. C. — //Numerical Methods for Ordinary Differential Equations//, Wiley, 3ᵉ éd., 2016. Conditions d'ordre, sous-détermination des méthodes d'ordre 4 et variante de Gill. 
-4. E. Hairer, S. P. Nørsett, G. Wanner — //Solving Ordinary Differential Equations I: Nonstiff Problems//, Springer, 2ᵉ éd., 1993. +2. Hairer, E., Nørsett, S. P. & Wanner, G. — //Solving Ordinary Differential Equations I: Nonstiff Problems//, Springer, 2ᵉ éd., 1993 (Springer Series in Computational Mathematics, 8). Méthodes à pas adaptatif et estimation d'erreur. 
-5. R. L. McCoy — //Modern Exterior Ballistics//, Schiffer, 2ᵉ éd., 2012 (modèles point-masse et 6-DOF, codes McDrag et McGyro).+3. Kutta, W. — //Beitrag zur näherungsweisen Integration totaler Differentialgleichungen//, Zeitschrift für Mathematik und Physik **46** (1901), p. 435-453. La formule classique d'ordre 4, celle que nos solveurs emploient. 
 +4. McCoy, R. L. — //MCDRAG — A Computer Program for Estimating the Drag Coefficients of Projectiles//, Ballistic Research Laboratories, rapport technique ARBRL-TR-02293, 1981. 
 +5. McCoy, R. L. — //Modern Exterior Ballistics: The Launch and Flight Dynamics of Symmetric Projectiles//, Schiffer, 2ᵉ éd., 2012. Modèles point-masse et 6-DOF, et l'intégrateur du programme 6-DOF du BRL. 
 +6. Runge, C. — //Ueber die numerische Auflösung von Differentialgleichungen//, Mathematische Annalen **46** (1895), p. 167-178.
  
 ## Voir aussi ## Voir aussi
Ligne 165: Ligne 180:
 - [Calculateur balistique](https://www.tireur.org/calculateur-balistique.php) — le solveur 3-DOF en ligne - [Calculateur balistique](https://www.tireur.org/calculateur-balistique.php) — le solveur 3-DOF en ligne
 - [Consolidated Competition Ballistics (PDF)](https://www.tireur.org/BallisticsGuide/doc/ballistics_manual.pdf) — la formulation mathématique complète du solveur - [Consolidated Competition Ballistics (PDF)](https://www.tireur.org/BallisticsGuide/doc/ballistics_manual.pdf) — la formulation mathématique complète du solveur
 +
 +//**Page vérifiée.** Le code des trois outils cités a été relu et le solveur 3-DOF ré-exécuté le 2026-08-12 : [[verification:technique:integration_rk4|fiche]].//
  
technique/integration_rk4.1786536599.txt.gz · Dernière modification : de Lepigeon