9-1. 可制御性、可観測性(演習)
離散時間システムの可制御、可観測条件
連続時間システムの状態方程式が、\frac{dx}{dt} = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} x + \begin{bmatrix} 0 \\1 \end{bmatrix} u \\ y = \begin{bmatrix} 1 & 0 \end{bmatrix} xのとき、これを離散時間システムにしたとき、可制御、可観測となるための条件を求める。
F = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} , \;\;\;\;\;\; g = \begin{bmatrix} 0 \\1 \end{bmatrix}なので、サンプリング時間をTとして、A = e^{FT} である。 ここで、e^{Ft} = \mathcal{L}^{-1} [(sI - F)^{-1}] = \mathcal{L}^{-1} \left[ \frac{1}{s^2 +1} \begin{bmatrix} s & 1 \\ -1 & s \end{bmatrix} \right] = \begin{bmatrix} \cos t & \sin t \\ -\sin t & \cos t \end{bmatrix} なので、t=Tとして、A = e^{FT} = \begin{bmatrix} \cos T & \sin T \\ -\sin T & \cos T \end{bmatrix} となる。また、 b=\int_0^T e^{F \tau} d \tau \cdot g = \begin{bmatrix} 1 - \cos T \\ \sin T \end{bmatrix}従って、離散時間システムの状態方程式は、x(k+1) = \begin{bmatrix} \cos T & \sin T \\ -\sin T & \cos T \end{bmatrix} x(k) + \begin{bmatrix} 1 - \cos T \\ \sin T \end{bmatrix} u(k) \\ y(k) = \begin{bmatrix} 1 & 0 \end{bmatrix} x(k)となる。このシステムの可制御行列は、W = [b, \; Ab] = \begin{bmatrix} 1 - \cos T & 1 + \cos T - 2 \cos^2 T \\ \sin T & (2 \cos T-1) \sin T \end{bmatrix}であり、\left| W \right | = (1 - \cos T)(2 \cos T -1) \sin T - \sin T (1 + \cos T - 2 \cos^2 T) = 2\sin T( \cos T -1)となる。|W| \neq 0が可制御条件であるが、T = 2 n \pi \;\;\;\; (n = 0 , 1 , 2 , \cdots)のとき|W| = 0となる。従って、サンプリング時間TがT \neq 2 n \piのとき可制御となる。
同様に、可観測行列はV = \begin{bmatrix} c \\ cA \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ \cos T & \sin T \end{bmatrix}であり、\left|V \right| = \sin Tとなる。|V| \neq 0が可観測条件であるが、T = 2 n \pi \;\;\;\; (n = 0 , 1 , 2 , \cdots) のとき|V|=0となる。従って、サンプリング時間TがT \neq 2 n \piのとき可観測となる。
Scilabによる離散時間システムの可制御、可観測のチェック
//9-1. 可制御、可観測のチェック
clear; e=%e;
//連続時間システムの定義
F=[0 1; -1 0];
g=[0 ; 1];
c=[1 0];
//離散時間システム の定義
T=2%pi;
A = e^(FT);
b=[1-cos(T) ; sin(T)];
Co = cont_mat(A,b); /*可制御行列の生成*/
ac=det(Co); /*可制御行列の行列式計算*/
Ob = obsv_mat(A,c); /*可観測行列の生成*/
ab=det(Ob); /*可観測行列の行列式計算*/
T=2 \piのときのScilabスクリプトの実行結果は、以下のようになる。
--> ac
ac =6.660D-47
--> ab
ab =-1.110D-15
ac(可制御行列の行列式)、ab(可観測行列の行列式)とも0と見なせるので、不可制御、不可観測と判定できる。
※一般的に状態方程式のシステム行列(A)の次元は大きい(nが3以上)ので、可制御行列、可観測行列の行列式を手計算で求めることは大変である。従って、Scilabなどのツールを利用することが現実的である。重要なポイントは、可制御、可観測のシステム構造を理解することである。
パルス伝達関数の可制御、可観測の条件
パルス伝達関数が、G(z) = \frac{b_1 z + b_2}{z^2 + a_1 z + a_2}のシステムの可制御条件、可観測条件を求める。
パルス伝達関数G(z)から、可制御正準形を求める。G(z) =\frac{Y(z)}{U(z)} = \frac{b_1 z + b_2}{z^2 + a_1 z + a_2} = \frac{b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}}なので、Y(z) = (b_1 z^{-1} + b_2 z^{-2})X(z) \\ X(z) = \frac{1}{1 + a_1 z^{-1} + a_2 z^{-2}} U(z)さらに、(1 + a_1 z^{-1} + a_2 z^{-2}) X(z) = U(z) \\ X(z) = U(z) - ( a_1 z^{-1} + a_2 z^{-2}) X(z) 逆Z変換すると、y(k) = b_1 x(k-1) + b_2 x(k-2) \\ x(k) = u(k) - a_1 x(k-1) - a_2 x(k-2)となる。ここで、x_1(k) = x(k-2) ,\;\;\; x_2(k) = x(k-1)とおくと、x_1(k+1) = x(k-1) = x_2(k) \\ x_2(k+1) = x(k)なので、\begin{bmatrix} x_1(k+1) \\ x_2(k+1) \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ -a_2 & -a_1 \end{bmatrix} \begin{bmatrix} x_1(k) \\ x_2(k) \end{bmatrix} + \begin{bmatrix} 0 \\1 \end{bmatrix} u(k) \\ y(k) = \begin{bmatrix} b_2 & b_1 \end{bmatrix} \begin{bmatrix} x_1(k) \\ x_2(k) \end{bmatrix} の可制御正準形で表せる。システム行列Aと出力行列cは、A = \begin{bmatrix} 0 & 1 \\ -a_2 & -a_1 \end{bmatrix}, \;\;\;\; c = \begin{bmatrix} b_2 & b_1 \end{bmatrix} なので、 可観測行列は、V = \begin{bmatrix} c \\ cA \end{bmatrix} = \begin{bmatrix} b_2 & b_1 \\ -a_2 b_1 & b_2 - a_1 b_1 \end{bmatrix}となる。これより、可観測条件は、|V| = b_2(b_2 - a_1 b_1) + a_2 b_1^2 \neq 0 となることである。
一方、(z^2 + a_1 z + a_2) Y(z) =(b_1 z + b_2) U(z) ,\;\;\;\; (1 + a_1 z^{-1} + a_2 ^{-2}) Y(z) = (b_1 z^{-1} + b_2 z^{-2})U(z)より、Y(z) = (b_1 z^{-1} + b_2 z^{-2})U(z) - (a_1 z^{-1} + a_2 z^{-2})Y(z)と表せる。逆Z変換すると、y(k) = b_1 u(k-1) + b_2 u(k-2) - a_1 y(k-1) - a_2 y(k-2)となる。ここで、x_2(k) = y(k)とおくと、x_2(k) = b_1 u(k-1) - a_1 x_2(k-1) + b2 u(k-2) -a_2 x_2(k-2) , \;\;\; x_2(k+1) =b_1 u(k) - a_1 x_2(k) +b_2 u(k-1) - a_2 x_2(k-1)となり、さらに、x_1(k) = -a_2 x_2(k-1) +b_2 u(k-1)とおくと、\begin{bmatrix} x_1(k+1) \\ x_2(k+1) \end{bmatrix} = \begin{bmatrix} 0 & - a_2 \\ 1 & - a_1 \end{bmatrix} \begin{bmatrix} x_1(k) \\ x_2(k) \end{bmatrix} + \begin{bmatrix} b_2 \\ b_1 \end{bmatrix} u(k) \\ y(k) = \begin{bmatrix} 0 & 1 \end{bmatrix} \begin{bmatrix} x_1(k) \\ x_2(k) \end{bmatrix} の可観測正準形で表せる。システム行列Aと入力行列bは、A = \begin{bmatrix} 0 & - a_2 \\ 1 & - a_1 \end{bmatrix} , \;\;\; b= \begin{bmatrix} b_2 \\ b_1 \end{bmatrix} なので、可制御行列は、W = \begin{bmatrix} b & Ab \end{bmatrix} = \begin{bmatrix} b_2 & -a_2b_1 \\ b_1 & b_2 - a_1 b_1 \end{bmatrix}となる。これより、可制御条件は、|W| = b_2(b_2 - a_1 b_1) + a_2 b_1^2 \neq 0 となることである。これは可観測条件と一致している。
G(z)の極は、p = \frac{-a_1 \pm \sqrt{a_1^2 - 4a_2}}{2}であり、零点は、z = -\frac{b_2}{b_1}である。極零点が等しい場合、\frac{-a_1 \pm \sqrt{a_1^2 - 4a_2}}{2} = -\frac{b_2}{b_1}なので、b_2^2 + a_2 b_1^2 - a_1 b_1 b_2 = 0となり、これは、不可制御不可観測の条件と一致している。つまり、可制御可観測の条件は、伝達関数の極零相殺が起こらないことと等価といえる。