1% [beta, B] = CanonicalFromDPH2(alpha, A, prec)
3% Returns the canonical form of an order-2 discrete phase-type
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
13% prec : double, optional
14% Numerical precision
for checking the input,
default value
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
24function [beta,B] = CanonicalFromDPH2 (alpha,A)
26 global BuToolsCheckInput;
27 if isempty(BuToolsCheckInput)
28 BuToolsCheckInput =
true;
31 if BuToolsCheckInput && ~CheckMGRepresentation(alpha,A)
32 error(
'CanonicalFromDPH2: Input isn''t a valid MG distribution!');
35 if BuToolsCheckInput && (size(A,1)~=2 || size(A,2)~=2)
36 error(
'CanonicalFromDPH2: Dimension must be 2!');
39 lambda=EigSort(eig(A));
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));
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)
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)];
54 d1=(1-lambda(1))*(1-p1-lambda(2))/(lambda(1)-lambda(2));
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];