技術士(総合技術監理・機械部門)のブログ

技術士がお届けする,技術,工学,技術者倫理などの話題

pythonで制御系設計1

2021-10-02 20:19:10 | 工学

なんだかんだで 一応開始。ただし教科書は

もう一度おさらいでの

 

にします。

今回は2章から

伝達関数の分母分子の多項式を部分分数展開する方法です。

例題2−1では以下pythonでの記述ですが

num=np.array([2,5,3,6]):matlab:num=[2 5 3 6]

den=np.array([1,6,11,6]):matlab:den=[1 611 6]

すなわち伝達関数

B(s)=2s^3+5s^2+3s+6

ーー  ーーーーーーーーーーーー

A(s)=s^3+6s^2+11s+6

という形を部分分数展開するもので

pythonではfrom control.matlab import *

を使いmatlabのコマンドするのではなく(というかここには無い)

scipyにあるのでした。

scipy.signal.residue

from control.matlab import * <これにはなし
import matplotlib.pyplot as plt <使ってない
import numpy as np
import scipy as sp   <これ

num=np.array([2,5,3,6])
den=np.array([1,6,11,6])
[r,p,k]=sp.signal.residue(num,den)
print(r)
print(p)
print(k)

まわりくどいプログラムですが

結果は

[ 3. -4. -6.]
[-1. -2. -3.]
[2.]

と出ました。

-6       -4           3                  

---- + ----  +  ----           +2

s+3    s+2       s+1

ということです。

control.matlabだけでなくscipyも駆使していくことになりそうです。