Assignment_1 - Least Square Adjustment

Input Data

require(openxlsx)
setwd("C:/Documentos/Mestrado_UEFS/Disciplinas/IC961_2021_2S_Photogrammetry and Remote Sensing/Atividades")

Coords<- read.xlsx("Coords.xlsx")[,2:4]
Lb <- read.xlsx("Coords.xlsx")[,5]


x_0 <- c(9350.0,1510.0,602.0)

b) Convergernce Criteria

limiar <- 0.02
dif <- 100

LSA

 while (dif > limiar) {

L_0 <- vector()
for (i in 1:nrow(Coords)) {
 L_0[i] <- sqrt(abs((Coords[i,1]-x_0[1])^2+(Coords[i,2]-x_0[2])^2+(Coords[i,3]-x_0[3])^2))
  
}

A <- matrix(nrow =nrow(Coords),ncol = 3 )
for (i in 1:nrow(Coords)) {
  A[i,1] <- -(Coords[i,1]-x_0[1]) /sqrt(abs((Coords[i,1]-x_0[1])^2+(Coords[i,2]-x_0[2])^2+(Coords[i,3]-x_0[3])^2))
  A[i,2] <- -(Coords[i,2]-x_0[2]) /sqrt(abs((Coords[i,1]-x_0[1])^2+(Coords[i,2]-x_0[2])^2+(Coords[i,3]-x_0[3])^2))
  A[i,3] <- -(Coords[i,3]-x_0[3]) /sqrt(abs((Coords[i,1]-x_0[1])^2+(Coords[i,2]-x_0[2])^2+(Coords[i,3]-x_0[3])^2))
}

L= L_0 - Lb

N <- (t(A) %*% A)
U <- (t(A) %*% L)
x <-  - (solve(N) %*% U)


xa <- x_0 + x
xa
x_0 <-  xa
dif <- limiar


for (k in 1:3) {
  if (abs(x[k])> limiar) {
    dif <- abs(x[k])
  }
}
 }

xa
##          [,1]
## [1,] 9365.947
## [2,] 1578.612
## [3,]  602.539

Quality Evaluation

 V <- ( A %*% x )+ L
n <-  nrow(Coords)
u <-  3

sigma_post <- (t(V) %*% V)/ (n-u)
VCM <- as.vector(sigma_post) * solve(N) 

std <- vector()
for (i in 1:3) {
  std[i] <- sqrt(VCM[i,i])
}

std
## [1] 0.1825740 0.1802097 5.1832767