###目的
Python Controlで、1自由度系(バネマスダンバ系)の伝達関数の初期条件応答を求める。
###事前準備
PythonControlをインストールする
m:質量[kg]
k:ばね定数[N/m]
c:粘性減衰係数[N・s/m]
f:力[N]
G(s)=\frac{Y(s)}{U(s)}=\frac{1}{ms^2+cs+k}
###初期条件応答
Python Controlは初期条件応答は以下の関数で求める。
control.matlab.initial(sys, T=None, X0=0.0, input=None, output=None, return_x=False)
- Parameters:
- sys:LTIシステム(線型時不変システム)の 状態空間or伝達関数
- T:None。
- X0: 初期値(default=0)、数値は配列に自動変換。
- input: None。
- output: int型、このシミュレーションからの出力。
control.matlab.initialは線形システムの初期応答を求めることができる。
システムに複数の出力(MIMO)がある場合は、オプションで1つの出力を選択することができる。
出力が選択されていない場合、すべての出力する。
###サンプルコード
responce_initial.py
#!/usr/bin/env python
from control.matlab import *
from matplotlib import pyplot as plt
from scipy import arange
def main():
k=1.0
m=0.1
c=0.1
num = [0, 0,1]
den = [m, c, k]
sys1 = tf(num, den)
print sys1
(y1a, T1a) = initial(sys1,T = arange(0, 10, 0.01))
plt.axhline(0, color="b", linestyle="--")
plt.plot(T1a, y1a)
plt.show()
if __name__ == "__main__":
main()
サンプルコードは以下に格納。
https://github.com/nnn112358/python-control_test
###参考
PythonControlをインストールする