h = [2.370; 4.718; -8.224; 2.909; -1.810];
m = [4; 4; 2; 2; 4]*1e-3;
H = [100.127; 115.430];

A = [
   1  0  0
  -1  1  0
   0  1  0
   0  1 -1
   1  0 -1
  ] ;

P = diag(m.^-2) ;

L = [ -H(1) ; 0 ; -H(2) ; 0 ; 0 ] - h ;

X = -inv(A'*P*A)*(A'*P*L);
printf("%10.4f\n", X)

V = A*X + L ;

A'*P*V
[V'*P*V, L'*P*A*X + L'*P*L]
hw = h + V;

[n,r] = size(A)
sigma0 = sqrt(V'*P*V/(n-r))

printf("%10.4f\n", hw)

disp("Pamietajcie o kontroli wyrównanych przewyższeń z przewyższeniami policzonymi z wyrównanych wysokości!")
