17. 安定判別

安定条件と安定判別

伝達関数\(G(s)\)をもつシステムが安定であるための条件は、\(G(s)\)の分母多項式=0、すなわち特性方程式の根の実部が負であることである。
このことから、例えば一次遅れ要素であればその特性方程式は\(d(s)=s+a=0\)なので、特性根は\(p=-a\)となるので\(a\gt0\)のとき特性根が負の実根となり、\(G(s)\)は安定と判別できる。二次遅れ要素の場合は、特性方程式は\(d(s)=s^2+a_1s+a_0=0\)なので、特性根\(p_1,p_2\)は$$p_1,p_2=\frac{-a_1\pm \sqrt{a_1^2-4a_0}}{2}$$となる。従って、\(a_1,a_0\gt0\)であれば特性根の実部は負となるので、\(G(s)\)は安定と判別できる。また、\(a_1,a_0\)のどちらか一方が負か両方が負ならば不安定と判別できる。これより、特性方程式の係数\(a_1,a_0\)から安定判別できることになる。
特性方程式\(d(s)=0\)が3次以上になると根を求めることが難しくなり、5次以上では根と係数の解析的な関係はない(解の公式はない)。根が求められなくても特性方程式の係数から根の実数部がすべて負であるかどうかを判定することができ、それにより安定判別する手法がある。以下に特性方程式の係数から安定判別する代表的な方法である、ラウスの安定判別法を示す。フルビッツの安定判別法も有名だが本質的にラウスの安定判別法と同等なので、これについては参考文献を参照して欲しい。これらの安定判別法はアルゴリズムが明確であり、ラウス表の作成はScilabの関数routh_tにも実装されている。実際に扱う特性方程式の次数は高いので、アルゴリズムを実装したプログラムを利用するのが適していると思う。また、これらの安定判別法の利用法としては、使用例に示すように特性方程式が得られたシステムの安定条件の範囲を絞ることなどがある。

ラウスの安定判別法

特性方程式$$a_0s^n+a_1s^{n-1}+a_2s^{n-2}+\cdots$$ $$+a_{n-1}s+a_n=0$$の各係数の符号が異なるか0がある場合は不安定と判別する。それ以外の場合は以下の表を作成する。

\(s^n\)\(a_0\)\(a_2\)\(a_4\)\(a_6\)\(\cdots\)
\(s^{n-1}\)\(a_1\)\(a_3\)\(a_5\)\(a_7\)\(\cdots\)
\(s^{n-2}\)\(b_1\)\(b_2\)\(b_3\)\(\cdots\)
\(s^{n-3}\)\(c_1\)\(c_2\)\(\cdots\)
\(s^{n-4}\)\(d_1\)\(d_2\)\(\cdots\)
\(\vdots\)\(\vdots\)\(\vdots\)
\(s^0\)\(a_n\)
ラウス表

\(b_1=\frac{a_1a_2-a_0a_3}{a_1}\) , \(b_2=\frac{a_1a_4-a_0a_5}{a_1}\) , \(b_3=\frac{a_1a_6-a_0a_7}{a_1}\) , \(c_1=\frac{b_1a_3-a_1b_2}{b_1}\) , \(c_2=\frac{b_1a_5-a_1b_3}{b_1}\) , \(d_1=\frac{c_1b_2-b_1c_2}{c_1}\) , \(d_2=\frac{c_1b_3-b_1c_3}{c_1}\)
$$b_i=-\frac{1}{a_1}\left|\begin{array}{rr} a_0 & a_{2i} \\ a_1 & a_{2i+1}\end{array} \right| $$$$c_i=-\frac{1}{b_1}\left|\begin{array}{rr} a_1 & a_{2i+1} \\ b_1 & b_{i+1}\end{array} \right| $$$$d_i=-\frac{1}{c_1}\left|\begin{array}{rr} b_1 & b_{i+1} \\ c_1 & c_{i+1}\end{array} \right| , \cdots (i=1,2,\cdots)$$
表の3行目以降の係数は、上式を用いて逐次求められる。

ラウス表の左端の列の係数\(a_0, a_1, b_1, c_1, d_1, \cdots\)が全て正のとき特性根の実部は全て負となり安定と判別できる。1つでも負の係数がある場合は不安定であり、係数の符号の反転する回数に等しい個数の不安定根をもつ。

安定判別法の使用例

伝達関数\(G(s)=\frac{n(s)}{d(s)}=\frac{1}{s^3+5s^2+6s+K}\)において\(G(s)\)が安定となる\(K\)の範囲を求める。

\(s^3\)\(1\)\(6\)\(0\)
\(s^2\)\(5\)\(K\)\(0\)
\(s\)\(\frac{30-K}{5}\)\(0\)
\(s^0\)\(K\)\(0\)

特性方程式は、\(d(s)=s^3+5s^2+6s+K=0\)であり、特性方程式の各係数の符号が同じであることが第1条件なので、\(K\gt0\)である。次にラウス表を作成する。ラウス表の左端の列の係数条件は、$$\frac{30-K}{5}\gt0 ,   K\gt0$$なので、\(K \lt 30\)となる。以上より、\(G(s)\)を安定とする\(K\)の範囲は、\(0\lt K \lt 30\)となる。

Scilab routh_t(ラウス表の作成)の使用による解析例

安定判別法の簡単な使用例をScilabのスクリプトで示す。
特性方程式\(d(s)=s^3+5s^2+6s+K=0\)の係数から、 \(K\gt0\)と分かるので、\(K\)を増加させてラウス表を作成し、ラウス表の左端の列の係数を見ることで、\(G(s)\)を安定とする\(K\)の範囲を求める。この方法で\(G(s)\)を安定とする条件は分かるが、望みの応答となる条件はわからないことに注意することが必要である。通常は、この後に時間応答や周波数応答を求めて、最終的な安定条件を決定する。

//ラウス表による安定判別
clear; clf();
s=%s;

//特性方程式d(s),Kの範囲を探索(K=0~40)
for K=0:1:40
d=s^3+5*s^2+6*s+K;
routh_t(d); /* ラウス表の作成 */
end