【python-control】伝達関数を状態方程式に変換

本ページでは、Python用制御工学モジュール「python-control」で伝達関数を状態方程式に変換する方法とサンプルコードついて解説します。

伝達関数→状態方程式

python-controlのtt2ss()メソッドで伝達関数を状態方程式に変換できます。

書式

sys = ss2tf(sys_tf)

sys_tfにtf()メソッドで定義した伝達関数を入力します・
戻り値sysには状態方程式のパラメータ行列A, B, C, Dが格納されています。

ソースコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*-
from control.matlab import *
from matplotlib import pyplot as plt

def main():
    # 伝達関数の定義
    num = [0.8333, 0.25, 2.083]
    den = [1, 0.4667, 3.833, 0.7917, 1.25]
    sys_tf = tf(num, den)

    # 伝達関数→状態方程式
    sys = tf2ss(sys_tf)

    print("tf=", sys_tf)
    print("sys=", sys)

if __name__ == "__main__":
    main()

実行結果

サンプルプログラムの実行結果です。

tf=
          0.8333 s^2 + 0.25 s + 2.083
----------------------------------------------
s^4 + 0.4667 s^3 + 3.833 s^2 + 0.7917 s + 1.25


sys= A = [[ -6.66133815e-16   1.19233626e-16  -1.38493851e-16   1.25000000e+00]
 [ -1.00000000e+00   1.68409016e-15  -5.38513285e-16  -7.91700000e-01]
 [  0.00000000e+00  -1.00000000e+00   3.49615792e-16   3.83300000e+00]
 [  0.00000000e+00   0.00000000e+00  -1.00000000e+00  -4.66700000e-01]]

B = [[ 2.083 ]
 [-0.25  ]
 [ 0.8333]
 [ 0.    ]]

C = [[ 0.  0.  0. -1.]]

D = [[ 0.]]

関連記事

【Python】制御工学シミュレーション
【制御理論入門】古典・現代制御の基本原理

シェア&フォローお願いします!