CN

δ = 31 m  ·  dα = 3.000001° sur l'angle entre amers  ·  empreinte 6d87dc1e894b1a4b

Jouer sur les tolérances

Une erreur de carte par amer, une erreur angulaire commune. Baissez le δ d'un seul amer — celui que vous relèveriez au GPS — et regardez X rétrécir. Le calcul refait est certifié, pas approché : comptez quelques secondes par essai.

revenir au réglage du catalogue
Vérification sans objet. Vos angles dérivent d'un gisement par amer : ils se somment à zéro sur tout cycle par construction, et ne peuvent donc pas se contredire.
7 amers lus dans « CN.csv » (3 colonnes : x, y, azimut)
pas de feuille de mesures : les 21 angles seront deduits des azimuts, et le graphe sera complet.
1000 m1234567

Les amers
7 points, a 591 a 4016 m de l'origine.

X (= X∩)
environ 164 m de large — soit 25 fois moins que la portee des amers. Le cercle en pointille le situe ; le detail est ci-dessous.

Les traits pales vont de l'origine vers chaque amer. L'observateur n'est pas a l'origine : il est quelque part dans X (= X∩), et c'est tout ce qu'on sait de lui.

20 m

X = X∩
La clôture n'apporte rien : l'égalité est prouvée, et X n'a pas eu à être calculé.

Aire garantie
9742 ± 12 m²

9 sommets certifiés.

le nuage de ToTal

3000 tirages ; 2184 tombent dans X∩ (73 %), 816 au dehors — ceux-là, les mesures les excluent. 37 sont hors du cadre.

Les sommets

#x (m)y (m)contraintes
1-7.072-65.152(1,7) ∩ (4,7)
2-52.9749.027(1,5) ∩ (1,7)
3-54.74614.150(1,3) ∩ (1,5)
419.462-62.329(4,6) ∩ (4,7)
5106.814-46.473(4,1) ∩ (4,6)
6107.914-45.649(4,1) ∩ (4,2)
7108.810-43.577(4,2) ∩ (4,3)
8108.700-10.404(4,3) ∩ (5,3)
941.64520.431(1,3) ∩ (5,3)

Chaque sommet est un enclos certifié ; la largeur du plus large vaut 1.4e-14 m.

Une méthode ponctuelle, jugée par X∩

ToTal — V. Pierlot et M. Van Droogenbroeck, A New Three Object Triangulation Algorithm for Mobile Robot Positioning, IEEE Transactions on Robotics 30(3):566-577, 2014 — rend un point, pas un ensemble. Il n'a pas de modèle d'erreur : on ne lui en fabrique pas un, on déforme les données dans les tolérances du calcul certifié (δ sur les amers, dα sur les angles, uniformément — le calcul certifié borne l'erreur, il ne la suppose pas centrée) et l'on regarde où la méthode place l'observateur.

règle pour n > 3pointsdans X∩dans Xpire violation
le triplet de plus grand |D| (le critère de fiabilité de l'article)30001630 — 54.3 %54.3 %8.6°
la plus petite ellipse d'incertitude (Madsen & Andersen 1998 — la règle publiée)30002184 — 72.8 %72.8 %3.4°
la moyenne pondérée par |D|30002365 — 78.8 %78.8 %4.7°
la médiane géométrique des triplets30002628 — 87.6 %87.6 %6.5°
les moindres carrés sur toutes les paires (y compris celles que la clôture déduit — ce que fait X)30002909 — 97.0 %97.0 %1.3°
les moindres carrés sur les seules paires visées (le maximum de vraisemblance)30002909 — 97.0 %97.0 %1.3°

Le pourcentage qui compte est celui de X∩, et c'est le test honnête : ToTal n'emploie que deux des trois angles d'un triplet — il impose la fermeture au lieu de la constater, et ne peut donc pas voir ce que la clôture de Floyd-Warshall ajoute. Le juger sur X seul lui reprocherait des contraintes qu'il n'a jamais lues. Sur azimuts absolus les deux colonnes coïncident ; elles ne se séparent que sur graphe lacunaire.

La « pire violation » est un angle, pas une distance : un point à 2° quand dα en vaut 3.000001° viole la tolérance angulaire des deux tiers. Le convertir en mètres demanderait une direction, et il n'y en a pas une seule.

Le tracé et cette table ne sont pas de même nature que le reste de la page. X et X∩ sont certifiés : toute position hors d'eux est prouvée impossible. Le nuage est un échantillon — 3000 tirages, bruit « azimuts » — et ne prouve rien sur la méthode : il la montre.

Ce que cela a coûté

lecture du tableur0.001 s
préparation du jeu0.015 s
calcul de X∩ et X0.275 s
aire et tracé0.470 s
nuage de ToTal0.359 s
total1.218 s

Le calcul et l'analyse sont deux choses : la première est l'objet de l'étude, la seconde un outil pour la regarder. Leur coût ne dépend pas des mêmes choses — le calcul du jeu, l'analyse de la précision demandée.

Sur quoi

machine : Linux aarch64  --  Raspberry Pi 4 Model B Rev 1.1
          4 coeur(s) a 1.50 GHz, 3.7 Go,  4 fil(s) demande(s)
calcul  : intervalles fi64, mantisse hors solveur 256 bits
bati    : Sep 10 2026, gcc 14.2.0
          arrondi dirige disponible,  socle : pthreads oui, rsgc non, flint non
          gmp 6.3.0, mpfr 4.2.2, mpfi 1.5.4
sources : empreinte cbb2c1eddba1

Les temps ci-dessus valent pour cette machine et pour elle seule. Ce qui se transporte d'une machine à l'autre, ce sont les rapports — pas les secondes.

Le jeu exact engendré (ce que lit le calcul)
# ==============================================================================
#  Jeu CN -- engendre par preparer.py, NE PAS EDITER A LA MAIN
#  7 amers, portees 591-4016 m depuis l'origine
#  delta = 31 m (30 m de carte + 1 m d'arrondi des coordonnees)
#  d_alpha = 3.000001 deg SUR L'ANGLE ENTRE AMERS
#             dont 1.81e-03 arcsec de transcription, majores et absorbes
#  21 paires mesurees sur 21 possibles
# ==============================================================================

const NOM = "CN"
const EMPREINTE = "6d87dc1e894b1a4b"     # signature des donnees, recopiee dans le resultat

const AMERS = Tuple{Rational{BigInt},Rational{BigInt}}[
    (-1269//1, 1651//1),          # 1  azimut  320.95 deg
    (-737//1, 308//1),            # 2  azimut  293.85 deg
    (-594//1, 87//1),             # 3  azimut  282.35 deg
    (-542//1, -235//1),           # 4  azimut  247.33 deg
    (-143//1, -2408//1),          # 5  azimut  184.21 deg
    (890//1, -3916//1),           # 6  azimut  168.17 deg
    (969//1, -2019//1),           # 7  azimut  155.38 deg
]

const DELTA = Rational{BigInt}(31)
const T_D   = Rational{BigInt}(2165, 82678)   # tan(d_alpha/2)

const MESURES = Dict{Tuple{Int,Int},Tuple{Rational{BigInt},Int}}(
    (1,2) => (11825//49066, 0),
    (1,3) => (5836//16665, 0),
    (1,4) => (55365//73981, 0),
    (1,5) => (21176//8397, 0),
    (1,6) => (99876//24181, 0),
    (1,7) => (53201//6735, 0),
    (2,3) => (5363//53260, 0),
    (2,4) => (41897//97471, 0),
    (2,5) => (69983//49331, 0),
    (2,6) => (15443//7923, 0),
    (2,7) => (50714//19229, 0),
    (3,4) => (25397//80500, 0),
    (3,5) => (83647//72534, 0),
    (3,6) => (60424//39105, 0),
    (3,7) => (89329//44567, 0),
    (4,5) => (48554//79047, 0),
    (4,6) => (54829//66324, 0),
    (4,7) => (18615//17992, 0),
    (5,6) => (1304//9255, 0),
    (5,7) => (22971//89369, 0),
    (6,7) => (7535//67229, 0) )
Le journal du calcul
machine : Linux aarch64  --  Raspberry Pi 4 Model B Rev 1.1
          4 coeur(s) a 1.50 GHz, 3.7 Go,  4 fil(s) demande(s)
calcul  : intervalles fi64, mantisse hors solveur 256 bits
bati    : Sep 10 2026, gcc 14.2.0
          arrondi dirige disponible,  socle : pthreads oui, rsgc non, flint non
          gmp 6.3.0, mpfr 4.2.2, mpfi 1.5.4
========================================
  CN  (7 amers)
========================================
  minorant : muet -- les angles derivent d'un gisement par amer, ils ne peuvent pas
             se contredire (15 cycles independants).
             defaut residuel 3.184e-08 deg, soit 3.5e-09 fois la tolerance du cycle
             (transcription des angles ; seuil de lisibilite 1e-03)
  7 amers, 42 contraintes orientees
  elagage sur 39 boites : 9 paires sur 861
  X∩ : 9 sommets en 0.208 s  (elagage 0.020, solveur 0.154, filtres 0.027)
  boite de depart reprise de X∩ : x[-55, 109]  y[-66, 21]
  germe repris de X∩ : 9 contrainte(s)
  critere : la cloture n'apporte rien sur 42 bornes  ->  X = X∩ est ACQUIS sans calculer X
            --critere : calcul de X saute, le resultat est X∩
  resultat : X∩, 9 sommets
  memoire : pic 37.6 Mo
  temps : X∩ 0.208 s   X 0.000 s   aire 0.000 s   bord 0.000 s   calcul 0.270 s   mural 0.270 s
  solveur : direct=9 erreur=0 asymptote=0 non_gen=0 plusieurs=0 coords=0
  dont decomposition 0.11 s, solve_ratparam_real 0.04 s
  ecrit : /tmp/geoloc-9e19dd0d/CN.resultat.json

========================================
  CN_courbes  (7 amers) -- analyse de /tmp/geoloc-9e19dd0d/CN.resultat.json
========================================
  aire de X∩ : [9730, 9755] m2  (0.25 %, niveaux 2 ; 36 prouvee(s), 0 mesuree(s), 0 majoree(s))
  bord de X∩ : 36 points  (fleche 0.77 px a 2160, niveaux 2)
  temps :   aire 0.430 s   bord 0.035 s
  ecrit : /tmp/geoloc-9e19dd0d/CN.analyse.json

← un autre tableur

Sommets certifiés par arithmétique exacte sur ℤ ; aire garantie — la flèche de chaque sous-arc est majorée, pas échantillonnée. Le tracé est la polyligne du calcul lui-même, point par point.