Fiche de traçabilité de l'article Tuners et vibrations harmoniques du canon. Voir la méthode.
Cette page porte aussi le récit commun aux trois articles tuners — comment des valeurs fausses sont entrées, et comment elles ont été rattrapées. Les fiches de tuners_limites et de protocole_amortissement y renvoient.
Particularité de ce dossier : la source primaire est du code. Le modèle de vibrations vit dans simulation.jl (dépôt public). Toute grandeur publiée ici peut donc être recalculée, et non seulement recoupée. C'est ce qui a permis de trancher, et c'est la leçon principale de ce dossier : confronter des documents entre eux ne suffit pas quand un exécutable fait autorité.
Le tableau central de l'article a porté, du 2026-07-20 au 2026-07-27, les valeurs suivantes :
| publié alors | établi depuis | |
|---|---|---|
| Mode fondamental | 281 Hz | 40 Hz |
| Modes porteurs | 9 et 10 | 5 et 6 |
| Fréquences de ces modes | 2333 / 3009 Hz | 2271 / 3394 Hz |
| Cycles du fondamental avant sortie | 0,72 | 0,10 |
simulation.jl ré-exécuté sur le canon nu de référence (660 mm, 20 éléments, encastré) — vérification refaite le 2026-07-28 :
| Mode | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| Fréquence (Hz) | 39,95 | 250,37 | 701,05 | 1373,84 | 2271,30 | 3393,62 | 4741,50 | 6316,08 | 8119,09 |
Temps de parcours projectile_kinematics() : 2,568 ms. Cycles avant sortie : 0,10 au fondamental, 5,83 au mode 5, 8,72 au mode 6 — exactement le tableau publié aujourd'hui.
Aucun mode entre 250 et 701 Hz : 281 Hz ne correspond à rien, dans aucune configuration, avec ou sans tuner. Les chiffres sont identiques sur la version du modèle datée du 2026-07-20 et sur l'actuelle — la géométrie et le maillage n'ayant pas bougé, il n'existe aucune version du code d'où ces valeurs auraient pu sortir.
Trois signes, tous internes, aucun ne nécessitant de source extérieure :
t_b × f doit se vérifier à la calculette ; elle ne tombait juste avec aucun couple de valeurs annoncé.La conclusion de fond est intacte, et se trouve même renforcée. Il existe bien, vers 2-3 kHz, des modes parcourus six à neuf fois avant la sortie de la balle, contre un dixième de cycle pour le fondamental. C'est tout l'argument de la page : l'accord d'un tuner ne peut pas se jouer sur le fondamental, que la balle voit à peine bouger. Avec 0,10 cycle au lieu de 0,72, l'argument est plus fort qu'avant.
Seules la numérotation des modes et deux décimales étaient fausses.
Point le plus instructif du dossier. Un contrôle automatique (check_prose_claims.py) surveille les grandeurs affirmées dans les textes publiés, à partir d'un manifeste tenu à la main. Ce manifeste ayant été écrit le 2026-07-20, en même temps que les valeurs fausses, il enregistrait 281 Hz comme valeur de référence.
Pire : l'entrée portait une note d'apparence savante — le chiffre viendrait d'un modèle « fusil entier sur appuis », à ne pas confondre avec le canon encastré. Ce modèle n'existe pas. C'était une justification construite après coup pour un nombre sans origine.
Résultat : le 2026-07-28, le contrôle a signalé que l'article affirmait 40 Hz « alors que le manifeste dit 281 » — et a donc, pendant un instant, plaidé pour annuler une correction juste. Il a fallu chercher 281 dans l'ensemble du dépôt (absent partout) et ré-exécuter le modèle pour en sortir.
Leçon retenue : quand un contrôle contredit une correction vérifiée, regarder d'abord quand son manifeste a été écrit, et par rapport à quel état. Manifeste corrigé le 2026-07-28 ; les valeurs écartées y sont désormais déclarées périmées, pour qu'elles ne puissent plus revenir en silence.
pcp_vs_firearm.jl) donne un écart de 8 à 16 pour 1, non de 26 : la formulation surestimait d'un facteur 3, en raisonnant sur les pics là où la physique du problème sélectionne les impulsions.Cinq chiffres contredisaient d'autres passages de la page ; chacun est ramené aux valeurs recalculées que la page publie déjà (aucune simulation relancée) :
Résolu le 2026-09-30 : la source LaTeX est réalignée, sur le modèle et non sur le wiki. simulation.jl et variability.jl ont été relancés. Balayage en position : critère θ' à 115 mm (100 g) et 65 mm (200 g), θ' plafonnant à 6,38 ; tolérance à moins de 1 MOA/ms de la cible de 40 mm aux deux masses (100-140 et 45-85 mm), soit ~80 tours au pas de 0,5 mm. Variabilité : 0,94 → 0,38 mm (100 g, minimum à 140 mm, facteur 2,5) et 0,77 → 0,34 mm (200 g, minimum à 85 mm, facteur 2,3). Le wiki était juste ; tuner_fr.tex et tuner_en.tex donnaient « ~75 mm » et « 150 à 190 tours », et omettaient la ligne 200 g. Corrigés, PDF régénérés. Au passage, variability.jl imprimait encore « viser le passage de θ par zéro (ou, ce qui revient au même, le maximum de θ') », contraire à son propre résultat : message corrigé.
L'article racontait lui aussi ses corrections ; il dit désormais ce qui tient. Termes retirés :
Deux phrases contredisaient la page compagnon et sont retirées de la conclusion : « rien de ce que cette page avance n'est original », alors que l'article publie son propre modèle et sa conclusion sur les modes à 2-3 kHz ; et « l'obstacle n'étant pas l'instrumentation, mais la grandeur que les auteurs ont choisi de mesurer », alors que les deux essais en tir réel d'O'Neil (2022) ont échoué par la résolution, puis par la saturation des capteurs. La conclusion dit désormais les deux obstacles.
Méthode. simulate_shot (tuners/simulation.jl) lisait θ' au point de sa grille de 5 µs le plus proche de t_b. Or θ' varie de plusieurs dixièmes de MOA/ms en quelques microsecondes autour de la sortie (modes élevés excités par l'impulsion de pression). Étude de convergence, au réglage par défaut du simulateur web (tuner de 200 g, sans porte-à-faux) : θ' interpolé à t_b vaut −0,320 MOA/ms au pas de 10 µs, −0,379 à 5 µs, −0,394 à 2,5 µs, −0,3986 à 1 µs, −0,3992 à 0,5 µs ; la lecture au point le plus proche, au pas de 5 µs, donnait −0,483. Le modèle calcule désormais au pas de 1 µs jusqu'à la sortie et interpole y, θ et θ' à t_b exact. simulation.jl, variability.jl, pcp_vs_firearm.jl, flexible_tube.jl et sensitivity_map.jl ont été relancés avant et après.
Chiffres de cette page qui changent.
| Grandeur | Avant | Après |
|---|---|---|
| θ' maximal, aux deux masses | 6,38 | 6,39 |
| Écart au neutre au critère θ', 200 g | 149 µrad | 147 µrad |
| Écart au neutre au critère θ', 100 g | 184 µrad | 182 µrad |
Inchangés : réglages à 115 mm (100 g) et 65 mm (200 g), tolérances 100-140 et 45-85 mm, dispersions 0,94 → 0,38 mm et 0,77 → 0,34 mm, facteurs 2,5 et 2,3.
Balayage en position, chiffres d'une version antérieure du modèle. La page donnait « de −2,1 à +6,2 MOA/ms (100 g) ou de +1,9 à +5,9 (200 g) », et la source LaTeX une troisième version (−1,7 à +6,2 ; +1,8 à +5,9). La figure publiée à côté, comme le modèle avant ou après ce recalcul, donne environ −7,0 → +6,4 à 100 g et −0,2 → +6,4 à 200 g : chiffres remplacés. La même phrase affirmait que « la course couvre tout l'écart entre une arme non compensée et la cible », contraire à l'encadré de la même page (cible 6,88, plafond 6,39) : elle dit désormais que la course mène à moins de 0,5 MOA/ms de la cible. Figures plot_balayage_position, plot_balayage_tuner et plot_tir_nominal régénérées ; PDF français et anglais refaits.
Simulateur web. La page du simulateur affichait θ'(t_b) = +3,52 MOA/ms au réglage par défaut, contre −0,40 pour le modèle : son analyse modale échouait à chaque exécution (appel propre à une version de math.js plus récente que celle servie), l'erreur était avalée et un amortissement forfaitaire prenait le relais ; elle amortissait en outre à 0,5 % / 1 % et lisait θ' sans interpolation au pas de 10 µs. Corrigé le même jour ; la page et le modèle concordent sur quatre montages (θ à 0,1 µrad, θ' à 0,001 MOA/ms près), contrôlés chaque nuit (scripts/check_tuners_page.js).