Le misure del raggio sono sicuramente soggette a qualche errore. Mi aspetto che la quantità di errore sia proporzionale ai raggi stessi. Supponiamo che le misurazioni siano altrimenti imparziali. Una soluzione ragionevole utilizza quindi un raccordo dei minimi quadrati non lineari ponderati , con pesi inversamente proporzionali ai raggi quadrati.
Questa è roba standard disponibile in (tra le altre cose) di Python, R
, Mathematica , e molti pacchetti statistici full-optional, quindi mi limiterò a illustrarlo. Ecco alcuni dati ottenuti misurando le distanze, con errore relativo del 10%, a cinque punti di accesso casuali che circondano la posizione del dispositivo:
Mathematica richiede solo una riga di codice e nessun tempo misurabile della CPU per calcolare l'adattamento:
fit = NonlinearModelFit[data, Norm[{x, y} - {x0, y0}], {x0, y0}, {x, y}, Weights -> 1/observations^2]
Modificare--
Per grandi raggi, si possono trovare soluzioni più accurate (sferiche o ellissoidali) semplicemente sostituendo la distanza euclidea Norm[{x, y} - {x0, y0}]
con una funzione per calcolare la distanza sferica o ellissoidale. In Mathematica questo potrebbe essere fatto, ad esempio , tramite
fit = NonlinearModelFit[data, GeoDistance[{x, y}, {x0, y0}], {x0, y0}, {x, y},
Weights -> 1/observations^2]
--end di modifica
Uno dei vantaggi dell'utilizzo di una tecnica statistica come questa è che può produrre intervalli di confidenza per i parametri (che sono le coordinate del dispositivo) e persino un'ellisse di confidenza simultanea per la posizione del dispositivo.
ellipsoid = fit["ParameterConfidenceRegion", ConfidenceLevel -> 0.95];
fit["ParameterConfidenceIntervalTable", ConfidenceLevel -> 0.95]
È istruttivo tracciare i dati e la soluzione:
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]
I punti bianchi sono le posizioni (note) del punto di accesso.
Il grande punto blu è la vera posizione del dispositivo.
I cerchi grigi rappresentano i raggi misurati. Idealmente, si intersecherebbero tutti nella posizione reale del dispositivo, ma ovviamente non lo fanno, a causa di un errore di misurazione.
Il grande punto rosso è la posizione stimata del dispositivo.
L'ellisse rossa delimita un'area di confidenza del 95% per la posizione del dispositivo.
La forma dell'ellisse in questo caso è interessante: l'incertezza della posizione è maggiore lungo una linea NW-SE. Qui, le distanze da tre punti di accesso (verso NE e SW) cambiano a malapena e c'è un compromesso tra gli errori tra le distanze rispetto agli altri due punti di accesso (a nord e sud-est).
(Una regione di confidenza più accurata può essere ottenuta in alcuni sistemi come contorno di una funzione di probabilità; questa ellisse è solo un'approssimazione del secondo ordine a tale contorno.)
Quando i raggi vengono misurati senza errori, tutti i cerchi avranno almeno un punto di intersezione reciproca e - se quel punto è unico - sarà la soluzione unica.
Questo metodo funziona con due o più punti di accesso. Sono necessari tre o più per ottenere intervalli di confidenza. Quando sono disponibili solo due, trova uno dei punti di intersezione (se esistono); in caso contrario, seleziona una posizione appropriata tra i due punti di accesso.