Pythonで伝達関数を部分分数分解する

制御工学ではよく伝達関数の性質を調べるために部分分数分解をすることがある。部分分数分解とは分数の分母を因数分解し、それらをいくつかの分数の和に分解することを指す。例えば

\begin{align}
\frac{1}{(x+p_{1})(x+p_{2})}=\frac{k_{1}}{x+p_{1}}+\frac{k_{2}}{x+p_{2}}
\end{align}

こんな感じで行う。実際には複雑な手続きを踏み分解するが今回はPythonで処理を行う。

今回分解する分数は

\begin{align}
y(s)=\frac{6}{2s^4+8s^2+8s}
\end{align}

これをPythonで部分分数分解するには

import sympy as sp

s=sp.symbols('x')
P = 6/(2*s**4+8*s**2+8*s)

print(sp.apart(P))

とすればいい。

コメント

タイトルとURLをコピーしました