本シリーズでは、制御工学で学ぶ基本的な知識から実際の応用例までを、なるべく分かりやすく解説しています。
システムを安全に制御するためには、システムの可制御性を確認して、本当に制御可能なシステムかを確認する必要があります。
前回の記事では、線形システムが可制御性である場合の特徴と制御に必要となる入力を含む状態方程式とフィードバックシステムを紹介しました、
今回の記事では、与えられた線形システムの可制御性を判定する方法を紹介します。
前回のおさらい
線形システムの可制御性を判別する方法を紹介する前に、前回の記事で紹介した内容をまとめておきます。
詳しくは、こちらの記事を参考にしてください。
可制御性を持つ線形システムの特徴
与えられた線形システムが可制御性であるとき、
- 線形システムの固有値λを自由に決定する
- 任意の状態xに到達する
ということが可能になります。
入力を含む状態方程式
線形システムの状態ベクトルxを制御するために、入力信号ベクトルuを含んだ
$$ \dot{\boldsymbol{ x }} = \boldsymbol{ A } \boldsymbol{ x } + \boldsymbol{ B } \boldsymbol{ u } $$
という状態方程式を用いていきます。
フィーバックシステム
入力uが与えられた場合のシステムの出力yを
$$ \boldsymbol{ y } = \boldsymbol{ x } $$
とし、出力y(システムの状態x)に定数要素の-Kを掛け合わせた
$$ \boldsymbol{ u } = – K \boldsymbol{ x } $$
を入力uとする、フィードバックシステムを取り扱います。
この結果、与えられた線形システムの状態方程式が、
$$ \begin{eqnarray} \dot{\boldsymbol{ x }} &=& \boldsymbol{ A } \boldsymbol{ x } \\ \Rightarrow \dot{\boldsymbol{ x }} &=& \left( \boldsymbol{ A } – \boldsymbol{ B } K \right) \boldsymbol{ x } \end{eqnarray} $$
と変換することが出来ます。
今回は、このような線形なフィードバックシステムについて制御可能かを判別する方法を紹介します。
可制御性の判別式
与えられた線形システム
$$ \dot{\boldsymbol{ x }} = \boldsymbol{ A } \boldsymbol{ x } + \boldsymbol{ B } \boldsymbol{ u } $$
の可制御性を判定する方法を紹介します。
まず、線形システムに含まれる行列Aと行列Bを用いて
$$ \boldsymbol{ Co } = \begin{bmatrix} \boldsymbol{ B } & \boldsymbol{ A } \boldsymbol{ B } & \boldsymbol{ A }^2 \boldsymbol{ B } & \cdots & \boldsymbol{ A }^{n-1} \boldsymbol{ B } \end{bmatrix} $$
という式より行列Coを求めます。
ここで、nは行列Aの行数や列数(n行n列)や行列Bの行数(n行m列)の値を用います。
そして、この行列Coの階数(rank、ランク)を求めて
$$ \mathrm{ rank } \left( \boldsymbol{ Co } \right) = n $$
のように、行列Coの階数がnと等しくなれば、この線形システムは可制御性があり、制御可能であると言えます。
反対に、行列Coの階数とnの関係が
$$ \mathrm{ rank } \left( \boldsymbol{ Co } \right) \lt n $$
のように、行列Coの階数がnよりも小さい場合、この線形システムは可制御性はなく、制御可能でないとなります。
実際に可制御性を判定する
では、実際に具体的な線形システムの例を用いて、可制御性の判定式からシステムの可制御性を判定する流れを紹介します。
取り扱う入力uを含む線形システムの状態方程式
$$ \dot{\boldsymbol{ x }} = \boldsymbol{ A } \boldsymbol{ x } + \boldsymbol{ B } \boldsymbol{ u } $$
について、状態ベクトルxと入力uは
$$ \begin{eqnarray} \left\{ \begin{array}{l} \boldsymbol{ x } = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \\ \boldsymbol{ u } = u \end{array} \right. \end{eqnarray} $$
の場合を考えます。
この状態方程式について
$$ \begin{bmatrix} \dot{x_1} \\ \dot{x_2} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \end{bmatrix} u $$
のように行列Aと行列Bを定義した線形システム1と、
$$ \begin{bmatrix} \dot{x_1} \\ \dot{x_2} \end{bmatrix} = \begin{bmatrix} 1 & 1 \\ 0 & 2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \end{bmatrix} u $$
のように行列Aと行列Bを定義した線形システム2のそれぞれについて、可制御性を判定していきます。
線形システム1の場合
まず1つ目の線形システム
$$ \begin{bmatrix} \dot{x_1} \\ \dot{x_2} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \end{bmatrix} u $$
について、行列Coの階数を求めて可制御性を判定します。
まず、行列Coを構成する各ベクトル成分BとABについて
$$ \boldsymbol{ B } = \begin{bmatrix} 0 \\ 1 \end{bmatrix} $$
$$ \begin{eqnarray} \boldsymbol{ A } \boldsymbol{ B } &=& \begin{bmatrix} 1 & 0 \\ 0 & 2 \end{bmatrix} \begin{bmatrix} 0 \\ 1 \end{bmatrix} \\ &=& \begin{bmatrix} 0 \\ 2 \end{bmatrix} \end{eqnarray} $$
のように、線形システムの状態方程式に含まれる行列Aと行列Bから求めます。
よって、行列Coは
$$ \begin{eqnarray} \boldsymbol{ Co } &=& \begin{bmatrix} \boldsymbol{ B } & \boldsymbol{ A } \boldsymbol{ B } \end{bmatrix} \\ &=& \begin{bmatrix} 0 & 0 \\ 1 & 2 \end{bmatrix} \end{eqnarray}$$
と求めることが出来ます。
この求めた行列Coの階数を行列Aのサイズn=2と比較すると
$$ \mathrm{ rank } \left( \boldsymbol{ Co } \right) = 1 \lt n $$
となり、この線形システムは可制御性ではなく、制御可能ではないということが分かりました。
線形システム2の場合
つぎに、2つ目の線形システム
$$ \begin{bmatrix} \dot{x_1} \\ \dot{x_2} \end{bmatrix} = \begin{bmatrix} 1 & 1 \\ 0 & 2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \end{bmatrix} u $$
について、同様に行列Coの階数を求めて可制御性を判定します。
まず、行列Coを構成する各ベクトル成分BとABは
$$ \boldsymbol{ B } = \begin{bmatrix} 0 \\ 1 \end{bmatrix} $$
$$ \begin{eqnarray} \boldsymbol{ A } \boldsymbol{ B } &=& \begin{bmatrix} 1 & 1 \\ 0 & 2 \end{bmatrix} \begin{bmatrix} 0 \\ 1 \end{bmatrix} \\ &=& \begin{bmatrix} 1 \\ 2 \end{bmatrix} \end{eqnarray} $$
と算出することが出来ます。
よって、求める行列Coは
$$ \begin{eqnarray} \boldsymbol{ Co } &=& \begin{bmatrix} \boldsymbol{ B } & \boldsymbol{ A } \boldsymbol{ B } \end{bmatrix} \\ &=& \begin{bmatrix} 0 & 1 \\ 1 & 2 \end{bmatrix} \end{eqnarray}$$
となります。
最後に、この求めた行列Coの階数をn=2と比較すると
$$ \mathrm{ rank } \left( \boldsymbol{ Co } \right) = 2 = n $$
となるため、この線形システムは可制御性ではあり、制御可能であるということが分かりました。
まとめ
今回の記事では、与えられた線形システムの可制御性を判定する方法を紹介しました。
線形システムの状態方程式に含まれる行列Aと行列Bを用いて行列Coを算出し、この行列Coの階数を求めることで、システムの可制御性を判別することが出来ます。