Las mediciones de radio seguramente están sujetas a algún error. Esperaría que la cantidad de error sea proporcional a los radios mismos. Supongamos que las medidas son de otro modo imparciales Una solución razonable utiliza un ajuste de mínimos cuadrados no lineales ponderados , con pesos inversamente proporcionales a los radios al cuadrado.
Esto es algo estándar disponible en (entre otras cosas) Python, R
, Mathematica , y muchos paquetes estadísticos con todas las funciones, por lo que me limitaré a ilustrarla. Aquí hay algunos datos obtenidos midiendo las distancias, con un error relativo del 10%, a cinco puntos de acceso aleatorio que rodean la ubicación del dispositivo:
Mathematica necesita solo una línea de código y ningún tiempo de CPU medible para calcular el ajuste:
fit = NonlinearModelFit[data, Norm[{x, y} - {x0, y0}], {x0, y0}, {x, y}, Weights -> 1/observations^2]
Editar--
Para radios grandes, se pueden encontrar soluciones más precisas (esféricas o elipsoidales) simplemente reemplazando la distancia euclidiana Norm[{x, y} - {x0, y0}]
por una función para calcular la distancia esférica o elipsoidal. En Mathematica esto podría hacerse, por ejemplo , a través de
fit = NonlinearModelFit[data, GeoDistance[{x, y}, {x0, y0}], {x0, y0}, {x, y},
Weights -> 1/observations^2]
fin de edición
Una ventaja de utilizar una técnica estadística como esta es que puede producir intervalos de confianza para los parámetros (que son las coordenadas del dispositivo) e incluso una elipse de confianza simultánea para la ubicación del dispositivo.
ellipsoid = fit["ParameterConfidenceRegion", ConfidenceLevel -> 0.95];
fit["ParameterConfidenceIntervalTable", ConfidenceLevel -> 0.95]
Es instructivo trazar los datos y la solución:
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]
Los puntos blancos son las ubicaciones de los puntos de acceso (conocidos).
El gran punto azul es la verdadera ubicación del dispositivo.
Los círculos grises representan los radios medidos. Idealmente, todos se cruzarían en la ubicación real del dispositivo, pero obviamente no lo hacen, debido a un error de medición.
El punto rojo grande es la ubicación estimada del dispositivo.
La elipse roja delimita una región de confianza del 95% para la ubicación del dispositivo.
La forma de la elipse en este caso es de interés: la incertidumbre de ubicación es mayor a lo largo de una línea NW-SE. Aquí, las distancias a tres puntos de acceso (al NE y SW) apenas cambian y existe una compensación de errores entre las distancias a los otros dos puntos de acceso (al norte y sureste).
(Se puede obtener una región de confianza más precisa en algunos sistemas como un contorno de una función de probabilidad; esta elipse es solo una aproximación de segundo orden a dicho contorno).
Cuando los radios se miden sin error, todos los círculos tendrán al menos un punto de intersección mutua y, si ese punto es único, será la solución única.
Este método funciona con dos o más puntos de acceso. Se necesitan tres o más para obtener intervalos de confianza. Cuando solo hay dos disponibles, encuentra uno de los puntos de intersección (si existen); de lo contrario, selecciona una ubicación adecuada entre los dos puntos de acceso.