clc
clear all
close all

sigma02=1 % variancia por unidade de peso a priori
NSIGN=0.05
HA=437.596

n0=3
n=6
redundancia=n-n0

l=[10.509;5.360;-8.523;-7.348;-3.167;15.881]
A=[1 1 0 0 0 -1;0 0 -1 -1 0 -1;-1 -1 0 -1 0 0]
f=[0.012;0.010;-0.006]
sigma_l=eye(6)*0.006^2
Q_l=sigma_l/sigma02
W_l=inv(Q_l)

% procedimento de ajustamento

k=inv(A*inv(W_l)*A')*f
v=inv(W_l)*A'*k

l_ajust=l+v

Q_v=Q_l*A'*inv(A*inv(W_l)*A')*A*Q_l
Q_l_ajust=Q_l-Q_v

% variancia a posteriori por unidade de peso

s02=v'*W_l*v/redundancia  

disp 'Teste da razao de variancias:'
disp '            '

quiM=icdf('chi2',1-NSIGN/2,redundancia)
quim=icdf('chi2',NSIGN/2,redundancia)
        
if (quim < s02*redundancia/sigma02 & s02*redundancia/sigma02 < quiM)
    disp 'Aceitar o ajustamento'
    op2=0;
else
    disp 'Rejeitar o ajustamento'  
    op2=1;
end

if (op2==0)
    sigma_l_ajust=s02*Q_l_ajust    
end    

HB=HA+l_ajust(1)
HC=HA+l_ajust(6)
HD=HA-l_ajust(4)
