SEXT3

δ = 41 m  ·  dα = 1.000000° sur l'angle entre amers  ·  empreinte 80af6ca4e7e86001

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
Le dα minimal pour que les mesures soient cohérentes vaut au moins 0.318°. Vous avez déclaré 1.000°, soit 3.1× ce minimum.
7 amers lus dans « SEXT3.csv » (2 colonnes : x, y)
7 mesures lues dans le second fichier (i, j, angle en degres) sur 21 paires possibles.
1000 m1234567

Les amers
7 points, a 1455 a 3938 m de l'origine.

X
environ 193 m de large — soit 20 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, et c'est tout ce qu'on sait de lui.

50 m

X
23364.8 ± 5.5 m²

X∩
28440 ± 38 m²

X ⊊ X∩ : la clôture par Floyd-Warshall améliore au moins une borne, donc X est strictement plus petit.

13 sommets certifiés.

le nuage de ToTal

3000 tirages ; 2944 tombent dans X∩ (98 %), 56 au dehors — ceux-là, les mesures les excluent.

Les sommets

#x (m)y (m)contraintes
138.31198.795(1,5) ∩ (1,6)
255.569104.437(1,5) ∩ (7,5)
3-11.04870.289(1,6) ∩ (1,7)
4-53.54012.558(1,7) ∩ (3,7)
5112.01359.617(2,3) ∩ (7,3)
6111.83060.165(2,3) ∩ (7,4)
7-49.963-77.715(3,7) ∩ (6,7)
832.549-82.017(4,1) ∩ (6,1)
9-4.718-88.933(4,1) ∩ (6,7)
1081.703-52.446(6,1) ∩ (7,1)
1186.233-45.916(6,3) ∩ (7,1)
12114.23124.865(6,3) ∩ (7,3)
13111.26860.720(7,4) ∩ (7,5)

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)30002824 — 94.1 %92.1 %30.5°
la plus petite ellipse d'incertitude (Madsen & Andersen 1998 — la règle publiée)30002944 — 98.1 %97.0 %0.9°
la moyenne pondérée par |D|30002520 — 84.0 %79.3 %10.2°
la médiane géométrique des triplets30003000 — 100.0 %100.0 %
les moindres carrés sur toutes les paires (y compris celles que la clôture déduit — ce que fait X)30003000 — 100.0 %100.0 %
les moindres carrés sur les seules paires visées (le maximum de vraisemblance)30003000 — 100.0 %100.0 %

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 1.000000° 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 « paires » — et ne prouve rien sur la méthode : il la montre.

Ce que cela a coûté

lecture du tableur0.003 s
préparation du jeu0.011 s
calcul de X∩ et X5.005 s
aire et tracé1.000 s
nuage de ToTal0.276 s
total6.480 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 SEXT3 -- engendre par preparer.py, NE PAS EDITER A LA MAIN
#  7 amers, portees 1455-3938 m depuis l'origine
#  delta = 41 m (40 m de carte + 1 m d'arrondi des coordonnees)
#  d_alpha = 1.000000 deg SUR L'ANGLE ENTRE AMERS
#             dont 2.22e-04 arcsec de transcription, majores et absorbes
#  7 paires mesurees sur 21 possibles
# ==============================================================================

const NOM = "SEXT3"
const EMPREINTE = "80af6ca4e7e86001"     # signature des donnees, recopiee dans le resultat

const AMERS = Tuple{Rational{BigInt},Rational{BigInt}}[
    (1407//1, 840//1),            # 1  azimut   59.17 deg
    (3269//1, 2196//1),           # 2  azimut   56.11 deg
    (120//1, 1450//1),            # 3  azimut    4.75 deg
    (-2342//1, 1046//1),          # 4  azimut  294.07 deg
    (-3040//1, 403//1),           # 5  azimut  277.54 deg
    (-2368//1, -1344//1),         # 6  azimut  240.42 deg
    (1060//1, -3175//1),          # 7  azimut  161.54 deg
]

const DELTA = Rational{BigInt}(41)
const T_D   = Rational{BigInt}(722, 82733)   # tan(d_alpha/2)

const MESURES = Dict{Tuple{Int,Int},Tuple{Rational{BigInt},Int}}(
    (1,2) => (1362//44221, 0),
    (1,7) => (-85466//67531, 0),
    (2,3) => (41890//85361, 0),
    (3,4) => (65723//93441, 0),
    (4,5) => (14342//96949, 0),
    (5,6) => (13948//41075, -1),
    (6,7) => (63552//77831, 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
========================================
  SEXT3  (7 amers)
========================================
  minorant : les cycles imposent d_alpha >= 0.3184 deg (declare 1.0000)
             pire cycle,  7 aretes : 4 3 2 1 7 6 5 4
             defaut de fermeture 2.228601 deg pour 7.000000 deg de tolerance cumulee
             exact sur TOUS les cycles : 0.3184
             marge : 3.14x ce que les cycles exigent
  7 amers, 14 contraintes orientees
  elagage sur 10 boites : 6 paires sur 91
  X∩ : 6 sommets en 0.125 s  (elagage 0.007, solveur 0.107, filtres 0.009)
  boite de depart reprise de X∩ : x[-71, 129]  y[-104, 121]
  germe repris de X∩ : 6 contrainte(s)
  critere : la cloture apporte 0 amelioree(s) et 28 fabriquee(s) sur 42  ->  X inclus strictement dans X∩, il faut calculer X
Floyd-Warshall certifie sur le graphe des mesures (7 amers)...
  coherence de type I : OK
  la cloture apporte : 0 borne(s) amelioree(s) et 28 fabriquee(s) sur 42  ->  X inclus dans Xinter

--- iteration 1 :  x[-71, 129]  y[-104, 121]
  origine des angles : secteur libre 95.7 deg
  contraintes conservees : 42 sur 42
  ensemble actif, tour 1 : |A| = 6, 6 sommet(s), 13 violee(s) (plafonne)
  ensemble actif, tour 2 : |A| = 10, 10 sommet(s), 6 violee(s) (plafonne)
  ensemble actif, tour 3 : |A| = 14, 12 sommet(s), 1 violee(s)
  ensemble actif, tour 4 : |A| = 15, 13 sommet(s), 0 violee(s)
  sommets certifies : 13
  certificat 1 : 27 prouvee(s) redondante(s), 0 douteuse(s), 205 cellule(s)

--- iteration 2 :  x[-54, 115]  y[-89, 105]
  origine des angles : secteur libre 96.9 deg
  contraintes conservees : 42 sur 42
  ensemble actif, tour 1 : |A| = 13, 13 sommet(s), 0 violee(s)
  sommets certifies : 13
  certificat 1 : 29 prouvee(s) redondante(s), 0 douteuse(s), 281 cellule(s)
  point fixe atteint.

  statut : ok
  boite  : x[-54.000000, 115.000000]  y[-89.000000, 105.000000]
  sommets : 13   contraintes actives : 13
  bord : 13 arete(s), cycle unique
  certificat : 1 passe(s), 13 actives sur 42 gardees, 486 cellule(s)
  memoire : pic 38.7 Mo
  temps : X∩ 0.125 s   X 4.754 s   aire 0.000 s   bord 0.000 s   calcul 5.001 s   mural 5.001 s
  solveur : direct=392 erreur=0 asymptote=0 non_gen=0 plusieurs=0 coords=0
  dont decomposition 10.35 s, solve_ratparam_real 1.85 s
  ecrit : /tmp/geoloc-j8uy7eoh/SEXT3.resultat.json

========================================
  SEXT3_courbes  (7 amers) -- analyse de /tmp/geoloc-j8uy7eoh/SEXT3.resultat.json
========================================
  aire de X∩ : [28402, 28479] m2  (0.268 %, niveaux 2 ; 24 prouvee(s), 0 mesuree(s), 0 majoree(s))
  bord de X∩ : 24 points  (fleche 0.98 px a 2160, niveaux 2)
  aire de X : [23359, 23371] m2  (0.0473 %, niveaux 2 ; 52 prouvee(s), 0 mesuree(s), 0 majoree(s))
  bord de X : 52 points  (fleche 0.23 px a 2160, niveaux 2)
  temps :   aire 0.920 s   bord 0.073 s
  ecrit : /tmp/geoloc-j8uy7eoh/SEXT3.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.