1function V = mam_transient2_open(B, L, F, Lv, T, n, m, s)
2%MAM_TRANSIENT2_OPEN Laplace-domain transient V(s,n,m)
for an open (infinite) QBD.
3% V = MAM_TRANSIENT2_OPEN(B, L, F, Lv, T, n, m, s) returns
the Laplace
4% transform (at complex argument s) of
the transient transition-probability
5% matrix from level n to level m of a piecewise level-dependent QBD with
6% regime thresholds T (
the last regime repeats to infinity).
8% Block cell arrays are indexed by regime k = 1..K (K = length(T)):
9% B{k} backward (level-down) block
for regime k
10% L{k} local (level-internal) block used on repeating levels of regime k
11% F{k} forward (level-up) block
for regime k
12% Lv{k} local block on
the boundary level T(k) of regime k
14% Ported from
the transient-QBD research code (Horvath et al. formulation).
16% Copyright (c) 2012-2026, Imperial College London
25 if k < K && T(k+1) - T(k) == 1
31 Ik = eye(size(L{k}, 1));
32 [G, R] = qbd_fundmat(B{k}, L{k} - s*Ik, F{k},
'GR');
34 [G, R] = qbd_fundmat(F{k}, L{k} - s*Ik, B{k},
'GR');
35 Ghs{k} = G; Rhs{k} = R;
48 num = [mxpow(Ghs{k}, d-1), Gs{k}; Ghs{k}, mxpow(Gs{k}, d-1)];
49 den = [Ik, mxpow(Gs{k}, d);
50 mxpow(Ghs{k}, d), Ik];
52 SvHn{k} = SH(1:NN, 1:NN);
53 SvH0{k} = SH(1:NN, NN+1:2*NN);
54 SvHhn{k} = SH(NN+1:2*NN, 1:NN);
55 SvHh0{k} = SH(NN+1:2*NN, NN+1:2*NN);
57 NN1 = size(Lv{k+1}, 1);
58 SvH0{k} = zeros(NN1, NN);
60 SvHhn{k} = zeros(NN, NN1);
68 NNk1 = size(Lv{k+1}, 1);
69 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}));
75 SYh{1} = SvHhn{1} + SvHh0{1} * ((s*eye(NN1) - Lv{1} - F{1}*SvH0{1}) \ (F{1} * SvHn{1}));
79 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}));
85 SV{l+1, l+1} = (s*eye(NN1) - Lv{1} - F{1}*SY{1}) \ eye(NN1);
87 NNl1 = size(Lv{l+1}, 1);
88 SV{l+1, l+1} = (s*eye(NNl1) - Lv{l+1} - F{l+1}*SY{l+1} - B{l}*SYh{l}) \ eye(NNl1);
91 NNk1 = size(Lv{k+1}, 1);
92 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});
95 NNk1 = size(Lv{k+1}, 1);
96 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});
99 SV{1, l+1} = (s*eye(NN1) - Lv{1} - F{1}*SvH0{1}) \ (F{1} * SvHn{1} * SV{2, l+1});
103 pos = find(T > n, 1);
104 if isempty(pos), kn = K;
else, kn = pos - 1; end
105 pos = find(T > m, 1);
106 if isempty(pos), km = K;
else, km = pos - 1; end
108 NN = size(Lv{kn}, 1);
112 thresholdN = (T(kn) == n);
127 num = [mxpow(Ghs{kn}, d1-1), Gs{kn}; Ghs{kn}, mxpow(Gs{kn}, d1-1)];
128 den = [II, mxpow(Gs{kn}, d1); mxpow(Ghs{kn}, d1), II];
130 HTnn = Tmp(1:NN, 1:NN);
131 HTn0 = Tmp(1:NN, NN+1:2*NN);
132 HhTnn = Tmp(NN+1:2*NN, 1:NN);
133 HhTn0 = Tmp(NN+1:2*NN, NN+1:2*NN);
136 num = [mxpow(Ghs{kn}, d2-1), Gs{kn}; Ghs{kn}, mxpow(Gs{kn}, d2-1)];
137 den = [II, mxpow(Gs{kn}, d2); mxpow(Ghs{kn}, d2), II];
139 HnTn = Tmp(1:NN, 1:NN);
140 HnT0 = Tmp(1:NN, NN+1:2*NN);
141 HhnTn = Tmp(NN+1:2*NN, 1:NN);
142 HhnT0 = Tmp(NN+1:2*NN, NN+1:2*NN);
144 NNkn1 = size(Lv{kn+1}, 1);
145 Yn = HTn0 + HTnn * ((s*eye(NNkn1) - Lv{kn+1} - F{kn+1}*SY{kn+1} - B{kn}*HhTnn) \ (B{kn} * HhTn0));
148 num = [mxpow(Ghs{kn}, d2-1), Gs{kn}; Ghs{kn}, mxpow(Gs{kn}, d2-1)];
149 den = [II, mxpow(Gs{kn}, d2); mxpow(Ghs{kn}, d2), II];
151 HnTn = Tmp(1:NN, 1:NN);
152 HnT0 = Tmp(1:NN, NN+1:2*NN);
153 HhnTn = Tmp(NN+1:2*NN, 1:NN);
154 HhnT0 = Tmp(NN+1:2*NN, NN+1:2*NN);
155 HTnn = []; HTn0 = []; HhTnn = []; HhTn0 = [];
160 Yhn = HhnTn + HhnT0 * ((s*eye(NN1) - Lv{1} - F{1}*HnT0) \ (F{1} * HnTn));
162 NNkn = size(Lv{kn}, 1);
163 Yhn = HhnTn + HhnT0 * ((s*eye(NNkn) - Lv{kn} - B{kn-1}*SYh{kn-1} - F{kn}*HnT0) \ (F{kn} * HnTn));
166 Mkn = s*eye(size(L{kn},1)) - L{kn};
168 Vnl = (Mkn - B{kn}*HhnTn - F{kn}*Yn) \ (B{kn} * HhnT0 * SV{kn, km});
170 Vnl = (Mkn - F{kn}*HTn0 - B{kn}*Yhn) \ (F{kn} * HTnn * SV{kn+1, km});
180 Vnu = (Mkn - B{kn}*HhnTn - F{kn}*Yn) \ (B{kn} * HhnT0 * SV{kn, km+1});
182 Vnu = (Mkn - F{kn}*HTn0 - B{kn}*Yhn) \ (F{kn} * HTnn * SV{kn+1, km+1});
185 Vnn = (s*II - L{kn} - B{kn}*Yhn - F{kn}*Yn) \ II;
192 V = Vnl * mxpow(Rs{km}, m - T(km));
194 V = Vnn * mxpow(Rs{km}, m - n);
199 Vu = Vnu; Vl = Vnl; Lu = T(km+1); Ll = T(km);
201 Vu = Vnu; Vl = Vnn; Lu = T(km+1); Ll = n;
203 Vu = Vnn; Vl = Vnl; Lu = n; Ll = T(km);
209 V = Vl * mxpow(Rs{km}, m - T(km));
211 V = SV{kn, kn} * mxpow(Rs{km}, m - n);
216 NN = size(Rs{km}, 1);
218 Zden = [II, mxpow(Rs{km}, Lu-Ll); mxpow(Rhs{km}, Lu-Ll), II];
219 Znum = [mxpow(Rs{km}, m-Ll); mxpow(Rhs{km}, Lu-m)];
221 V = Vl * Z(1:NN, :) + Vu * Z(NN+1:2*NN, :);