伝達関数の状態方程式への変換【control】
control.matlab.tf()で作った伝達関数を状態方程式に変換できる。
code:tf1.py
from control import matlab as ctmt
sys_tf1 = ctmt.tf(1, 1,2,1)
print(sys_tf1)
sys_ss = ctmt.ss(sys_tf1)
print(sys_ss)
sys_tf2 = ctmt.tf(sys_ss)
print(sys_tf2)
伝達関数から状態方程式への変換
code:結果1.txt
<TransferFunction>: sys0
Inputs (1): ['u0']
Outputs (1): ['y0']
1
-------------
s^2 + 2 s + 1
<StateSpace>: sys0
Inputs (1): ['u0']
Outputs (1): ['y0']
States (2): ['x0', 'x1']
A = [-2. -1.
1. 0.]
B = [1.
0.]
C = 0. 1.
D = 0.
うまくいっているようだ。
状態方程式から伝達関数への変換
code:結果2.txt
<TransferFunction>: sys2
Inputs (1): ['u0']
Outputs (1): ['y0']
-4.441e-16 s + 1
----------------
s^2 + 2 s + 1
計算誤差によるものか、元の伝達関数には含まれない微小な零点が生じていることに注意。