AJO_Ajustelineal_Ejemplo4_triangulacion_estimacion

98 days ago by sevillad1819

Queremos conocer los cuatro ángulos de la figura siguiente. Sin hacer ninguna medición, vamos a hacer una estimación de cómo mejorará la precisión de las mediciones a través de un ajuste. Solo usaremos un dato: que las mediciones tienen la misma precisión (necesitamos saber lo suficiente para escribir la matriz de pesos).

 

# Elegimos como parĂ¡metros las mediciones en A, B, C A = matrix([[1,0,0],[0,1,0],[0,0,1],[-1,-1,-1]]) P = identity_matrix(4) 
       

Para estimar precisiones en el caso lineal no necesitamos la matriz L. Lo que haremos será comparar las matrices $Q_L$ y $Q_{L+V}$, porque son iguales a las matrices de covarianzas ($\Sigma$) salvo por el factor (desconocido) que es la varianza de referencia.

QL = P^(-1) N = transpose(A)*P*A QX = N^(-1) QLV = A*QX*transpose(A) QL.diagonal(); print; QLV.diagonal() 
       
[1, 1, 1, 1]

[3/4, 3/4, 3/4, 3/4]
[1, 1, 1, 1]

[3/4, 3/4, 3/4, 3/4]

Observamos que bajan de 1 a 3/4. Por ejemplo, si una medición tenía una varianza inicial de 10, después del ajuste la conocemos con una varianza de 7.5. En términos de desviaciones típicas, vamos a ver cuánto es la mejora.

sqrt(QLV.diagonal()[0].n())/sqrt(QL.diagonal()[0]).n() 
       
0.866025403784439
0.866025403784439

Esto significa que si hacemos las mediciones con desviación típica $\sigma$, el resultado después del ajuste tendrá desviaciones típicas $0.866\cdot\sigma$.


Supongamos ahora que planeamos repetir la primera medición: la haremos tres veces. Veamos cómo afecta esto a la precisión que estimamos. Ahora son seis mediciones, tres de ellas con la misma ecuación.

A = matrix([[1,0,0],[1,0,0],[1,0,0],[0,1,0],[0,0,1],[-1,-1,-1]]) P = identity_matrix(6) 
       
QL = P^(-1) N = transpose(A)*P*A QX = N^(-1) QLV = A*QX*transpose(A) QL.diagonal(); print; QLV.diagonal() 
       
[1, 1, 1, 1, 1, 1]

[3/10, 3/10, 3/10, 7/10, 7/10, 7/10]
[1, 1, 1, 1, 1, 1]

[3/10, 3/10, 3/10, 7/10, 7/10, 7/10]

Como antes, podemos ver en qué factor se reducen las desviaciones típicas tras el ajuste.

for i in [0..5]: sqrt(QLV.diagonal()[i].n())/sqrt(QL.diagonal()[i]).n() 
       
0.547722557505166
0.547722557505166
0.547722557505166
0.836660026534076
0.836660026534076
0.836660026534076
0.547722557505166
0.547722557505166
0.547722557505166
0.836660026534076
0.836660026534076
0.836660026534076

Observamos que todas son mejores que en el caso con cuatro mediciones, y que la medición que se repitió mejora sustancialmente.