9. 離散時間システムの構造
システムの構造で重要な、可到達性、可制御性、可観測性について説明する。
可到達性、可制御性
離散時間システムx(k+1)=Ax(k)+bu(k) において、原点x(0)=0から、時刻nにおいて任意の状態x(n) に到達する入力列\{u(k)\}が存在するとき、可到達であるという。
離散時間システムx(k+1)=Ax(k)+bu(k) において、任意の初期状態x(0)から有限時間で原点へ推移させる入力列\{u(k)\}が存在するとき、可制御であるという。
離散時間系の解
*状態方程式の解:
離散時間系の状態方程式の解は、逐次計算により次のように求められる。
x(1) = Ax(0) + bu(0) x(2) =Ax(1) + bu(1)=A\{Ax(0) + bu(0)\} + bu(1) = A^2 x(0) + Abu(0) + bu(1) \vdots x(n) = A^n x(0) + A^{n-1}bu(0) + \cdots + bu(n-1) よって、一般解は x(k) = A^k x(0) + \sum_{i=0}^{k-1} A^{k-i-1} b u(i) \;\;\;\; \cdots (1) と表せる。
*Z変換による解:
離散時間系の状態方程式をZ変換すると、z X(z) - z x(0) = A X(z) + bU(z)よって、X(z) = (zI - A)^{-1} z x(0) + (zI - A)^{-1} bU(z)となる。これを逆Z変換するとx(k)が求まるので、(1)式と比較して、 \mathcal{Z}^{-1} \{(zI -A)^{-1} z \} = A^{k} \mathcal{Z}^{-1} \{ (zI - A)^{-1} bU(z)\} = \sum_{i=0}^{k-1} A^{k-i-1} b u(i)となることがわかる。
可到達条件
離散時間系の状態方程式の一般解は(1)式なので、nにおける状態変数x(n)は、x(n) = A^n x(0) + A^{n-1}bu(0) + A^{n-2}bu(1) + \cdots + Abu(n-2) + bu(n-1) =A^n x(0) + \begin{bmatrix} b & Ab & \cdots & A^{n-2}b & A^{n-1}b \end{bmatrix} \begin{bmatrix} u(n-1) \\ u(n-2) \\ \vdots \\ u(1) \\ u(0) \end{bmatrix}となる。従って、行列W= \begin{bmatrix} b & Ab & \cdots & A^{n-2}b & A^{n-1}b \end{bmatrix} が正則(逆行列が存在する)であれば、入力\begin{bmatrix} u(n-1) \\ u(n-2) \\ \vdots \\ u(1) \\ u(0) \end{bmatrix} = W^{-1} \left[x(n) - A^n x(0)\right]が求まる。すなわち、任意の初期状態x(0)から任意の状態x(n)へ高々nステップで推移させる入力列\{u(k)\}が存在することになる。このときシステムは可到達である。
この結果から、システムが可到達であるための条件は、W = \begin{bmatrix} b & Ab & \cdots & A^{n-2}b & A^{n-1}b \end{bmatrix} \;\;\;\; (n \times n)の逆行列が存在することである。つまり、 {rank}\; W = n \;\;\; または、|W| \ne 0が成立すればよい。この行列Wを可到達行列という。
可制御条件
可制御とは、任意の初期状態x(0)から、少なくともnステップで原点x(n)=0へ推移する入力列\{u(k)\}が存在することであるから、式(1)から、0 = A^n x(0) + A^{n-1}bu(0) + A^{n-2}bu(1) + \cdots + Abu(n-2) + bu(n-1) となればよい。ここで、行列Aが正則であるとA^{-1}が存在するので、両辺にA^{-n}をかけると A^{-1}bu(0) + A^{-2}bu(1) + \cdots + A^{-n+1}bu(n-2 )+ A^{-n}bu(n-1) = -x(0)となるので、-x(0) =\begin{bmatrix} A^{-1}b & A^{-2}b & \cdots & A^{-n+1}b & A^{-n}b \end{bmatrix} \begin{bmatrix} u(0) \\ u(1) \\ \vdots \\ u(n-1) \end{bmatrix}であり、これが成立するための入力列{u(k)}は、R=\begin{bmatrix} A^{-1}b & A^{-2}b & \cdots & A^{-n+1} b & A^{-n}b \end{bmatrix} とおくと、\begin{bmatrix} u(0) \\ u(1) \\ \vdots \\ u(n-2) \\ u(n-1) \end{bmatrix} = -R^{-1} x(0) で求まる。つまり、Rが正則であることが必要である。RにA^nをかけるとA^n R= \begin{bmatrix} A^{n-1}b & A^{n-2}b & \cdots & Ab &b \end{bmatrix} となり、可到達の条件Wと同じものが得られ、結局、離散時間系の可制御条件は、Aが正則であれば可到達条件と同一になる。
なお、離散化システムでは、A=e^{FT}であるから、行列Aは常に正則であるので、可制御条件と可到達条件は同一になる。
※連続時間系の離散化
説明を簡単にするため、一入力一出力の連続時間系を考える。状態方程式は、\dot{x}(t) = F x(t) + g u(t) \;\;\; \cdots (2)で、x(t)はn次元の状態変数ベクトル、u(t)は入力でスカラー、Fは(n \times n)のシステム行列、gはn \times 1の入力行列とする。出力方程式は、y(t) = c x(t)で、cは1 \times nの出力行列、y(t)は出力でスカラーとする。離散化を考えるので入力u(t)を零次ホールドされた信号とする。u(t) = u(kT) \;\;\;\; (kT \le t \lt (k+1)T) (2)式の解は(詳細な導出は「LTIシステムの応答(微分方程式の一般解)」を参照)、x(t) = e^{Ft}x_0 + \int_{0}^{t} e^{F(t-\tau)} g u(\tau) d\tauなので、t=(k+1)Tとおくと、x[(k+1)T] = e^{FT}x(kT) + \int_{kT}^{(k+1)T} e^{F [(k+1)T- \tau] } g u(\tau) d \tau となる。さらに、入力u(t)=u(kT)なので、 x[(k+1)T] = e^{FT}x(kT) + \int_{kT}^{(k+1)T} e^{F [(k+1)T- \tau] } g d \tau\cdot u(kT)となる。x(kT) = x(k) , \;\;\; u(kT) = u(k)と略記すると、x(k+1) = A x(k) + b u(k) \;\;\;\;\;\ y(k) = c x(k)となり、A =e^{FT} \;\;\;\; b=\int_0^T e^{F\tau} g d\tauとなる。このことから、連続時間系のシステム行列Fが正則か非正則かに関わらず、離散時間系のシステム行列A=e^{FT}は正則である。
可観測性
離散時間システムをx(k+1) = Ax(k) \;\;\;\; y(k) = cx(k)(入力u(k)に依らないので、u(k)=0とする。)として、出力系列y(0), y(1),y(2),\cdotsから、初期状態x(0)を一意に決定できるとき、システムは可観測という。また、x(k) = A^{k}x(0)なので、初期状態x(0)が決定できるということは、すべてのkに対するx(k)が決定できることを意味する。
x(k) = A^{k}x(0)より、y(k) = c A^{k} x(0) \;\;\;\; (k=0,1,2, \cdots) これをk= 0,1,2, \cdots , n-1で考えると、\begin{bmatrix} y(0) \\ y(1) \\ \vdots \\ y(n-1) \end{bmatrix} = \begin{bmatrix} c \\ cA \\ \vdots \\ cA^{n-1} \end{bmatrix} x(0) 可観測行列V = \begin{bmatrix} c \\ cA \\ \vdots \\ cA^{n-1} \end{bmatrix} \;\;\;\; (n \times n)とすると、Vが正則(逆行列が存在する)であれば、x(0) = V^{-1}\begin{bmatrix} y(0) \\ y(1) \\ \vdots \\ y(n-1) \end{bmatrix}とでき、x(0)が一意に決定できる。
可観測条件
離散時間システムが可観測であるための必要十分条件は、Vの逆行列が存在すること、すなわち {rank}\; V = n \;\;\; または、|V| \ne 0が成立すればよい。
Scilabによる可制御、可観測の判定
Scilabの関数を使えば、容易に可制御、可観測が判定できる。システム行列A、入力行列b、出力行列cを定義すれば、Scilabの関数で可制御行列、可観測行列を計算できる。また、それらの行列のランクを求めたり、行列式を計算することで可制御性、可観測性を判定できる。
//可制御、可観測
clear;
//離散時間システム の定義
A = [0 1 0; 0 0 1; 0 0.4 0.3];
b = [0; 0; 1];
c=[1 0 0];
Co = cont_mat(A,b); /*可制御行列の生成*/
nc=rank(Co); /*可制御行列のランク*/
ac=det(Co); /*可制御行列の行列式計算*/
Ob = obsv_mat(A,c); /*可観測行列の生成*/
nb=rank(Ob); /*可観測行列のランク*/
ab=det(Ob); /*可観測行列の行列式計算*/
“9. 離散時間システムの構造” に対して2件のコメントがあります。
コメントは受け付けていません。