butools.map.CheckRAPRepresentation

butools.map.CheckRAPRepresentation()
Matlab: r = CheckRAPRepresentation(H0, H1, prec)
Mathematica: r = CheckRAPRepresentation[H0, H1, prec]
Python/Numpy: r = CheckRAPRepresentation(H0, H1, prec)

Checks if the input matrixes define a continuous time RAP.

Matrices H0 and H1 must have the same size, the dominant eigenvalue of H0 is negative and real, and the rowsum of H0+H1 is 0 (up to the numerical precision).

Parameters:

H0 : matrix, shape (M,M)

The H0 matrix of the RAP to check

H1 : matrix, shape (M,M)

The H1 matrix of the RAP to check

prec : double, optional

Numerical precision, the default value is 1e-14

Returns:

r : bool

The result of the check

Examples

For Matlab:

>>> H0 = [-1., 0, 1.; 0, -2., 0; 1., 0, -3.; 1., 2., 2.];
>>> H1 = [-1., 0, 1.; 0, -2., 0; 1., 0, -3.; 1., 2., 2.];
>>> flag = CheckRAPRepresentation(H0, H1);
CheckRAPRepresentation: D0 is not a quadratic matrix!
>>> disp(flag);
     0
>>> H0 = [-1., 0, 2.; 0, 2., 0; 1., 0, -3.];
>>> H1 = [-1., 0, 1.; 0, -2., 0; 1., 0, -3.];
>>> flag = CheckRAPRepresentation(H0, H1);
CheckRAPRepresentation: A rowsum of D0+D1 is not 0!(precision: 1e-12)
>>> disp(flag);
     0
>>> H0 = [-1., 0, 0; 0, -2., 2.; 0, 3., -3.];
>>> H1 = [0, 0, 1.; 0, -1., 1.; 1., 0, -1.];
>>> flag = CheckRAPRepresentation(H0, H1);
CheckRAPRepresentation: there is an eigenvalue of D0 with non-negative real part (at precision 1e-12)
>>> disp(flag);
     0
>>> H0 = [-2., 0, 0; 0, -1., 1.; 0, -1., -1.];
>>> H1 = [1., 0, 1.; 0, 1., -1.; 1., 0, 1.];
>>> flag = CheckRAPRepresentation(H0, H1);
CheckRAPRepresentation: The dominant eigenvalue of D0 is not real!
>>> disp(flag);
     0
>>> H0 = [-1., 0, 0; 0, -2., 1.; 0, -1., -2.];
>>> H1 = [1., 0, 0; 0, 1., 0; 1., 1., 1.];
>>> flag = CheckRAPRepresentation(H0, H1);
>>> disp(flag);
     1

For Mathematica:

>>> H0 = {{-1., 0, 1.},{0, -2., 0},{1., 0, -3.},{1., 2., 2.}};
>>> H1 = {{-1., 0, 1.},{0, -2., 0},{1., 0, -3.},{1., 2., 2.}};
>>> flag = CheckRAPRepresentation[H0, H1];
"CheckRAPRepresentation: D0 is not a quadratic matrix!"
>>> Print[flag];
False
>>> H0 = {{-1., 0, 2.},{0, 2., 0},{1., 0, -3.}};
>>> H1 = {{-1., 0, 1.},{0, -2., 0},{1., 0, -3.}};
>>> flag = CheckRAPRepresentation[H0, H1];
"CheckRAPRepresentation: A rowsum of D0+D1 is not 0! (precision:"1.*^-12")"
>>> Print[flag];
False
>>> H0 = {{-1., 0, 0},{0, -2., 2.},{0, 3., -3.}};
>>> H1 = {{0, 0, 1.},{0, -1., 1.},{1., 0, -1.}};
>>> flag = CheckRAPRepresentation[H0, H1];
"CheckRAPRepresentation: there is an eigenvalue of D0 with non-negative real part (at precision "1.*^-12")!"
>>> Print[flag];
False
>>> H0 = {{-2., 0, 0},{0, -1., 1.},{0, -1., -1.}};
>>> H1 = {{1., 0, 1.},{0, 1., -1.},{1., 0, 1.}};
>>> flag = CheckRAPRepresentation[H0, H1];
"CheckRAPRepresentation: The dominant eigenvalue of D0 is not real!"
>>> Print[flag];
False
>>> H0 = {{-1., 0, 0},{0, -2., 1.},{0, -1., -2.}};
>>> H1 = {{1., 0, 0},{0, 1., 0},{1., 1., 1.}};
>>> flag = CheckRAPRepresentation[H0, H1];
>>> Print[flag];
True

For Python/Numpy:

>>> H0 = ml.matrix([[-1., 0, 1.],[0, -2., 0],[1., 0, -3.],[1., 2., 2.]])
>>> H1 = ml.matrix([[-1., 0, 1.],[0, -2., 0],[1., 0, -3.],[1., 2., 2.]])
>>> flag = CheckRAPRepresentation(H0, H1)
CheckRAPRepresentation: D0 is not a quadratic matrix!
>>> print(flag)
False
>>> H0 = ml.matrix([[-1., 0, 2.],[0, 2., 0],[1., 0, -3.]])
>>> H1 = ml.matrix([[-1., 0, 1.],[0, -2., 0],[1., 0, -3.]])
>>> flag = CheckRAPRepresentation(H0, H1)
CheckRAPRepresentation: A rowsum of D0+D1 is not 0!
>>> print(flag)
False
>>> H0 = ml.matrix([[-1., 0, 0],[0, -2., 2.],[0, 3., -3.]])
>>> H1 = ml.matrix([[0, 0, 1.],[0, -1., 1.],[1., 0, -1.]])
>>> flag = CheckRAPRepresentation(H0, H1)
CheckRAPRepresentation: there is an eigenvalue of D0 with non-negative real part
>>> print(flag)
False
>>> H0 = ml.matrix([[-2., 0, 0],[0, -1., 1.],[0, -1., -1.]])
>>> H1 = ml.matrix([[1., 0, 1.],[0, 1., -1.],[1., 0, 1.]])
>>> flag = CheckRAPRepresentation(H0, H1)
CheckRAPRepresentation: The dominant eigenvalue of D0 is not real!
>>> print(flag)
False
>>> H0 = ml.matrix([[-1., 0, 0],[0, -2., 1.],[0, -1., -2.]])
>>> H1 = ml.matrix([[1., 0, 0],[0, 1., 0],[1., 1., 1.]])
>>> flag = CheckRAPRepresentation(H0, H1)
>>> print(flag)
True