butools.ph.RandomPH

butools.ph.RandomPH()
Matlab: [alpha, A] = RandomPH(order, mean, zeroEntries, maxTrials, prec)
Mathematica: {alpha, A} = RandomPH[order, mean, zeroEntries, maxTrials, prec]
Python/Numpy: alpha, A = RandomPH(order, mean, zeroEntries, maxTrials, prec)

Returns a random phase-type distribution with a given order.

Parameters:

order : int

The size of the phase-type distribution

mean : double, optional

The mean of the phase-type distribution

zeroEntries : int, optional

The number of zero entries in the initial vector, generator matrix and closing vector

maxTrials : int, optional

The maximum number of trials to find a proper PH (that has an irreducible phase process and none of its parameters is all-zero). The default value is 1000.

prec : double, optional

Numerical precision for checking the irreducibility. The default value is 1e-14.

Returns:

alpha : vector, shape (1,M)

The initial probability vector of the phase-type distribution.

A : matrix, shape (M,M)

The transient generator matrix of the phase-type distribution.

Notes

If the procedure fails, try to increase the ‘maxTrials’ parameter.

Examples

For Matlab:

>>> [a, A] = RandomPH(3, 8, 4);
>>> disp(a);
      0.50814            0      0.49186
>>> disp(A);
     -0.38196      0.17775      0.17535
            0     -0.24494       0.1677
            0            0      -0.1555

For Mathematica:

>>> {a, A} = RandomPH[3, 8, 4];
>>> Print[a];
{0.31004439863858146, 0.047613750639457386, 0.6423418507219611}
>>> Print[A];
{{-1.0149650831869401, 1.0149650831869401, 0.},
 {0., -0.09544592783001707, 0.},
 {1.2508164096106962, 0.3338069521032678, -3.0649628355988305}}

For Python/Numpy:

>>> a, A = RandomPH(3, 8, 4)
>>> print(a)
[[ 0.50551  0.       0.49449]]
>>> print(A)
[[-2.40914  0.91736  0.74455]
 [ 1.33012 -2.52955  1.19943]
 [ 0.       0.85372 -0.85372]]