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

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
verification:technique:integration_rk4 [2026/08/12 12:35] – Fiche de verification de la page RK4 : code des trois outils relu, solveur 3-DOF re-execute a six pas de temps Lepigeonverification:technique:integration_rk4 [2026/08/12 18:26] (Version actuelle) – Suite : le solveur 6-DOF passe en RK4 ; le defaut n etait pas un ordre de trop mais une divergence Lepigeon
Ligne 11: Ligne 11:
 * Tous les chiffres publiés recalculés sur un modèle à solution exacte connue, et le schéma engendré par ce même calcul. * 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. * 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 correction de fond : l'article attribuait RK4 à un outil qui n'intègre rien
Ligne 75: Ligne 76:
 * « **Coefficients aérodynamiques McCoy** » : McDrag et McGyro ne sont pas des coefficients mais des **codes de calcul**. * « **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. * **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.
 +
 +<WRAP round important>
 +**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.
 +</WRAP>
 +
 +## Le traité a été ouvert, et il a corrigé la page
 +
 +Le 2026-08-12, en fin de contrôle, un exemplaire du traité de balistique extérieure cité en référence a été mis à disposition. Trois points restés en suspens se règlent, et un quatrième est tombé.
 +
 +**Ce qu'il confirme.** La formule de RK4 publiée sur la page est **exactement** celle que le traité donne en (9.35) — mêmes coefficients, mêmes arguments —, et il l'attribue lui aussi à Kutta. Le chapitre consacré au 6-DOF confirme la composition à douze variables d'état, la sensibilité du résultat à la qualité des coefficients d'entrée, et jusqu'à la référence de MCDRAG, que l'auteur cite dans sa propre bibliographie sous le numéro ARBRL-TR-02293. Il rapporte au passage que la méthode d'Euler a servi à résoudre les premières trajectoires point-masse.
 +
 +**Ce qu'il corrige.** La page écrivait que la rareté des coefficients publiés « cantonne le 6-DOF à l'étude de la stabilité et de la dispersion plutôt qu'à la prévision courante de trajectoire ». Le critère réel n'est pas celui-là : c'est l'**incidence**. Tant qu'elle reste faible sur tout le parcours, un point-masse suffit « à toutes fins pratiques » ; le 6-DOF s'impose au vol à forte incidence — obus à 70° de site, projectile lâché en travers du vent relatif. Un tir tendu de .308 n'y entre pas, l'exemple du traité ne dépassant jamais 5° de tangage-lacet. Le jugement « un point-masse bien renseigné fait pratiquement aussi bien », que la fiche donnait pour non mesuré, est donc **confirmé à la source** — mais assorti d'une condition que la page n'énonçait pas.
 +
 +**Ce qu'il ajoute.** Deux précisions d'exactitude sont entrées dans l'article :
 +
 +* le système d'équations qui définit une méthode de Runge-Kutta jusqu'à l'ordre 4 est **sous-déterminé**. Plusieurs formules d'ordre 4 coexistent donc ; celle de la page est la formule classique de Kutta, la variante de Gill en est une autre. Écrire « la » formule de RK4 était une simplification ;
 +* le programme 6-DOF du laboratoire qui a produit ces travaux n'intègre **pas** à pas fixe : il emploie la variante de Gill avec un pas variable, réévalué sur la période du cycle de lacet, à raison d'une cinquantaine de pas par cycle. Son contrôle d'exactitude vaut d'être connu — l'orientation étant portée par un vecteur unitaire, on vérifie à chaque pas que son produit scalaire avec lui-même vaut 1, et un écart de plus de $10^{-5}$ signale un pas trop long. La page affirmait que « l'algorithme d'intégration, lui, ne change pas » du 3-DOF au 6-DOF : c'était faux dans le détail.
 +
 +<WRAP round important>
 +**McGyro reste introuvable.** Le fichier de description publié par un site de balistique répond 404, pour moi comme pour le propriétaire du site ; le dépôt de rapports de défense qui archive MCDRAG était en maintenance ; et — résultat le plus parlant — **le traité de référence, dans son édition la plus récente, ne mentionne McGyro nulle part**. Un dépouillement du texte intégral ne rend aucune occurrence, alors qu'il en rend trois pour MCDRAG. La page n'affirme donc plus de millésime pour McGyro, seulement ce qu'il calcule, établi sur deux relevés secondaires concordants.
 +</WRAP>
 +
 +## Le site a bien un solveur 6-DOF — et sa notice ment
 +
 +Cette fiche affirmait que « le site n'a pas de solveur 6-DOF pour l'arbitrer par le calcul ». **C'est faux**, et l'erreur est de ma main : j'avais relu le portage JavaScript servi aux visiteurs, où le 6-DOF est absent, et j'en avais conclu qu'il l'était partout. La bibliothèque Julia dont ce portage est tiré contient un module dédié — `SixDOF`, dans `BallisticsGuide/src/CompetitionBallistics.jl` — long de plus de trois cents lignes : jeu complet de coefficients aérodynamiques, moments d'inertie, équations d'Euler de la rotation, cinématique par quaternions.
 +
 +En le relisant, un défaut est apparu, du genre exact que cette passe rencontre le plus souvent.
 +
 +<WRAP round alert>
 +**La notice du solveur annonce « //Full 6-DOF rigid-body trajectory solver with RK4 integration// ». La boucle intègre par la méthode d'Euler.**
 +
 +Le code ne s'en cache d'ailleurs pas — un commentaire, deux lignes au-dessus du pas d'intégration, reconnaît que « //full RK4 on the 13-state would be ideal but Euler with small dt is adequate for demonstration// ». La compensation choisie est un pas très court, $\Delta t = 10^{-4}$ s, dix fois plus fin que celui du solveur 3-DOF.
 +
 +C'est la notice qui est fausse, pas le calcul — mais c'est la notice qu'on lit quand on décide de porter un module sur le web.
 +</WRAP>
 +
 +Deux remarques que ce module apporte à la page :
 +
 +* **son vecteur d'état compte treize composantes, pas douze** : trois de position, trois de vitesse, **quatre de quaternion** et trois de vitesse angulaire. Le compte dépend de la façon dont on porte l'orientation — trois cosinus directeurs dans le traité de référence, quatre paramètres de quaternion ici, en échange de l'absence de singularité. L'article dit « douze », ce qui vaut pour la formulation du traité ; les deux sont justes, chacune dans sa convention ;
 +* **les huit coefficients aérodynamiques y sont des valeurs par défaut en dur** — dérivée de force normale, moment de renversement, amortissements, force et moment de Magnus. Personne ne les a mesurés pour une balle donnée. C'est l'illustration exacte du « //garbage in, garbage out// » que le traité oppose au 6-DOF, et la meilleure justification de ce que dit l'article : ce n'est pas l'algorithme qui manque, ce sont les données.
 +
 +<WRAP round tip>
 +**Suite (2026-08-12, même jour).** Le solveur est passé à RK4 sur ses treize composantes, Euler restant accessible en repli. En l'instrumentant, le défaut s'est révélé plus grave que « un ordre de trop » : **il ne fonctionnait pas**. Euler explicite est inconditionnellement instable sur l'oscillateur gyroscopique de ces équations — son facteur d'amplification vaut $\sqrt{1+(\omega h)^2} > 1$ à tout pas —, et les vitesses angulaires atteignaient $10^{159}$ rad/s au bout de 39 ms de vol, le quaternion passant à //NaN//. Aucune trajectoire complète n'en était jamais sortie. Raccourcir le pas ne faisait que retarder l'explosion.
 +
 +Le pas par défaut était lui aussi mal dimensionné, sur la période épicyclique vue du sol au lieu du **mode rapide en repère corps** (24 000 rad/s, période 262 µs) : il passe de $10^{-4}$ à $5 \times 10^{-6}$ s, soit une cinquantaine de pas par cycle rapide — la règle relevée dans le traité. L'ordre 4 est vérifié par la mesure : l'erreur sur l'incidence totale à 100 yd décroît d'un facteur 16 par halvage. Et le repli Euler reproduit l'ancien comportement **au bit près**, explosion comprise, ce qui en fait un vrai témoin de non-régression.
 +
 +Cette page n'a pas à changer : elle décrit RK4, pas ce module. Mais le rapprochement mérite d'être noté — **c'est la rédaction de l'article qui a conduit à ouvrir ce code**, et le défaut y attendait depuis le début.
 +</WRAP>
 +
 +Le solveur n'étant pas servi aux visiteurs, l'article n'en parle pas. Il faudra y revenir si le 6-DOF passe un jour sur le site.
 +
 +En revanche, l'argument du traité — le critère est l'incidence, pas la distance — a été porté là où la question se pose vraiment, hors du wiki : un encadré « Pourquoi 3-DOF et pas 6-DOF ? » dans l'aide contextuelle du **calculateur balistique**, une note dans le chapitre 6-DOF du **manuel mathématique** (PDF reconstruit) et deux encadrés dans le **guide du solveur Julia**, dont un sur les coefficients par défaut. La notice bibliographique du manuel donnait par ailleurs le traité pour « 2ᵉ édition, 1999 » : c'est 1999 pour la première et 2012 pour la seconde, corrigé.
  
 ## Un défaut de rendu, invisible au source ## Un défaut de rendu, invisible au source
Ligne 84: Ligne 162:
 ## Ce qui n'a pas été vérifié ## Ce qui n'a pas été vérifié
  
-* **Les cinq références bibliographiques n'ont pas été ouvertes.** Elles sont citées de connaissancece qui est exactement la situation qui produit des références plausibles et fausses. Les deux plus exposées sont les articles fondateurs — Runge//Mathematische Annalen// 46, 1895, et Kutta1901 : ni le volumeni le millésimeni le titre exact n'ont été confrontés à un exemplaire. Les trois traités (Butcher 3ᵉ éd. 2016, Hairer-Nørsett-Wanner 2ᵉ éd. 1993, McCoy 2ᵉ éd. 2012) non plus+* **La notice de McGyro n'pas été ouverte.** Le rapport de McDraglui, a été lu sur la fiche du dépôt de défense qui l'archive — numérolaboratoiredate 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 concordantsnon 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
-* **L'attribution de McDrag et McGyro** et la composition du vecteur d'état 6-DOF sont conformes à ce que rapporte la littérature, mais **aucun exemplaire du traité de balistique extérieure cité n'a pu être ouvert** : l'exemplaire local n'a pas été retrouvé pendant ce contrôle. À confronter si le PDF est disponible+* **L'exemplaire du traité consulté est un scan à reconnaissance de caractères dégradée.** Le texte extrait est brouillé par endroits ; les quatre pages qui portent les conclusions ci-dessus ont donc été **lues sur l'image**, pas dans la couche texte. Le reste du chapitre n'a pas été dépouillé avec la même attention
-« **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 point-masse comparé au 6-DOF n'a toujours pas été *mesuré* ici.** Le traité l'affirme et la page le reprend avec sa condition d'incidence faible ; la comparaison par le calcul reste à faire, et le solveur qui la permettrait porte le défaut décrit ci-dessus.
 * **Le pas de 1 µs du simulateur intérieur** n'a pas subi le test de convergence appliqué au solveur extérieur. * **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. * **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.
verification/technique/integration_rk4.1786538132.txt.gz · Dernière modification : de Lepigeon