22. 可制御性(演習)

※可制御性の解説は、10. 可制御性12. 可制御正準系 を参照願います。
※固有値、固有ベクトルの計算手順の詳細については、固有値と固有ベクトルの計算 を参照願います。

座標変換

1入力1出力\(n\)次元システム $$\dot{x}(t) = Ax(t) + bu(t) \\ y(t) = cx(t) \; \cdots\cdots(1)$$を正則な\(n \times n\)定数行列\(T\)によって座標変換$$x(t) = T z(t)$$すると、$$\dot{z}(t) = \tilde{A} z(t) + \tilde{b} u(t) \\ y(t) = \tilde{c}z(t)$$となる。ここで、$$\tilde{A} = T^{-1} A T, \;\;\; \tilde{b} = T^{-1} b , \;\;\; \tilde{c} = c T$$である。座標変換された状態方程式、出力方程式は、等価(相似)である。また、正則な座標変換行列は\(T\)は無数に選ぶことができる。つまり、等価なシステムは無数に存在することになり、これを実践的に解釈すると、同じ動作をする制御システムを実装するには様々な方法がある(色々な発明ができる)ことを意味している。

座標変換と固有値、固有ベクトル、伝達関数

座標変換による固有値の変化

座標変換後のシステム行列\(\tilde{A}\)の特性方程式は、$$|s I - \tilde{A}| = 0$$である。この式に変換行列の関係式を代入して、整理すると、$$| sI - \tilde{A}| = | s I - T^{-1} A T | \\ = |T^{-1} (s I - A) T | \\= |T^{-1}| | s I - A| | T | \\ = |T^{-1}| | T | |s I - A| \\= |s I - A|$$となる。このように、特性方程式は座標変換によって不変なので、システムの固有値(特性根、極)も座標変換に対して不変である。

座標変換による固有ベクトルの変化

システム行列\(A\)の固有値\(\lambda_i\)とそれに対応する固有ベクトル\(v_i\)の関係は、$$A v_i = \lambda_i v_i , \;\;\; i=1,2,\cdots,n$$である。この式の両辺に左から\(T^{-1}\)を掛け、さらに、\(T T^{-1} = 1\)の関係を使うと、$$T^{-1} A T T^{-1} v_i = \lambda_i T^{-1} v_i$$となる。よって、$$\tilde{A} \tilde{v}_i = \lambda_i \tilde{v}_i , \;\;\; i=1,2,\cdots,n$$と表せる。つまり、座標変換後の固有ベクトル\(\tilde{v}_i\)は、$$\tilde{v}_i = T^{-1} v_i ,\;\;\; i=1,2,\cdots,n$$の関係となる。

座標変換による伝達関数の変化

座標変換後のシステムの伝達関数は、$$\tilde{G}(s) = \tilde{c} (s I - \tilde{A})^{-1} \tilde{b}$$である。この式に変換行列の関係式を代入して、整理すると、$$\tilde{G}(s) = c T (s I - T^{-1}A T)^{-1} T^{-1} b \\=c T (sT^{-1}T - T^{-1} A T)^{-1} T^{-1} b \\= cT \left\{T^{-1} (s I - A)T \right\}^{-1} T^{-1} b \\= c T T^{-1} (s I -A)^{-1} T T^{-1}b \\= c(s I -A)^{-1} b = G(s)$$となる。ここで、\((MN)^{-1} = N^{-1} M^{-1}\)を使った。
よって、座標変換前後では、伝達関数は不変である。つまり、極(固有値)、零点も不変である。当然のことであるが、伝達関数が同じであっても、座標変換されたシステムは実装上別システムである。従って、入出力が同じ(伝達関数が同じ)であっても内部動作は異なることになる。

対角正準系への変換

行列\(A\)の固有値を\(\lambda_1 ,\;\lambda_2,\; \cdots,\lambda_n\)、対応する固有ベクトルを\(v_1,\;v_2,\; \cdots ,v_n\)とし、固有値はすべて相異なるとする、このとき座標変換行列として、$$T = [v_1, \; v_2,\; \cdots, v_n] \; \cdots \cdots (2)$$を選ぶと、座標変換後のシステムは、$$\begin{bmatrix} \dot{z}_1(t) \\ \dot{z}_2(t) \\ \vdots \\ \dot{z}_n(t) \end{bmatrix} = \begin{bmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ && \ddots & \\ & & & \lambda_n \end{bmatrix} \begin{bmatrix} z_1(t) \\ z_2(t) \\ \vdots \\ z_n(t) \end{bmatrix} + \begin{bmatrix} \tilde{b}_1 \\ \tilde{b}_2 \\ \vdots \\ \tilde{b}_n \end{bmatrix} u(t) \\ y(t) = \begin{bmatrix} \tilde{c}_1 & \tilde{c}_2 & \cdots & \tilde{c}_n \end{bmatrix} \begin{bmatrix} z_1(t) \\ z_2(t) \\ \vdots \\ z_n(t) \end{bmatrix}$$となる。このシステムを対角正準系という。
※より詳しい解説は、12. 可制御正準形9. 対角正準形を参照願います。

システムの対角化

座標変換行列を式(2)のように構成すれば、システムを対角化できることを示す。
システム行列\(A\)に右から式(1)の座標変換行列\(T\)をかけると、$$AT = A \begin{bmatrix} v_1 & v_2 & \cdots & v_n \end{bmatrix} = \begin{bmatrix} A v_1 & A v_2 & \cdots & A v_n \end{bmatrix}$$となる。ここで、右辺の\(n\)本の縦ベクトルに関して、$$A v_i = \lambda_i v_i ,\;\;\;\; i=1,2,\cdots,n$$が成立している。従って、$$\begin{bmatrix} A v_1 & A v_2 & \cdots & A v_n \end{bmatrix} = \begin{bmatrix} \lambda_1 v_1 & \lambda_2 v_2 & \cdots & \lambda_n v_n \end{bmatrix} \\ = \begin{bmatrix} v_1 & v_2 & \cdots & v_n \end{bmatrix} \begin{bmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ && \ddots & \\ & & & \lambda_n \end{bmatrix} \\ = T \tilde{A}$$となる。よって、行列\(A\)は、その固有ベクトルを並べて構成した座標変換行列\(T\)で、$$T^{-1} A T = \tilde{A} =\begin{bmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ && \ddots & \\ & & & \lambda_n \end{bmatrix} $$ に座標変換されることがわかる。\(T\)は\(A\)を対角化するので、対角変換行列と呼ぶ。

対角正準形と伝達関数

対角正準形の伝達関数を求める。
$$\tilde{G}(s) = \tilde{c} (s I - A)^{-1} \tilde{b} \\ = \begin{bmatrix} \tilde{c}_1 & \tilde{c}_2 & \cdots & \tilde{c}_n \end{bmatrix} \begin{bmatrix} ( s - \lambda_1)^{-1} & & & \\ & (s - \lambda_2)^{-1} & & \\ & & \ddots & \\ & & & (s - \lambda_n)^{-1} \end{bmatrix} \begin{bmatrix} \tilde{b}_1 \\ \tilde{b}_2 \\ \vdots \\ \tilde{b}_n \end{bmatrix} \\ = \begin{bmatrix} \frac{\tilde{c}_1}{s - \lambda_1} & \frac{\tilde{c}_2}{s - \lambda_2} & \cdots & \frac{\tilde{c}_n}{s - \lambda_n} \end{bmatrix} \begin{bmatrix} \tilde{b}_1 \\ \tilde{b}_2 \\ \vdots \\ \tilde{b}_n \end{bmatrix} \\ = \frac{\tilde{c}_1 \tilde{b}_1}{s - \lambda_1} + \frac{\tilde{c}_2 \tilde{b}_2}{s - \lambda_2} + \cdots + \frac{\tilde{c}_n \tilde{b}_n}{s - \lambda_n} $$となる。

Scilabによる対角化計算の例

1)【行列の対角化】次の行列\(A\)に対して正則な座標変換行列を求めて対角化する。$$A = \begin{bmatrix} 1 & -1 \\ 1 & 1\end{bmatrix}$$
*Scilabスクリプト(1)
A = [1 -1 ; 1 1];
disp(spec(A));//固有値計算と表示
[T,D] = spec(A);//固有ベクトル、固有値計算
disp(T);//固有ベクトル,座標変換行列の表示
disp(D);//対角行列の表示
A2 = T D inv(T);//Aに戻す操作
disp(A2);//A2=Aの確認表示

図1 Scilabスクリプト(1)の実行結果

2)【重根をもつ行列の対角化】次の行列\(A\)に対して正則な座標変換行列を求めて対角化する。$$A = \begin{bmatrix} 1 & 2 & 1 \\ -1 & 4 & 1 \\ 2 & -4 & 0 \end{bmatrix}$$
*Scilabスクリプト(2)
A = [1 2 1 ; -1 4 1 ; 2 -4 0];
disp(spec(A));//固有値計算と表示
[T,D] = spec(A);//固有ベクトル、固有値計算
disp(T);//固有ベクトル,座標変換行列の表示
disp(D);//対角行列の表示
A2 = T D inv(T);//Aに戻す操作
disp(A2);//A2=Aの確認表示

図2 Scilabスクリプト(2)の実行結果

可制御性の条件

可制御性は以下のように表すことができる。
(1)式(1)のシステムを対角正準形で表現したとき、すべての\(\tilde{b}_i\)がゼロでないとき、システムは可制御である。
(2)式(1)のシステムで、すべての初期ベクトル\(x(0)\)をある有限な時刻\(t_f\)の間に、任意に与えられたベクトル\(x_f\)に移すような操作量\(u(t) \; (0 \ge t \ge t_f)\)が存在し、\(x(t_f) = x_f\)とできるとき、システムは可制御である。
(3)式(1)のシステムが可制御であるための必要十分条件は、\(n\)次の正方行列$$W_c(t) =\int_0^t (e^{-A \tau}b)(e^{-A\tau}b)^T d \tau$$が正則となる時刻\(t = t_f > 0\)が存在することである。\(W_c(t)\):可制御性グラム行列。
(4)式(1)のシステムが可制御であるための必要十分条件は、\(n \times n\)正方行列$$U_c = \begin{bmatrix} b & Ab & A^2 b & \cdots & A^{n-1}b \end{bmatrix}$$が正則であること(行列式 \(\neq 0\) 、ランクが\(n\))である。\(U_c\):可制御行列。

可制御行列

可制御行列の正則性は、座標変換によって不変であることを示す。
座標変換\(x(t) = T z(t)\)によって、システムの行列が、\(\tilde{A} = T^{-1} A T , \tilde{b} = T^{-1}b\)に変換されたとすると、状態変数\(z(t)\)における可制御行列は、$$\tilde{U}_c = \begin{bmatrix} \tilde{b} & \tilde{A} \tilde{b} & \tilde{A}^2 \tilde{b} & \cdots & \tilde{A}^{n-1} \tilde{b} \end{bmatrix} \\ = \begin{bmatrix} T^{-1} b & T^{-1} A T T^{-1}b & T^{-1} A^2 T T^{-1}b & \cdots & T^{-1} A^{n-1} T T^{-1} b \end{bmatrix} \\ = T^{-1} \begin{bmatrix} b & A b & A^2 b & \cdots & A^{n-1} b \end{bmatrix} \\= T^{-1} U$$となり、\(|T^{-1} | \neq 0\)より、可制御行列の正則性は、座標変換に対して不変である。

可制御性の判定

システムを$$\dot{x}(t) = A x(t) + b u(t)$$として、\(A ,\;\;b\)が以下のときの可制御性を判定する。
1)$$A = \begin{bmatrix} 4 & 2 \\ -1 & 1 \end{bmatrix} \\b = \begin{bmatrix} 2 \\ -1 \end{bmatrix}$$

2)$$A = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix} \\ b = \begin{bmatrix} 0 \\ 0 \\ 3 \end{bmatrix}$$

Scilabによる可制御性の判定

1)
A =[4 2 ; -1 1];
b = [2 ; -1];
//可制御行列Cc
Cc = cont_mat(A, b);
disp(det(Cc));//行列式の計算
disp(rank(Cc));//ランクの計算

実行結果:
Cc =
 2. 6.
-1. -3.
disp(det(Cc))
0.
disp(rank(Cc))
0.

よって、不可制御



2)
A =[0 1 0 ; 0 0 1 ; 0 0 0 ];
b = [0 ; 0 ; 3];
//可制御行列Cc
Cc = cont_mat(A,b);
disp(det(Cc));//行列式の計算
disp(rank(Cc));//ランクの計算



Cc =
0. 0. 3.
0. 3. 0.
3. 0. 3.
disp(det(Cc))
-27.
disp(rank(Cc))
3.

よって、可制御