4 % @brief Laplace approximation
for normalizing constant.
10 % @brief Laplace approximation
for normalizing constant.
11 % @fn pfqn_lap(L, N, Z)
12 % @param L Service demand matrix.
13 % @param N Population vector.
14 % @param Z Think time vector.
15 % @
return logI Logarithm of normalizing constant approximation.
18function [logI] = pfqn_lap(L,N,Z)
19% [LOGI] = PFQN_LAP(L,N,Z)
22% f = @(x) 1-x + sum((N+x*L)./(Z+x*L));
24% logIv = log(Ntot) - sum(factln(N)); % coeff
25% logIv = logIv - + sum(N.*log(Z+L.*expv0)); % f(u0)
26% logIv = logIv + 0.5*log(2*pi) - 0.5*log(sum((N./Ntot)./(Z./(Ntot.*L)+u0).^2)) ; % f
''(u0)
27% logIv = logIv - 0.5*log(Ntot);
30f = @(x) 1-sum(N.*L./(Z+Ntot*L.*x));
31u0 = fzero(f,1,optimset(
'Display',
'off'));
36% f2 = sum((N./Ntot)./(Z./(Ntot.*L)+u0).^2);
37% logI = log(1-normcdf(0,u0,f2));
41 initSign = f(0.001)/abs(f(0.001));
44 if fu0/abs(fu0) ~= initSign
53logI = log(Ntot) - sum(factln(N)); % coeff
54logI = logI - Ntot*u0 + sum(N.*log(Z+L.*u0*Ntot)); % f(u0)
55logI = logI + 0.5*log(2*pi) - 0.5*log(sum((N./Ntot)./(Z./(Ntot.*L)+u0).^2)) ; % f
''(u0)
56logI = logI - 0.5*log(Ntot);
58% absf2 = sum((N./Ntot)./(Z./(Ntot.*L)+u0).^2); % |f
''(u0)|
59% f2 = sum((N./Ntot)./(Z./(Ntot.*L)+u0).^2);
60% f3 = -2 * sum((N./Ntot)./(Z./(Ntot.*L)+u0).^3);
61% f4 = 6 * sum((N./Ntot)./(Z./(Ntot.*L)+u0).^4);
63% logI3 = log(Ntot) - sum(factln(N)); % coeff
64% logI3 = logI3 - Ntot*u0 + sum(N.*log(Z+L.*u0*Ntot)); % f(u0)
65% logI3 = logI3 + (1/2)*log(2*pi/absf2) - (3/2)*log(Ntot);
66% logI3 = logI3 + log(f4/(8*f2^2) - 5*f3^2/(24*f2^3));