def test_minimal_realization_State(): M = array([[-6.5, 0.5, 6.5, -6.5, 0., 1., 0.], [-0.5, -5.5, -5.5, 5.5, 2., 1., 2.], [-0.5, 0.5, 0.5, -6.5, 3., 4., 3.], [-0.5, 0.5, -5.5, -0.5, 3., 2., 3.], [1., 1., 0., 0., 0., 0., 0.]]) G = State(*matrix_slice(M, (1, 4), corner='sw')) H = minimal_realization(G) assert H.a.shape == (2, 2) # G = State( array([[0., 1., 0., 0., 0.], [-0.1, -0.5, 1., -1., 0.], [0., 0., 0., 1., 0.], [0., 0., 0., 0., 1.], [0., 3.5, 1., -2., 2.]]), array([[0.], [1.], [0.], [0.], [1.]]), array([[0., 3.5, 1., -1., 0.]]), array([[1.]])) H = minimal_realization(G) assert H.a.shape == (4, 4) # G = State( array([[-2., 0., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.], [0., -12., 4., 3.]]), array([[1., 0.], [0., 0.], [0., 0.], [0., 1.]]), array([[1., -9., 0., 0.], [0., -20., 0., 5.]]), array([[0., 0.], [0., 1.]])) H = minimal_realization(G) assert H.a.shape == (3, 3)
def test_minimal_realization_State(): M = array([[-6.5, 0.5, 6.5, -6.5, 0., 1., 0.], [-0.5, -5.5, -5.5, 5.5, 2., 1., 2.], [-0.5, 0.5, 0.5, -6.5, 3., 4., 3.], [-0.5, 0.5, -5.5, -0.5, 3., 2., 3.], [1., 1., 0., 0., 0., 0., 0.]]) G = State(*matrix_slice(M, (1, 4), corner='sw')) H = minimal_realization(G) assert H.a.shape == (2, 2) # G = State(array([[0., 1., 0., 0., 0.], [-0.1, -0.5, 1., -1., 0.], [0., 0., 0., 1., 0.], [0., 0., 0., 0., 1.], [0., 3.5, 1., -2., 2.]]), array([[0.], [1.], [0.], [0.], [1.]]), array([[0., 3.5, 1., -1., 0.]]), array([[1.]])) H = minimal_realization(G) assert H.a.shape == (4, 4) # G = State(array([[-2., 0., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.], [0., -12., 4., 3.]]), array([[1., 0.], [0., 0.], [0., 0.], [0., 1.]]), array([[1., -9., 0., 0.], [0., -20., 0., 5.]]), array([[0., 0.], [0., 1.]])) H = minimal_realization(G) assert H.a.shape == (3, 3)
def test_minimal_realization_Transfer(): G = Transfer( [1., -8., 28., -58., 67., -30.], poly([1, 2, 3., 2, 3., 4, 1 + (2 + 1e-6) * 1j, 1 - (2 + 1e-6) * 1j])) H_f = minimal_realization(G) assert_almost_equal(H_f.num, array([[1]])) H_nf = minimal_realization(G, tol=1e-7) assert_almost_equal(H_nf.num, array([[1., -7., 21., -37., 30.]]))
def test_minimal_realization_Transfer(): G = Transfer([1., -8., 28., -58., 67., -30.], poly([1, 2, 3., 2, 3., 4, 1+(2+1e-6)*1j, 1-(2+1e-6)*1j])) H_f = minimal_realization(G) assert_almost_equal(H_f.num, array([[1]])) H_nf = minimal_realization(G, tol=1e-7) assert_almost_equal(H_nf.num, array([[1., -7., 21., -37., 30.]])) H = minimal_realization(Transfer(eye(4))) assert H._isgain assert not H._isSISO H = minimal_realization(State(eye(4))) assert H._isgain assert not H._isSISO
def test_minimal_realization_State(): M = array([[-6.5, 0.5, 6.5, -6.5, 0., 1., 0.], [-0.5, -5.5, -5.5, 5.5, 2., 1., 2.], [-0.5, 0.5, 0.5, -6.5, 3., 4., 3.], [-0.5, 0.5, -5.5, -0.5, 3., 2., 3.], [1., 1., 0., 0., 0., 0., 0.]]) G = State(*matrix_slice(M, (1, 4), corner='sw')) H = minimal_realization(G) assert_(H.a.shape, (2, 2))