1function V = mam_transient2(B, L, F, Lv, T, n, m, s)
2%MAM_TRANSIENT2 Laplace-domain transient V(s,n,m)
for a closed (finite) QBD.
3% V = MAM_TRANSIENT2(B, L, F, Lv, T, n, m, s) returns
the Laplace transform
4% (at complex argument s) of
the transient transition-probability matrix from
5% level n to level m of a finite piecewise level-dependent QBD with regime
6% thresholds T;
the top level
is T(end).
8% Block cell arrays follow
the same convention as MAM_TRANSIENT2_OPEN, with
9% K = length(T)-1 regimes and Lv{K+1}
the top boundary level.
11% Ported from
the transient-QBD research code (Horvath et al. formulation).
13% Copyright (c) 2012-2026, Imperial College London
28 Ik = eye(size(L{k}, 1));
29 [G, R] = qbd_fundmat(B{k}, L{k} - s*Ik, F{k},
'GR');
31 [G, R] = qbd_fundmat(F{k}, L{k} - s*Ik, B{k},
'GR');
32 Ghs{k} = G; Rhs{k} = R;
45 num = [mxpow(Ghs{k}, d-1), Gs{k}; Ghs{k}, mxpow(Gs{k}, d-1)];
46 den = [Ik, mxpow(Gs{k}, d);
47 mxpow(Ghs{k}, d), Ik];
49 SvHn{k} = SH(1:NN, 1:NN);
50 SvH0{k} = SH(1:NN, NN+1:2*NN);
51 SvHhn{k} = SH(NN+1:2*NN, 1:NN);
52 SvHh0{k} = SH(NN+1:2*NN, NN+1:2*NN);
54 NN1 = size(Lv{k+1}, 1);
55 SvH0{k} = zeros(NN1, NN);
57 SvHhn{k} = zeros(NN, NN1);
62 NNK = size(Lv{K+1}, 1);
64 SY{K} = SvH0{K} + SvHn{K} * ((s*eye(NNK) - Lv{K+1} - B{K}*SvHhn{K}) \ (B{K} * SvHh0{K}));
66 NNk1 = size(Lv{k+1}, 1);
67 SY{k} = SvH0{k} + SvHn{k} * ((s*eye(NNk1) - Lv{k+1} - F{k+1}*SY{k+1} - B{k}*SvHhn{k}) \ (B{k} * SvHh0{k}));
72 SYh{1} = SvHhn{1} + SvHh0{1} * ((s*eye(NN1) - Lv{1} - F{1}*SvH0{1}) \ (F{1} * SvHn{1}));
75 SYh{k} = SvHhn{k} + SvHh0{k} * ((s*eye(NNk) - Lv{k} - B{k-1}*SYh{k-1} - F{k}*SvH0{k}) \ (F{k} * SvHn{k}));
81 SV{l+1, l+1} = (s*eye(NN1) - Lv{1} - F{1}*SY{1}) \ eye(NN1);
83 SV{l+1, l+1} = (s*eye(NNK) - Lv{K+1} - B{K}*SYh{K}) \ eye(NNK);
85 NNl1 = size(Lv{l+1}, 1);
86 SV{l+1, l+1} = (s*eye(NNl1) - Lv{l+1} - F{l+1}*SY{l+1} - B{l}*SYh{l}) \ eye(NNl1);
89 NNk1 = size(Lv{k+1}, 1);
90 SV{k+1, l+1} = (s*eye(NNk1) - Lv{k+1} - F{k+1}*SY{k+1} - B{k}*SvHhn{k}) \ (B{k} * SvHh0{k} * SV{k, l+1});
93 SV{K+1, l+1} = (s*eye(NNK) - Lv{K+1} - B{K}*SvHhn{K}) \ (B{K} * SvHh0{K} * SV{K, l+1});
96 NNk1 = size(Lv{k+1}, 1);
97 SV{k+1, l+1} = (s*eye(NNk1) - Lv{k+1} - F{k+1}*SvH0{k+1} - B{k}*SYh{k}) \ (F{k+1} * SvHn{k+1} * SV{k+2, l+1});
100 SV{1, l+1} = (s*eye(NN1) - Lv{1} - F{1}*SvH0{1}) \ (F{1} * SvHn{1} * SV{2, l+1});
104 pos = find(T > n, 1);
105 if isempty(pos), kn = K+1;
else, kn = pos - 1; end
106 pos = find(T > m, 1);
107 if isempty(pos), km = K+1;
else, km = pos - 1; end
109 NN = size(Lv{kn}, 1);
123 num = [mxpow(Ghs{kn}, d1-1), Gs{kn}; Ghs{kn}, mxpow(Gs{kn}, d1-1)];
124 den = [II, mxpow(Gs{kn}, d1); mxpow(Ghs{kn}, d1), II];
126 HTnn = Tmp(1:NN, 1:NN);
127 HTn0 = Tmp(1:NN, NN+1:2*NN);
128 HhTnn = Tmp(NN+1:2*NN, 1:NN);
129 HhTn0 = Tmp(NN+1:2*NN, NN+1:2*NN);
132 num = [mxpow(Ghs{kn}, d2-1), Gs{kn}; Ghs{kn}, mxpow(Gs{kn}, d2-1)];
133 den = [II, mxpow(Gs{kn}, d2); mxpow(Ghs{kn}, d2), II];
135 HnTn = Tmp(1:NN, 1:NN);
136 HnT0 = Tmp(1:NN, NN+1:2*NN);
137 HhnTn = Tmp(NN+1:2*NN, 1:NN);
138 HhnT0 = Tmp(NN+1:2*NN, NN+1:2*NN);
141 Yn = HTn0 + HTnn * ((s*eye(NNK) - Lv{K+1} - B{K}*HhTnn) \ (B{K} * HhTn0));
143 NNkn1 = size(Lv{kn+1}, 1);
144 Yn = HTn0 + HTnn * ((s*eye(NNkn1) - Lv{kn+1} - F{kn+1}*SY{kn+1} - B{kn}*HhTnn) \ (B{kn} * HhTn0));
147 Yhn = HhnTn + HhnT0 * ((s*eye(NN1) - Lv{1} - F{1}*HnT0) \ (F{1} * HnTn));
149 NNkn = size(Lv{kn}, 1);
150 Yhn = HhnTn + HhnT0 * ((s*eye(NNkn) - Lv{kn} - B{kn-1}*SYh{kn-1} - F{kn}*HnT0) \ (F{kn} * HnTn));
153 Mkn = s*eye(size(L{kn},1)) - L{kn};
155 Vnl = (Mkn - B{kn}*HhnTn - F{kn}*Yn) \ (B{kn} * HhnT0 * SV{kn, km});
157 Vnl = (Mkn - F{kn}*HTn0 - B{kn}*Yhn) \ (F{kn} * HTnn * SV{kn+1, km});
164 Vnu = (Mkn - B{kn}*HhnTn - F{kn}*Yn) \ (B{kn} * HhnT0 * SV{kn, km+1});
166 Vnu = (Mkn - F{kn}*HTn0 - B{kn}*Yhn) \ (F{kn} * HTnn * SV{kn+1, km+1});
168 Vnn = (s*II - L{kn} - B{kn}*Yhn - F{kn}*Yn) \ II;
174 Vu = Vnu; Vl = Vnl; Lu = T(km+1); Ll = T(km);
176 Vu = Vnu; Vl = Vnn; Lu = T(km+1); Ll = n;
178 Vu = Vnn; Vl = Vnl; Lu = n; Ll = T(km);
182 NN = size(Rs{km}, 1);
184 Zden = [II, mxpow(Rs{km}, Lu-Ll); mxpow(Rhs{km}, Lu-Ll), II];
185 Znum = [mxpow(Rs{km}, m-Ll); mxpow(Rhs{km}, Lu-m)];
187 V = Vl * Z(1:NN, :) + Vu * Z(NN+1:2*NN, :);