fix error when an IOSystem is combined with a TransferFunction system · python-control/python-control@3729027

@@ -230,3 +230,25 @@ def test_string_inputoutput():

230230231231

P_s2 = ct.interconnect([P1_iosys, P2_iosys], inputs=['u1'], output='y2')

232232

assert P_s2.output_index == {'y2' : 0}

233+234+

def test_linear_interconnect():

235+

tf_ctrl = ct.tf(1, (10.1, 1), inputs='e', outputs='u')

236+

tf_plant = ct.tf(1, (10.1, 1), inputs='u', outputs='y')

237+

ss_ctrl = ct.ss(1, 2, 1, 2, inputs='e', outputs='u')

238+

ss_plant = ct.ss(1, 2, 1, 2, inputs='u', outputs='y')

239+

nl_ctrl = ct.NonlinearIOSystem(

240+

lambda t, x, u, params: x*x,

241+

lambda t, x, u, params: u*x, states=1, inputs='e', outputs='u')

242+

nl_plant = ct.NonlinearIOSystem(

243+

lambda t, x, u, params: x*x,

244+

lambda t, x, u, params: u*x, states=1, inputs='u', outputs='y')

245+246+

assert isinstance(ct.interconnect((tf_ctrl, tf_plant), inputs='e', outputs='y'), ct.LinearIOSystem)

247+

assert isinstance(ct.interconnect((ss_ctrl, ss_plant), inputs='e', outputs='y'), ct.LinearIOSystem)

248+

assert isinstance(ct.interconnect((tf_ctrl, ss_plant), inputs='e', outputs='y'), ct.LinearIOSystem)

249+

assert isinstance(ct.interconnect((ss_ctrl, tf_plant), inputs='e', outputs='y'), ct.LinearIOSystem)

250+251+

assert ~isinstance(ct.interconnect((nl_ctrl, ss_plant), inputs='e', outputs='y'), ct.LinearIOSystem)

252+

assert ~isinstance(ct.interconnect((nl_ctrl, tf_plant), inputs='e', outputs='y'), ct.LinearIOSystem)

253+

assert ~isinstance(ct.interconnect((ss_ctrl, nl_plant), inputs='e', outputs='y'), ct.LinearIOSystem)

254+

assert ~isinstance(ct.interconnect((tf_ctrl, nl_plant), inputs='e', outputs='y'), ct.LinearIOSystem)