butools.dmap.MarginalDistributionFromDMMAP

butools.dmap.MarginalDistributionFromDMMAP()
Matlab: [alpha, A] = MarginalDistributionFromDMMAP(D, precision)
Mathematica: {alpha, A} = MarginalDistributionFromDMMAP[D, precision]
Python/Numpy: alpha, A = MarginalDistributionFromDMMAP(D, precision)

Returns the discrete phase type distributed marginal distribution of a discrete marked Markovian arrival process.

Parameters:

D : list/cell of matrices of shape(M,M), length(N)

The D0...DN matrices of the DMMAP

precision : double, optional

Numerical precision for checking if the input is valid. The default value is 1e-14

Returns:

alpha : matrix, shape (1,M)

The initial probability vector of the discrete phase type distributed marginal distribution

A : matrix, shape (M,M)

The transient generator of the discrete phase type distributed marginal distribution

Examples

For Matlab:

>>> D0 = [0.34, 0, 0; 0.06, 0.05, 0.03; 0.11, 0.13, 0];
>>> D1 = [0.3, 0, 0; 0.16, 0.18, 0.05; 0.15, 0.04, 0.09];
>>> D2 = [0, 0.01, 0; 0.1, 0.07, 0.08; 0.13, 0.12, 0.13];
>>> D3 = [0.35, 0, 0; 0, 0.18, 0.04; 0.06, 0.03, 0.01];
>>> [a, A] = MarginalDistributionFromDMMAP({D0, D1, D2, D3});
>>> disp(a);
      0.96166     0.030652    0.0076858
>>> disp(A);
         0.34            0            0
         0.06         0.05         0.03
         0.11         0.13            0

For Mathematica:

>>> D0 = {{0.34, 0, 0},{0.06, 0.05, 0.03},{0.11, 0.13, 0}};
>>> D1 = {{0.3, 0, 0},{0.16, 0.18, 0.05},{0.15, 0.04, 0.09}};
>>> D2 = {{0, 0.01, 0},{0.1, 0.07, 0.08},{0.13, 0.12, 0.13}};
>>> D3 = {{0.35, 0, 0},{0, 0.18, 0.04},{0.06, 0.03, 0.01}};
>>> {a, A} = MarginalDistributionFromDMMAP[{D0, D1, D2, D3}];
>>> Print[a];
{0.9616624523170234, 0.030651790446894853, 0.007685757236081784}
>>> Print[A];
{{0.34, 0, 0},
 {0.06, 0.05, 0.03},
 {0.11, 0.13, 0}}

For Python/Numpy:

>>> D0 = ml.matrix([[0.34, 0, 0],[0.06, 0.05, 0.03],[0.11, 0.13, 0]])
>>> D1 = ml.matrix([[0.3, 0, 0],[0.16, 0.18, 0.05],[0.15, 0.04, 0.09]])
>>> D2 = ml.matrix([[0, 0.01, 0],[0.1, 0.07, 0.08],[0.13, 0.12, 0.13]])
>>> D3 = ml.matrix([[0.35, 0, 0],[0, 0.18, 0.04],[0.06, 0.03, 0.01]])
>>> a, A = MarginalDistributionFromDMMAP([D0, D1, D2, D3])
>>> print(a)
[[ 0.96166  0.03065  0.00769]]
>>> print(A)
[[ 0.34  0.    0.  ]
 [ 0.06  0.05  0.03]
 [ 0.11  0.13  0.  ]]