LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
CanonicalFromDPH2.m
1% [beta, B] = CanonicalFromDPH2(alpha, A, prec)
2%
3% Returns the canonical form of an order-2 discrete phase-type
4% distribution.
5%
6% Parameters
7% ----------
8% alpha : matrix, shape (1,2)
9% Initial vector of the discrete phase-type distribution
10% A : matrix, shape (2,2)
11% Transition probability matrix of the discrete phase-type
12% distribution
13% prec : double, optional
14% Numerical precision for checking the input, default value
15% is 1e-14
16%
17% Returns
18% -------
19% beta : matrix, shape (1,2)
20% The initial probability vector of the canonical form
21% B : matrix, shape (2,2)
22% Transition probability matrix of the canonical form
23
24function [beta,B] = CanonicalFromDPH2 (alpha,A)
25
26 global BuToolsCheckInput;
27 if isempty(BuToolsCheckInput)
28 BuToolsCheckInput = true;
29 end
30
31 if BuToolsCheckInput && ~CheckMGRepresentation(alpha,A)
32 error('CanonicalFromDPH2: Input isn''t a valid MG distribution!');
33 end
34
35 if BuToolsCheckInput && (size(A,1)~=2 || size(A,2)~=2)
36 error('CanonicalFromDPH2: Dimension must be 2!');
37 end
38
39 lambda=EigSort(eig(A));
40 e=[1;1];
41 p1=alpha*(e-A*e);
42
43 if lambda(1)>0 && lambda(2)>0 && lambda(1) ~= lambda(2)
44 d1=(1-lambda(1))*(1-p1-lambda(2))/(lambda(1)-lambda(2));
45 d2=p1-d1;
46 beta=[d1*(lambda(1)-lambda(2))/((1-lambda(1))*(1-lambda(2))),(d1+d2)/(1-lambda(2))];
47 B=[lambda(1),1-lambda(1);0,lambda(2)];
48 elseif lambda(1)>0 && lambda(1)==lambda(2)
49 d2=p1;
50 d1=(1-lambda(1))*(1-d2-lambda(1))/lambda(1);
51 beta=[d1*lambda(1)/(1-lambda(1))^2,d2/(1-lambda(1))];
52 B=[lambda(1),1-lambda(1);0,lambda(1)];
53 elseif lambda(1)>0
54 d1=(1-lambda(1))*(1-p1-lambda(2))/(lambda(1)-lambda(2));
55 d2=p1-d1;
56 beta=[(d1*lambda(1)+d2*lambda(2))/((1-lambda(1))*(1-lambda(2))),(d1+d2)*(1-lambda(1)-lambda(2))/((1-lambda(1))*(1-lambda(2)))];
57 B=[lambda(1)+lambda(2),1-lambda(1)-lambda(2);lambda(1)*lambda(2)/(lambda(1)+lambda(2)-1),0];
58 end
59end
60