LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
moment_binomial_from_tail.m
1function b = moment_binomial_from_tail(t)
2% b = moment_binomial_from_tail(t)
3%
4% Converts the survival (tail) probabilities t_m = P(N >= m) of a nonnegative
5% integer random variable into its binomial moments,
6%
7% b_j = E[nchoosek(N,j)] = sum_{m>=j} nchoosek(m-1,j-1) * t_m, j >= 1
8%
9% with b_0 = t_0 = 1. Unlike every other edge of the house of moments this
10% transform is UPPER triangular, so it consumes the whole tail: the result is
11% exact only if the sequence covers the support, i.e. t_m = 0 beyond the last
12% element supplied. This is the natural entry point for a closed queueing
13% network, whose queue lengths are bounded by the population and whose joint
14% survival probabilities are ratios of normalizing constants.
15%
16% Truncating the tail early yields a strict LOWER bound on every b_j, since all
17% the coefficients and all the tail values are nonnegative. The bound is not
18% inherited by the central moments downstream, whose conversion alternates in
19% sign.
20%
21% Input:
22% t: vector of length n+1 holding t_0,...,t_n, i.e. t(i) is P(N >= i-1) and
23% t(1) = 1
24%
25% Output:
26% b: vector of length n+1 holding b_0,...,b_n, with the same orientation as t
27%
28% Example:
29% b = moment_binomial_from_tail([1, 1, 1, 1, 0]); % N = 3 with probability 1
30%
31% Reference:
32% A. Heindl and A. van de Liefvoort. Moment conversions for discrete
33% distributions. PMCCS, 2003.
34
35tcol = t(:);
36n = length(tcol)-1;
37b = moment_housematrix('binomial_from_tail', n) * tcol;
38if isrow(t)
39 b = b.';
40end
41end