【制御工学】Pythonによる伝達関数のグラフ化


1.はじめに

・前回書いたqiitaのページ( https://qiita.com/sato235/items/f991411074c578d1640c ) に、波形グラフを出力して考察したら面白いのではというコメントをもらったのがきっかけで、本ページを作成。

2.参考

2.1.図書

[1] 南裕樹 著、オーム社、「Pythonによる制御工学入門」

2.2.ウェブページ

a) [1]の著者サポートページ、https://y373.sakura.ne.jp/minami/pyctrl
b) 前回の自頁、https://qiita.com/sato235/items/f991411074c578d1640c
c) controlモジュールのmatlab関数のグラフ化機能、http://matsulib.hatenablog.jp/entry/2013/04/27/093008

3. 伝達関数とグラフ化

まずモジュールのインポート。

import sympy
from control import matlab
import numpy as np
import matplotlib.pyplot as plt

伝達関数を作成

Np = [0,1]
Dp = [1,2,3]
P = matlab.tf(Np, Dp)
print(P)

伝達関数の出力

      1
-------------
s^2 + 2 s + 3

上記の伝達関数に、ステップ関数を入力した場合。

t = np.linspace(0, 3, 1000)
yout, T = matlab.step(P, t)
plt.plot(T, yout,label="test")
plt.axhline(1, color="b", linestyle="--")
plt.legend(bbox_to_anchor=(1, 0.25), loc='upper right', borderaxespad=0, fontsize=11)

伝達関数Pに、インパルス応答関数を入力した場合。

yout, T = matlab.impulse(P, t)
plt.plot(T, yout,label="test")
plt.axhline(0, color="b", linestyle="--")
plt.xlim(0, 3)
plt.legend(bbox_to_anchor=(1, 1), loc='upper right', borderaxespad=0, fontsize=11)

4. 結論

・controlモジュールに、matlab計算機能があることを学んだ。
・同様に、matplotlibの描画機能もあった。
・次は、入力関数を変えて、得られる結果の考察をしたい。