LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
map_mmpp2.m
1function MAP=map_mmpp2(MEAN,SCV,SKEW,ACF1)
2% MAP=map_mmpp2(MEAN,SCV,SKEW,ACF1) - Fit a MMPP(2) as a MAP
3%
4% Input:
5% MEAN: mean inter-arrival time of the process
6% SCV: squared coefficient of variation of inter-arrival times
7% SKEW: skewness of inter-arrival times (-1 => automatic minimization,
8% applies only to SCV>1)
9% ACF1: lag-1 autocorrelation coefficient (-1 => maximum feasible
10% autocorrelation)
11%
12% Output:
13% MAP: a MAP in the form of {D0,D1}
14%
15% Examples:
16% - MAP=map_mmpp2(1,2,-1,0.2) MMPP(2) process with minimal skewness
17% - MAP=map_mmpp2(1,2,-1,-1) MMPP(2) process with minimal skewness and
18% maximal autocorrelation
19%
20
21SCV_REQ=SCV; % keep the request for diagnostics, SCV is recomputed below
22FEASTOL=10^(-map_feastol);
23
24E1=MEAN;
25E2=(1+SCV)*E1^2;
26E3=-(2*E1^3-3*E1*E2-SKEW*(E2-E1^2)^(3/2));
27
28% The closed form below solves the moment-matching equations, but nothing in
29% it constrains the solution to be a MAP: outside the MMPP(2) feasible set it
30% returns negative rates, i.e. a D1 with negative entries and a D0 with a
31% positive diagonal. Rowsums stay zero, so the usual generator check does not
32% catch it. Reject the request instead of returning a non-MAP.
33if SCV < 1-FEASTOL
34 error('map_mmpp2: SCV=%g is infeasible, the inter-arrival times of an MMPP(2) are over-dispersed (SCV>=1).', SCV_REQ);
35end
36if abs(SCV-1) <= FEASTOL
37 error('map_mmpp2: SCV=1 is the Poisson boundary, where the MMPP(2) fit is degenerate: the decay rate G2=ACF1/(1-1/SCV)/0.5 divides by zero and every rate comes back NaN. Use map_exponential(%g) for a Poisson process.', MEAN);
38end
39
40% ACF1=RHO0MAX is attained in the limit of a decay rate G2->1; no MMPP(2)
41% exceeds it, and none is negatively autocorrelated
42RHO0MAX=0.5*(1-1/SCV);
43if ACF1~=-1
44 if ACF1 < -FEASTOL
45 error('map_mmpp2: ACF1=%g is infeasible, an MMPP(2) cannot be negatively autocorrelated. Pass ACF1=-1 to request the maximum feasible autocorrelation.', ACF1);
46 end
47 if ACF1 > RHO0MAX+FEASTOL
48 error('map_mmpp2: ACF1=%g exceeds the maximum lag-1 autocorrelation %g feasible at SCV=%g. Pass ACF1=-1 to request it.', ACF1, RHO0MAX, SCV_REQ);
49 end
50end
51
52if ACF1==-1
53 G2=1-10*10^(-map_feastol); % autocorrelation decay rate
54else
55 G2=ACF1/(1-1/SCV)/0.5; % autocorrelation decay rate
56end
57if SKEW==-1 && SCV>1 % determine MAP with nearly minimum third moment
58 E3=(3/2+0.001)*E2^2/E1;
59end
60
61% the SKEW==-1 branch above sits just above E3MIN, which is the infimum of the
62% third moment over the class
63E3MIN=(3/2)*E2^2/E1;
64if E3 < E3MIN-FEASTOL
65 error('map_mmpp2: SKEW=%g gives E3=%g, below the minimum third moment %g feasible at SCV=%g. Pass SKEW=-1 for the minimum-skewness fit.', SKEW, E3, E3MIN, SCV_REQ);
66end
67
68SCV=(E2-E1^2)/E1^2;
69if G2<1e-6
70 mu00=2*(6*E1^3*SCV-E3)/E1/(6*E1^3*SCV+3*E1^3*SCV^2+3*E1^3-2*E3);
71 mu11=0;
72 q01= 9*E1^5*(SCV-1)*(SCV^2-2*SCV+1)/(6*E1^3*SCV-E3)/(6*E1^3*SCV+3*E1^3*SCV^2+3*E1^3-2*E3);
73 q10=-3*(SCV-1)*E1^2/(6*E1^3*SCV-E3);
74else
75 mu00=G2*(-4*E3*G2+4*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3*G2-18*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2-18*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV^2-12*E1^3*G2^2-12*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2*SCV+12*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV+12*E1^3*G2*SCV^2-9*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV+3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)+12*E1^3*G2^2*SCV+9*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^2+12*E1^3*G2+12*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2-3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^3)/(12*E1^3*G2^3*SCV+3*E1^3*SCV^3*G2-12*E1^3*G2^3+18*E1^3*G2^2*SCV^2-3*E1^3*G2+27*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV^2-9*E1^3*G2*SCV^2+18*E1^3*G2^2-12*E1^3*G2^2*SCV+9*E1^3*G2*SCV-12*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^3*SCV-9*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^3*G2-24*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2*SCV^2-(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3*SCV^2+4*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3*G2^2+12*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^3-(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3+2*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3*SCV+9*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2+24*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2*SCV-27*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV+6*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV-12*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^2-24*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2+6*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^3-4*E3*G2^2)/E1;
76 mu11=(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/E1/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3);
77 q01=-3*E1^2*(-6*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV+12*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV-6*G2*SCV*E1^2-3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2+(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/E1/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3+3*E1^2*G2+6*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^2-9*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^2*G2+3*E1^2*G2*SCV^2-E3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/E1/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV-6*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2*SCV+6*E1^2*G2^2*SCV+3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2-G2*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/E1/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3-3*E1^2*G2^2+3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^2*G2^2-3*E1^2*SCV^2*G2^2+G2*SCV*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/E1/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3)/(-45*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV^2+18*G2^2*E1^5*SCV+18*E1^5*G2^3-27*E1^5*G2^2*SCV^2+6*E1^2*G2^2*E3-27*E1^5*G2^2-18*E1^5*G2^3*SCV-18*E1^5*G2*SCV+18*E1^5*G2*SCV^2+3*E1^2*G2*E3-3*E1^2*G2*E3*SCV+(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/E1/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3^2+3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV*E3-36*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2*SCV+36*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2+36*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^2+45*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV-12*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV*E3-3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*E3+9*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV^3+36*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2*SCV^2-6*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^2/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^2*E3+18*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^3*SCV-18*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2^3-9*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))*E1^5/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2);
78 q10=3*(-3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^3-3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV^2+6*E1^3*SCV^2+3*E1^3*G2*SCV^2+3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV^2+6*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2*SCV-E3*SCV-6*E1^3*SCV+(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3*SCV-6*E1^3*G2*SCV-3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*SCV-(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*E3+3*E1^3*G2-3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)*G2+3*E1^3*(-3*E1^3*G2+3*E1^3*G2*SCV-6*E1^3*SCV+E3+(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2)^(1/2))/(-3*E1^3*SCV^2-6*E1^3*SCV-3*E1^3+2*E3)+E3)*E1^2*(-1+G2)/(E3^2-12*E1^3*SCV*E3+6*E1^3*G2*E3-6*G2*SCV*E1^3*E3+18*G2*SCV^3*E1^6-18*E1^6*G2*SCV^2+9*E1^6*G2^2+36*E1^6*SCV^2+18*E1^6*G2*SCV-18*E1^6*SCV*G2^2+9*E1^6*SCV^2*G2^2-18*E1^6*G2);
79end
80% Catch-all: the checks above cover the known infeasible directions, but the
81% authoritative test is the solution itself. An MMPP(2) has non-negative rates
82% by construction, so anything else is not a MAP and must not be returned.
83RATES=[mu00,mu11,q01,q10];
84if ~isreal(RATES) || any(isnan(RATES)) || any(RATES < -FEASTOL)
85 error('map_mmpp2: (MEAN=%g,SCV=%g,SKEW=%g,ACF1=%g) is not MMPP(2)-feasible: the fit gives [mu00 mu11 q01 q10]=%s, which is not a MAP.', ...
86 MEAN, SCV_REQ, SKEW, ACF1, mat2str(RATES,6));
87end
88% a request on the feasibility boundary lands on a zero rate up to roundoff:
89% clear that sign flip, but leave small POSITIVE rates alone -- ACF1=-1 asks
90% for G2=1-1e-7, whose near-uncoupled chain has legitimate rates around 1e-9
91RATES(RATES<0)=0;
92mu00=RATES(1); mu11=RATES(2); q01=RATES(3); q10=RATES(4);
93
94D0=[ -mu00-q01, q01;
95 q10, -mu11-q10];
96D1=[ mu00, 0;
97 0, mu11];
98MAP={D0,D1};
99end
Definition Station.m:245