echo off; clear; format compact;

% ZADANI C. 102
% =============

% Merene hodnoty [m] a vahy:
LL = [
      5.4800  1.50
      5.4950  0.90
      5.4770  1.60
      5.5090  1.40
      5.4870  1.70
      5.4620  0.80
      5.4830  1.00
      5.4740  1.00
      5.4830  1.20
      5.4620  1.20
      5.4860  1.80
      5.4960  0.80
      5.4650  1.00
      5.4810  1.70
      5.5010  1.00
      5.4800  1.30
      5.5050  0.90
      5.5040  0.70
      5.4820  0.70
      5.4740  1.30
];

% ØEŠENÍ 5.1
% obecný postup
% =========================================================================
L = LL(:,1);
X0 = LL(1,1);
l = repmat(LL(1,1),length(LL),1) - L;
A = ones( length(LL),1 );
P = diag( LL(:,2) );

N = A' * P * A;
n = A' * P * l;
dX = - N^(-1) * n;
'Vyrovnaný rozmìr výrobku'
X = X0 + dX

'Smìrodatná odchylka jednotková'
v = A * dX + l;
m0 = (  (v' * P * v)/ (length(L)-length(X))  )^(1/2)

'Smìrodatná odchylka vyrovnané hodnoty'
Q_L = m0^2 * P^-1;
Q_X = m0^2 * N^-1;
m_l = Q_X^(1/2)

'Smìrodatná odchylka prvního (1) a posledního (n) mìøení'
m1 = Q_L(1,1)^(1/2)
mn = Q_L(length(L),length(L))^(1/2)

% vypoèet z odvozenych vzorcu
% =========================================================================
% poèet mìøení
n = length(LL);

'Vyrovnaný rozmìr výrobku'
suma_pl = sum( LL(:,1) .* LL(:,2) );
suma_p = sum( LL(:,2) );
X = suma_pl / suma_p

'Smìrodatná odchylka jednotková'
v = ones(n,1) * X  -  LL(:,1);
suma_pvv = sum( LL(:,2) .* v .* v );
m0 = ( suma_pvv / (n-1) )^(1/2)

'Smìrodatná odchylka vyrovnané hodnoty'
m_l = m0 / suma_p^(1/2)

'Smìrodatná odchylka prvního (1) a posledního (n) mìøení'
% váha mìøení ~ pi
p1 = LL(1,2);
pn = LL(n,2);
m1 = m0 / p1^(1/2)
mn = m0 / pn^(1/2)




