butools.map.MinimalRepFromRAP

butools.map.MinimalRepFromRAP()
Matlab: [D0, D1] = MinimalRepFromRAP(H0, H1, how, precision)
Mathematica: {D0, D1} = MinimalRepFromRAP[H0, H1, how, precision]
Python/Numpy: D0, D1 = MinimalRepFromRAP(H0, H1, how, precision)

Returns the minimal representation of a rational arrival process.

Parameters:

H0 : matrix, shape (M,M)

The H0 matrix of the rational arrival process

H1 : matrix, shape (M,M)

The H1 matrix of the rational arrival process

how : {“obs”, “cont”, “obscont”}, optional

Determines how the representation is minimized. “cont” means controllability, “obs” means observability, “obscont” means that the rational arrival process is minimized in both respects. The default value is “obscont”

precision : double, optional

Precision used by the Staircase algorithm. The default value is 1e-12.

Returns:

D0 : matrix, shape (M,M)

The D0 matrix of the minimal representation

D1 : matrix, shape (M,M)

The D1 matrix of the minimal representation

References

[R36]P. Buchholz, M. Telek, “On minimal representation of rational arrival processes.” Madrid Conference on Qeueuing theory (MCQT), June 2010.

Examples

For Matlab:

>>> D0 = [-5., 1., 0; 3., -3., 0; 1., 1., -5.];
>>> D1 = [0, 0, 4.; 0, 0, 0; 1., 1., 1.];
>>> [H0, H1] = MinimalRepFromRAP(D0, D1, 'cont');
>>> disp(H0);
    -5     1     0
     3    -3     0
     1     1    -5
>>> disp(H1);
     0     0     4
     0     0     0
     1     1     1
>>> Cm = SimilarityMatrix(H0, D0);
>>> err1 = norm(H0*Cm-Cm*D0);
>>> err2 = norm(H1*Cm-Cm*D1);
>>> disp(max(err1, err2));
   3.4773e-15
>>> [H0, H1] = MinimalRepFromRAP(D0, D1, 'obs');
>>> disp(H0);
      -4.4074       1.6931
      0.84259      -2.5926
>>> disp(H1);
        2.037      0.67725
        2.787       -1.037
>>> Cm = SimilarityMatrix(H0, D0);
>>> err1 = norm(H0*Cm-Cm*D0);
>>> err2 = norm(H1*Cm-Cm*D1);
>>> disp(max(err1, err2));
    8.806e-15
>>> [H0, H1] = MinimalRepFromRAP(D0, D1, 'obscont');
>>> disp(H0);
      -4.4074       1.6931
      0.84259      -2.5926
>>> disp(H1);
        2.037      0.67725
        2.787       -1.037
>>> Cm = SimilarityMatrix(H0, D0);
>>> err1 = norm(H0*Cm-Cm*D0);
>>> err2 = norm(H1*Cm-Cm*D1);
>>> disp(max(err1, err2));
    8.806e-15

For Mathematica:

>>> D0 = {{-5., 1., 0},{3., -3., 0},{1., 1., -5.}};
>>> D1 = {{0, 0, 4.},{0, 0, 0},{1., 1., 1.}};
>>> {H0, H1} = MinimalRepFromRAP[D0, D1, "cont"];
>>> Print[H0];
{{-5., 1., 0.},
 {3., -3., 0.},
 {1., 1., -5.}}
>>> Print[H1];
{{0., 0., 4.},
 {0., 0., 0.},
 {1., 1., 1.}}
>>> Cm = SimilarityMatrix[H0, D0];
>>> err1 = Norm[H0.Cm-Cm.D0];
>>> err2 = Norm[H1.Cm-Cm.D1];
>>> Print[Max[err1, err2]];
4.286666800451802*^-15
>>> {H0, H1} = MinimalRepFromRAP[D0, D1, "obs"];
>>> Print[H0];
{{-4.407407407407407, 1.6931216931216935},
 {0.8425925925925922, -2.592592592592593}}
>>> Print[H1];
{{2.0370370370370363, 0.6772486772486779},
 {2.7870370370370363, -1.0370370370370368}}
>>> Cm = SimilarityMatrix[H0, D0];
>>> err1 = Norm[H0.Cm-Cm.D0];
>>> err2 = Norm[H1.Cm-Cm.D1];
>>> Print[Max[err1, err2]];
8.396702586553632*^-15
>>> {H0, H1} = MinimalRepFromRAP[D0, D1, "obscont"];
>>> Print[H0];
{{-4.407407407407407, 1.6931216931216935},
 {0.8425925925925922, -2.592592592592593}}
>>> Print[H1];
{{2.0370370370370363, 0.6772486772486779},
 {2.7870370370370363, -1.0370370370370368}}
>>> Cm = SimilarityMatrix[H0, D0];
>>> err1 = Norm[H0.Cm-Cm.D0];
>>> err2 = Norm[H1.Cm-Cm.D1];
>>> Print[Max[err1, err2]];
8.396702586553632*^-15

For Python/Numpy:

>>> D0 = ml.matrix([[-5., 1., 0],[3., -3., 0],[1., 1., -5.]])
>>> D1 = ml.matrix([[0, 0, 4.],[0, 0, 0],[1., 1., 1.]])
>>> H0, H1 = MinimalRepFromRAP(D0, D1, "cont")
>>> print(H0)
[[-5.  1.  0.]
 [ 3. -3.  0.]
 [ 1.  1. -5.]]
>>> print(H1)
[[ 0.  0.  4.]
 [ 0.  0.  0.]
 [ 1.  1.  1.]]
>>> Cm = SimilarityMatrix(H0, D0)
>>> err1 = la.norm(H0*Cm-Cm*D0)
>>> err2 = la.norm(H1*Cm-Cm*D1)
>>> print(np.max(err1, err2))
1.82603380554e-15
>>> H0, H1 = MinimalRepFromRAP(D0, D1, "obs")
>>> print(H0)
[[-4.40741  1.69312]
 [ 0.84259 -2.59259]]
>>> print(H1)
[[ 2.03704  0.67725]
 [ 2.78704 -1.03704]]
>>> Cm = SimilarityMatrix(H0, D0)
>>> err1 = la.norm(H0*Cm-Cm*D0)
>>> err2 = la.norm(H1*Cm-Cm*D1)
>>> print(np.max(err1, err2))
7.63152157294e-16
>>> H0, H1 = MinimalRepFromRAP(D0, D1, "obscont")
>>> print(H0)
[[-4.40741  1.69312]
 [ 0.84259 -2.59259]]
>>> print(H1)
[[ 2.03704  0.67725]
 [ 2.78704 -1.03704]]
>>> Cm = SimilarityMatrix(H0, D0)
>>> err1 = la.norm(H0*Cm-Cm*D0)
>>> err2 = la.norm(H1*Cm-Cm*D1)
>>> print(np.max(err1, err2))
7.63152157294e-16