Writing /var/www/tireur.org/wiki/data/meta/verification/technique/integration_rk4.meta failed
Unable to save metadata file. Hint: disk full; file permissions; safe_mode setting.
Vous êtes ici : start » verification » technique » integration_rk4

**Ceci est une ancienne révision du document !**

Vérification — L'intégration numérique et la méthode RK4

Fiche de traçabilité de l'article L'intégration numérique par la méthode de Runge-Kutta d'ordre 4. Voir la méthode.

Page neuve, contrôlée le jour de sa mise en ligne puis à nouveau après son développement du 2026-08-12. Sa particularité : elle parle de nos propres outils. La source à confronter n'est donc pas une publication, c'est le code qui tourne sur le site — et il a le bon goût de ne pas se souvenir de travers.

Ce qui a été fait

  • Les quatre fichiers concernés relus : BallisticsGuide/src/CompetitionBallistics.js (solveur 3-DOF), reloading/tireur_reloaded/legacy/grt_solver.js (simulateur 0D), energy_model.js et velocity_model.js (estimateur servi en production).
  • Le solveur 3-DOF du site ré-exécuté sous Node à six pas de temps différents, pour mesurer si le pas retenu est assez court — la page l'affirmait sans l'avoir vérifié.
  • Tous les chiffres publiés recalculés sur un modèle à solution exacte connue, et le schéma engendré par ce même calcul.
  • La page servie ouverte dans un navigateur et mesurée, pas seulement relue au source.
  • Les cinq références bibliographiques confrontées aux notices des éditeurs et des dépôts numérisés — contrôle ajouté le 2026-08-12, après que la première version de cette fiche les eut déclarées non vérifiées.

La correction de fond : l'article attribuait RK4 à un outil qui n'intègre rien

La première version affirmait que la balistique intérieure du site était résolue en RK4. C'est faux pour l'outil réellement servi.

La page de l'estimateur ne charge que energy_model.js et velocity_model.js. Ni l'un ni l'autre ne contient de boucle en temps — aucune occurrence de pas de temps, de $k_1$, de Runge ou d'intégration dans les deux fichiers réunis. L'estimateur repose sur un modèle algébrique énergie-efficacité, qui relie directement charge, énergie de bouche et pression sans jamais parcourir le temps.

RK4 existe bien du côté intérieur, mais dans legacy/grt_solver.js — le simulateur thermodynamique 0D, avec son pas de 1 µs — et ce solveur-là n'est pas celui qu'on sert.

L'enjeu n'est pas cosmétique : un lecteur aurait porté au crédit de l'intégrateur une précision qui n'en relève pas, et cherché les limites de l'estimateur du mauvais côté. Elles tiennent à son modèle physique. L'article porte désormais un encadré qui dit lequel des outils intègre quoi.

Ressorti intact : tout ce qui décrit l'algorithme

Affirmation de la page Ce que dit le code
Pas extérieur $\Delta t = 0{,}0005$ s dt: 0.0005
Pas intérieur de 1 µs const dt = 1.0e-6
Vecteur d'état à six composantes [x, y, z, vx, vy, vz]
Pondération $\frac{\Delta t}{6}(k_1 + 2k_2 + 2k_3 + k_4)$ identique, dans les deux solveurs
$k_2$ et $k_3$ au même instant s2 et s3 construits tous deux avec 0.5 * dt
Traînée calculée sur la vitesse relative à l'air vrx = _vx - wx, etc.
Gravité projetée selon l'angle de site gAlong / gPerp
Coriolis intégré à chaque pas, en option dans derivs(), sous enableCoriolis
Dérive gyroscopique ajoutée après l'intégration boucle post-résolution sur windageM

Justes également, et démontrables sans rien ouvrir : l'ordre 1 d'Euler, l'ordre 4 de RK4, l'erreur locale en $\Delta t^5$, les douze variables d'état d'un modèle 6-DOF.

Le pas de temps du solveur, cette fois mesuré

L'article soutenait qu'à 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. Affirmation invérifiée tant qu'on ne l'a pas éprouvée. Le solveur a donc été relancé sur une .308 175 gr (G7 0,243, 2 600 fps, zéro à 100 yd, vent de 10 mph), l'état étant comparé à instant fixe — 1,2 s de vol, soit environ 720 m — pour ne pas mélanger l'erreur d'intégration à celle de l'échantillonnage.

Pas de temps Écart sur la chute Écart sur la distance Écart sur la dérive
0,002 s 2,5 mm 2,7 × 10⁻³ mm 1,4 × 10⁻⁴ mm
0,0005 s (production) 0,40 mm 4,2 × 10⁻⁴ mm 2,3 × 10⁻⁵ mm
0,000125 s 0,14 mm 1,4 × 10⁻⁴ mm 7,7 × 10⁻⁶ mm

Écarts pris sur une exécution de référence à $\Delta t = 10^{-5}$ s. Le pas de production est amplement suffisant : le quadrupler ne déplacerait le point d'impact que de deux millimètres et demi à 720 m — un centième de MOA, très en deçà de ce qu'un tireur peut constater.

Ce que la mesure a révélé en passant. Ce résidu n'est pas celui de l'intégration de la trajectoire. Distance et dérive s'accordent à $10^{-4}$ mm près pendant que la chute bouge de 0,4 mm : trois ordres de grandeur d'écart entre des grandeurs issues du même pas de temps.

La chute est la seule des trois que fixe l'angle de zéro, calculé par une recherche séparée dont la boucle s'arrête au premier pas franchissant la distance de zérotage. L'angle trouvé est rigoureusement identique pour $\Delta t$ = 0,001, 0,0005 et 0,00025 s, puis bouge aux pas plus fins — signature d'une quantification, pas d'une convergence.

Ce n'est pas un défaut : l'effet est submillimétrique à 720 m, sans portée pour un tireur. Mais c'est là que loge le résidu, et non dans RK4. Conséquence méthodologique : l'ordre 4 ne peut pas se mesurer sur ce solveur — la recherche d'angle plafonne avant qu'on n'atteigne le régime asymptotique.

Les chiffres du banc d'essai : d'où ils viennent

Les valeurs chiffrées de la page ne sortent pas du solveur du site. Elles ont été calculées pour elle sur un cas volontairement simplifié — traînée quadratique pure, coefficient de traînée figé — précisément parce que ce cas-là possède une solution exacte, $v(t) = v_0 / (1 + k v_0 t)$, à laquelle comparer chaque méthode. Sans étalon, comparer Euler à RK4 ne dit rien de leur justesse : c'est l'enseignement de la fiche du tir en pente, où deux approximations se départageaient sans jamais convoquer l'arbitre.

Le coefficient $k = 9{,}08 \times 10^{-4}$ m⁻¹ se dérive de $\rho = 1{,}225$ kg/m³, $A = 4{,}803 \times 10^{-5}$ m² et $m = 11{,}34$ g. Toutes les valeurs des deux tableaux ont été reproduites par un script indépendant, et le schéma est engendré par scripts/gen_rk4_figure.py depuis le même calcul : aucun point n'y est dessiné à la main, y compris les quatre pentes $k_1$ à $k_4$ du second panneau.

Le $C_d$ de 0,35 est une convention de l'exercice, pas une mesure de la .308 175 gr. Il n'est invoqué à aucun moment comme une donnée balistique : la seule chose qui lui est demandée est de produire une décélération de bouche plausible — 581 m/s², près de 59 g — ce qu'il fait. La page le dit, et c'est ce qui autorise le reste.

Corrections d'énoncé

  • « Mathématiquement impossible » pour la résolution analytique : faux tel quel. Des solutions existent pour des lois de traînée simples, et l'artillerie a longtemps vécu sur des approximations de ce type. Ce qui n'admet pas de forme close, c'est le problème avec une table de traînée mesurée. Reformulé.
  • « Quatre points différents » : RK4 fait quatre évaluations réparties sur trois instants, $k_2$ et $k_3$ tombant au même milieu d'intervalle sur deux estimations différentes de l'état. La page le dit maintenant explicitement, parce que c'est l'erreur de lecture la plus courante sur cette méthode.
  • Le vecteur d'état 6-DOF était mal décrit ; il compte douze variables.
  • « Coefficients aérodynamiques McCoy » : McDrag et McGyro ne sont pas des coefficients mais des codes de calcul.
  • Pas de temps donné à 0,001 s au lieu de 0,0005 s, et point décimal au lieu de la virgule.

Les références, confrontées

Le premier contrôle les avait déclarées non vérifiées — situation qui produit précisément des notices plausibles et fausses. Elles ont été reprises une à une le 2026-08-12.

Référence publiée Résultat
Runge, Mathematische Annalen 46, 1895 exacte ; le titre imprimé porte « Ueber », et la pagination 167-178 a été ajoutée
Kutta, 1901 titre et année exacts, mais la notice était amputée de son journal
Butcher, Wiley, 3ᵉ éd., 2016 exacte
Hairer, Nørsett, Wanner, Springer, 2ᵉ éd., 1993 exacte ; série et numéro de collection ajoutés
McCoy, Schiffer, 2ᵉ éd., 2012 exacte ; sous-titre rétabli

Le piège que ce contrôle pouvait tendre était bien là, sous sa forme la plus banale : les deux articles fondateurs paraissent l'un et l'autre dans un volume 46 — Mathematische Annalen pour Runge, Zeitschrift für Mathematik und Physik pour Kutta. Une notice qui aurait fusionné les deux n'aurait présenté aucune anomalie apparente.

L'erreur n'était pas dans la bibliographie, elle était dans le texte

En vérifiant l'attribution des codes, une affirmation du corps de l'article est tombée. La page écrivait que le jeu complet de coefficients aérodynamiques d'un modèle 6-DOF — portance, moment de tangage, amortissements en tangage et en roulis, effet Magnus — « s'estime par des codes comme McDrag et McGyro ».

C'est faux, et de loin :

  • McDrag (rapport ARBRL-TR-02293 du Ballistic Research Laboratory, février 1981) estime le seul coefficient de traînée à incidence nulle, à partir de la géométrie du projectile — erreur annoncée de 3 % en supersonique, 11 % en transsonique, 6 % en subsonique.
  • McGyro (1986) estime le facteur de stabilité gyroscopique et le pas de rayure nécessaire, sur les mêmes entrées augmentées de la densité du projectile et du pas.

Ni l'un ni l'autre ne rend la portance, les amortissements ou l'effet Magnus. L'attribution à Robert L. McCoy, elle, était juste : c'est la portée des deux codes qui était gonflée. Le glissement est facile — ce sont les deux seuls noms de codes qui circulent chez les tireurs, et on les suppose donc capables de tout. La page énonce désormais ce que chacun calcule, et rappelle que le jeu complet s'obtient par réduction de tirs en tunnel balistique ou d'essais en soufflerie.

Ce que ce contrôle enseigne. La vérification d'une note bibliographique n'a pas corrigé la note : elle a corrigé la phrase que la note cautionnait. Les cinq références étaient bonnes, l'affirmation qu'elles appuyaient ne l'était pas. Contrôler une bibliographie, ce n'est donc pas seulement vérifier qu'un ouvrage existe — c'est vérifier qu'il dit ce qu'on lui fait dire.

Un défaut de rendu, invisible au source

Deux formules de l'encadré du banc d'essai s'affichaient avec une virgule parasite — « $-k, v^2$ », « $1 + k, v_0, t$ ». L'espace fine TeX \, y était écrite ; l'analyseur Markdown mange l'antislash avant que le moteur mathématique ne lise la ligne, et il ne reste que la ponctuation.

C'est la même famille que le % évaporé de la page du tir en pente, à ceci près que celui-ci laisse une trace visible au lieu de tronquer silencieusement. Ni le linter ni la règle de rendu tronqué ne le voient : il n'apparaît qu'en regardant la page servie. Corrigé, et vérifié à l'écran après correction.

Ce qui n'a pas été vérifié

  • La notice de McGyro n'a pas été ouverte. Le rapport de McDrag, lui, a été lu sur la fiche du dépôt de défense qui l'archive — numéro, laboratoire, date et objet du programme viennent de là. Pour McGyro, le fichier de description publié par un site de balistique répond 404 : ce qui est écrit plus haut provient de deux relevés secondaires concordants, non de la source. La conclusion ne s'en trouve pas fragilisée — elle tient déjà pour McDrag seul —, mais l'année 1986 et la liste exacte des sorties restent à confirmer.
  • Le contenu du traité de balistique extérieure cité n'a pas été lu. Sa notice est exacte et la portée des deux codes est désormais établie, mais aucun exemplaire n'a pu être ouvert — la recherche sur les disques du serveur, refaite le 2026-08-12, n'a rien donné. Le chapitre 6-DOF reste donc à confronter à la source si le PDF devient disponible.
  • « Un modèle point-masse correctement renseigné fait pratiquement aussi bien » que le 6-DOF pour la prévision courante : jugement repris de la littérature, non mesuré ici — le site n'a pas de solveur 6-DOF pour l'arbitrer.
  • Le pas de 1 µs du simulateur intérieur n'a pas subi le test de convergence appliqué au solveur extérieur.
  • L'ordre 4 n'a été mesuré que sur le modèle jouet. Sur le solveur du site, la mesure bute sur la recherche d'angle de zéro (voir plus haut) avant d'atteindre le régime où l'ordre se lit.

Voir aussi

verification/technique/integration_rk4.1786539933.txt.gz · Dernière modification : de Lepigeon