MIXTE

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

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.417°. Vous avez déclaré 1.000°, soit 2.4× ce minimum.
8 amers lus dans « MIXTE.csv » (2 colonnes : x, y)
10 mesures lues dans le second fichier (i, j, angle en degres) sur 28 paires possibles.
1000 m12345678

Les amers
8 points, a 1023 a 4933 m de l'origine.

X
environ 216 m de large — soit 23 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.

20 m

X
20204 ± 11 m²

X∩
28212 ± 68 m²

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

9 sommets certifiés.

le nuage de ToTal

3000 tirages ; 2998 tombent dans X∩ (100 %), 2 au dehors — ceux-là, les mesures les excluent.

Les sommets

#x (m)y (m)contraintes
1-63.734-43.198(1,2) ∩ (1,8)
2-54.63967.188(1,2) ∩ (8,2)
3-38.491-105.014(1,8) ∩ (2,5)
456.161-121.450(2,1) ∩ (3,7)
561.722-70.618(2,1) ∩ (4,1)
615.663-134.923(2,5) ∩ (2,7)
750.312-126.889(2,7) ∩ (3,7)
846.4683.756(4,1) ∩ (8,1)
914.44381.572(8,1) ∩ (8,2)

Chaque sommet est un enclos certifié ; la largeur du plus large vaut 2.8e-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)30001709 — 57.0 %51.1 %167.6°
la plus petite ellipse d'incertitude (Madsen & Andersen 1998 — la règle publiée)30002998 — 99.9 %99.8 %0.3°
la moyenne pondérée par |D|30001299 — 43.3 %35.4 %116.3°
la médiane géométrique des triplets30002957 — 98.6 %98.0 %1.5°
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 %99.6 %

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.015 s
calcul de X∩ et X6.850 s
aire et tracé0.947 s
nuage de ToTal0.376 s
total8.421 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 MIXTE -- engendre par preparer.py, NE PAS EDITER A LA MAIN
#  8 amers, portees 1023-4933 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 1.42e-03 arcsec de transcription, majores et absorbes
#  10 paires mesurees sur 28 possibles
# ==============================================================================

const NOM = "MIXTE"
const EMPREINTE = "b9db9c4cec64883b"     # signature des donnees, recopiee dans le resultat

const AMERS = Tuple{Rational{BigInt},Rational{BigInt}}[
    (-254//1, 1077//1),           # 1  azimut  346.75 deg
    (-2192//1, -1659//1),         # 2  azimut  232.87 deg
    (-622//1, -2873//1),          # 3  azimut  192.21 deg
    (217//1, -1242//1),           # 4  azimut  170.09 deg
    (654//1, -786//1),            # 5  azimut  140.26 deg
    (2964//1, -3146//1),          # 6  azimut  136.71 deg
    (4252//1, -2501//1),          # 7  azimut  120.46 deg
    (3604//1, -2034//1),          # 8  azimut  119.43 deg
]

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

const MESURES = Dict{Tuple{Int,Int},Tuple{Rational{BigInt},Int}}(
    (1,2) => (97817//63986, -1),
    (1,8) => (-90521//40527, 0),
    (2,3) => (14919//40046, 0),
    (3,4) => (1549//7939, 0),
    (4,5) => (5213//19177, 0),
    (4,7) => (39007//85811, 0),
    (4,8) => (43878//93871, 0),
    (5,6) => (527//20549, 0),
    (6,7) => (13257//98234, 0),
    (7,8) => (11//4474, 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
========================================
  MIXTE  (8 amers)
========================================
  minorant : les cycles imposent d_alpha >= 0.4166 deg (declare 1.0000)
             pire cycle,  6 aretes : 4 3 2 1 8 7 4
             defaut de fermeture 2.499375 deg pour 6.000003 deg de tolerance cumulee
             exact sur TOUS les cycles : 0.4166
             marge : 2.40x ce que les cycles exigent
  8 amers, 20 contraintes orientees
  elagage sur 69 boites : 9 paires sur 190
  X∩ : 9 sommets en 0.195 s  (elagage 0.012, solveur 0.160, filtres 0.020)
  boite de depart reprise de X∩ : x[-64, 65]  y[-193, 166]
  germe repris de X∩ : 9 contrainte(s)
  critere : la cloture apporte 0 amelioree(s) et 36 fabriquee(s) sur 56  ->  X inclus strictement dans X∩, il faut calculer X
Floyd-Warshall certifie sur le graphe des mesures (8 amers)...
  coherence de type I : OK
  la cloture apporte : 0 borne(s) amelioree(s) et 36 fabriquee(s) sur 56  ->  X inclus dans Xinter

--- iteration 1 :  x[-64, 65]  y[-193, 166]
  origine des angles : secteur libre 125.2 deg
  contraintes conservees : 56 sur 56
  ensemble actif, tour 1 : |A| = 9, 9 sommet(s), 13 violee(s) (plafonne)
  ensemble actif, tour 2 : |A| = 13, 7 sommet(s), 5 violee(s) (plafonne)
  ensemble actif, tour 3 : |A| = 17, 9 sommet(s), 0 violee(s)
  sommets certifies : 9
  certificat 1 : 38 prouvee(s) redondante(s), 1 douteuse(s), 716 cellule(s)
  ensemble actif, tour 1 : |A| = 18, 9 sommet(s), 0 violee(s)
  certificat 2 : 38 prouvee(s) redondante(s), 0 douteuse(s), 649 cellule(s)

--- iteration 2 :  x[-64, 62]  y[-135, 82]
  origine des angles : secteur libre 126.3 deg
  contraintes conservees : 54 sur 56
  ensemble actif, tour 1 : |A| = 9, 9 sommet(s), 0 violee(s)
  sommets certifies : 9
  certificat 1 : 44 prouvee(s) redondante(s), 1 douteuse(s), 1268 cellule(s)
  ensemble actif, tour 1 : |A| = 10, 9 sommet(s), 0 violee(s)
  certificat 2 : 44 prouvee(s) redondante(s), 0 douteuse(s), 1201 cellule(s)
  point fixe atteint.

  statut : ok
  boite  : x[-64.000000, 62.000000]  y[-135.000000, 82.000000]
  sommets : 9   contraintes actives : 9
  bord : 9 arete(s), cycle unique
  certificat : 2 passe(s), 10 actives sur 54 gardees, 3834 cellule(s)
  memoire : pic 39.6 Mo
  temps : X∩ 0.195 s   X 6.475 s   aire 0.000 s   bord 0.000 s   calcul 6.845 s   mural 6.845 s
  solveur : direct=565 erreur=0 asymptote=0 non_gen=0 plusieurs=0 coords=0
  dont decomposition 13.41 s, solve_ratparam_real 2.66 s
  ecrit : /tmp/geoloc-emj4_zqv/MIXTE.resultat.json

========================================
  MIXTE_courbes  (8 amers) -- analyse de /tmp/geoloc-emj4_zqv/MIXTE.resultat.json
========================================
  aire de X∩ : [28140, 28290] m2  (0.48 %, niveaux 2 ; 36 prouvee(s), 0 mesuree(s), 0 majoree(s))
  bord de X∩ : 72 points  (fleche 0.28 px a 2160, niveaux 3)
  aire de X : [20193, 20216] m2  (0.108 %, niveaux 2 ; 36 prouvee(s), 0 mesuree(s), 0 majoree(s))
  bord de X : 36 points  (fleche 0.53 px a 2160, niveaux 2)
  temps :   aire 0.788 s   bord 0.151 s
  ecrit : /tmp/geoloc-emj4_zqv/MIXTE.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.