Les mesures de rayon sont sûrement sujettes à une erreur. Je m'attendrais à ce que la quantité d'erreur soit proportionnelle aux rayons eux-mêmes. Supposons que les mesures soient par ailleurs non biaisées. Une solution raisonnable utilise alors l' ajustement des moindres carrés non linéaires pondéré , avec des poids inversement proportionnels aux rayons carrés.
Ce sont des choses standard disponible dans (entre autres) Python, R
, Mathematica , et de nombreux progiciels statistiques complet, donc je vais l' illustrer. Voici quelques données obtenues en mesurant les distances, avec une erreur relative de 10%, à cinq points d'accès aléatoires entourant l'emplacement de l'appareil:
Mathematica a besoin d'une seule ligne de code et d'aucun temps CPU mesurable pour calculer l'ajustement:
fit = NonlinearModelFit[data, Norm[{x, y} - {x0, y0}], {x0, y0}, {x, y}, Weights -> 1/observations^2]
Modifier--
Pour les grands rayons, des solutions plus précises (sphériques ou ellipsoïdales) peuvent être trouvées simplement en remplaçant la distance euclidienne Norm[{x, y} - {x0, y0}]
par une fonction pour calculer la distance sphérique ou ellipsoïdale. Dans Mathematica, cela pourrait être fait, par exemple , via
fit = NonlinearModelFit[data, GeoDistance[{x, y}, {x0, y0}], {x0, y0}, {x, y},
Weights -> 1/observations^2]
- fin de l'édition
Un avantage de l'utilisation d'une technique statistique comme celle-ci est qu'elle peut produire des intervalles de confiance pour les paramètres (qui sont les coordonnées de l'appareil) et même une ellipse de confiance simultanée pour l'emplacement de l'appareil.
ellipsoid = fit["ParameterConfidenceRegion", ConfidenceLevel -> 0.95];
fit["ParameterConfidenceIntervalTable", ConfidenceLevel -> 0.95]
Il est instructif de tracer les données et la solution:
Graphics[{Opacity[0.2], EdgeForm[Opacity[0.75]], White, Disk[Most[#], Last[#]] & /@ data,
Opacity[1], Red, ellipsoid,
PointSize[0.0125], Blue, Point[source], Red, Point[solution],
PointSize[0.0083], White, Point @ points},
Background -> Black, ImageSize -> 600]
Les points blancs sont les emplacements (connus) des points d'accès.
Le gros point bleu est le véritable emplacement de l'appareil.
Les cercles gris représentent les rayons mesurés. Idéalement, ils se croiseraient tous à l'emplacement réel de l'appareil - mais évidemment, ils ne le font pas, en raison d'une erreur de mesure.
Le gros point rouge est l'emplacement estimé de l'appareil.
L'ellipse rouge délimite une région de confiance à 95% pour l'emplacement de l'appareil.
La forme de l'ellipse dans ce cas est intéressante: l'incertitude de localisation est la plus grande le long d'une ligne NW-SE. Ici, les distances à trois points d'accès (au NE et au SO) changent à peine et il y a un compromis d'erreurs entre les distances aux deux autres points d'accès (au nord et au sud-est).
(Une région de confiance plus précise peut être obtenue dans certains systèmes comme contour d'une fonction de vraisemblance; cette ellipse n'est qu'une approximation de second ordre d'un tel contour.)
Lorsque les rayons sont mesurés sans erreur, tous les cercles auront au moins un point d'intersection mutuelle et - si ce point est unique - ce sera la solution unique.
Cette méthode fonctionne avec deux points d'accès ou plus. Trois ou plus sont nécessaires pour obtenir des intervalles de confiance. Lorsque seulement deux sont disponibles, il trouve l'un des points d'intersection (s'ils existent); sinon, il sélectionne un emplacement approprié entre les deux points d'accès.