LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
ctmc_uniformization.m
1function [pi,kmax]=ctmc_uniformization(pi0,Q,t,tol,maxiter)
2% [PI,KMAX]=CTMC_UNIFORMIZATION(PI0,Q,T,TOL,MAXITER)
3
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6if nargin<4%~exist('tol','var')
7 tol = 1e-12;
8end
9if nargin<5%~exist('maxiter','var')
10 maxiter = 100;
11end
12q=1.1*max(abs(diag(Q)));
13Qs=speye(size(Q))+sparse(Q)/q;
14k=0;
15s=1;
16r=1;
17iter=0;
18kmax=1;
19while iter<maxiter
20 iter=iter+1;
21 k=k+1;
22 r=r*(q*t)/k;
23 s=s+r;
24 if (1-exp(-q*t)*s)<=tol
25 kmax=k;
26 break;
27 end
28end
29
30pi=pi0*(exp(-q*t));
31P=pi0;
32ri=exp(-q*t);
33for j=1:kmax
34 P=P*Qs;
35 ri=ri*(q*t/j);
36 pi=pi+ri*P;
37end
38end