2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

制御工学Advent Calendar 2017

Day 5

PythonControlで初期条件応答を求める。

Last updated at Posted at 2017-12-04

###目的
Python Controlで、1自由度系(バネマスダンバ系)の伝達関数の初期条件応答を求める。

###事前準備
PythonControlをインストールする

###システムのモデル化
以下の状態方程式について考える。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f37333032302f30323238396566372d313961652d333164632d616361302d3930653565643864666330322e6a706567.jpg

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つの出力を選択することができる。
出力が選択されていない場合、すべての出力する。

引用元:
control.matlab.initial

###サンプルコード
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()


Initial.jpg

サンプルコードは以下に格納。
https://github.com/nnn112358/python-control_test

###参考
PythonControlをインストールする

PythonControlで1自由度系の伝達関数を求める。

PythonControlで2自由度系の伝達関数を求める。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?