1 状態空間表現

【本章のねらい】
・状態空間表現を導き,その構造をブロック線図で表す。
・状態空間表現に対する操作として座標変換と直列結合を行う。

1.1 状態空間表現の導出とブロック線図

古典制御では,主に1入力1出力をもつ線形ダイナミカルシステム(線形系)の入出力特性に注目し,これを伝達関数で表した。一方,現代制御では,多入出力をもつ線形系において,「まず入力が状態に影響を及ぼし,つぎに状態の一部が出力として現れる」と考え,前者を状態方程式で,後者を出力方程式で表す。すなわち,状態方程式と出力方程式をペアにした状態空間表現

\displaystyle{(1.1)\quad \left\{\begin{array}{l} \dot{x}(t)=Ax(t)+Bu(t) \\ y(t)=Cx(t)+Du(t) \end{array}\right. }

を求めることが出発点となる。ここで,実ベクトルx(t),\ u(t),\ y(t)は時刻tにおけるそれぞれn個の状態変数,m個の入力変数,p個の出力変数を要素にもち,状態,入力,出力を表す。nを次数または次元数と呼ぶ。また,A,\ B,\ C,\ Dは,それぞれサイズn\times n,\ n\times m,\ p\times n,\ p\times mの実行列である(実は,状態空間表現の係数行列には定着した呼び名がない。以下では,行列A,B,C,Dを,それぞれA行列,B行列,C行列,D行列と呼ぶことがある。)。

以下では,(1.1)式の状態空間表現で表されるm個の入力変数,p個の出力変数,n個の状態変数をもつ線形系を,簡単にm入力p出力n次系と呼ぶ。これには,つぎのような特別な場合が含まれる。

ここで,(1)は直達項Du(t)がない場合である。(2)と(4)は入力を考えない自由系(unforced system)の場合で,n次自由系と呼ぶ。(3)と(4)は状態方程式だけを考える場合で,y=xとみなす。

ここでは,制御対象のダイナミクスは連立された線形常微分方程式で表されるとし,これから連立1階線形微分方程式の行列表現を導いて状態方程式を得る。
一方,状態変数の一部がどのように取り出されるかを出力方程式で表す。

例題1.1 つぎの運動方程式を考える。

\displaystyle{ M\ddot{r}(t)+D\dot{r}(t)+Kr(t)=f(t) }

ここで,r(t)は変位,f(t)は外力,Mは質量,Dは減衰係数,Kはバネ定数である。f(t)を入力変数とし,r(t)v(t)=\dot{r}(t)を状態変数とする2次系の状態方程式を導出せよ。
解答 運動方程式から,つぎの連立1階微分方程式を得る。

\displaystyle{ \left\{\begin{array}{l} \dot{r}(t)=v(t) \\ \dot{v}(t)=-\frac{D}{M}v(t)-\frac{K}{M}r(t)+\frac{1}{M}f(t) \end{array}\right. }

これを行列表現して,r(t)v(t)を状態変数,f(t)を入力変数とする,つぎの状態方程式を得る。

\displaystyle{ \underbrace{ \left[\begin{array}{c} \dot{r}(t) \\ \dot{v}(t) \end{array}\right] }_{\dot{x}(t)} = \underbrace{ \left[\begin{array}{cc} 0 & 1 \\ -\frac{K}{M} & -\frac{D}{M} \end{array}\right] }_{A} \underbrace{ \left[\begin{array}{c} r(t) \\ v(t) \end{array}\right] }_{x(t)} + \underbrace{ \left[\begin{array}{c} 0 \\ \frac{1}{M} \end{array}\right] }_{B} \underbrace{f(t)}_{u(t)} }

演習1.1 つぎの運動方程式から2次自由系の状態方程式を導出せよ。

\displaystyle{ \ddot{\theta}(t)=-\frac{3g}{4\ell}\theta(t) }

演習1.2 つぎの連成した運動方程式から,u(t)を入力変数とする4次系の状態方程式を導出せよ。

\displaystyle{ \left\{\begin{array}{l} \ddot{x}_1(t)=-(x_1(t)-x_2(t))+u(t) \\ \ddot{x}_2(t)=-(x_2(t)-x_1(t)) \end{array}\right. }

例題1.2 つぎの運動方程式を考える。

\displaystyle{ J\ddot{\theta}(t)+D\dot{\theta}(t)=\tau(t) }

ここで,\theta(t)は回転角,\tau(t)はトルク,Jは慣性モーメント,Dは減衰係数である。\tau(t)を入力変数とし,\theta(t)\omega(t)=\dot{\theta}(t)を状態変数とする2次系の状態方程式を導出せよ。また,次の場合の出力方程式を示せ。
(1) \theta(t)を計測できる場合
(2) \omega(t)を計測できる場合
解答 運動方程式から,つぎの連立1階微分方程式を得る。

\displaystyle{ \left\{\begin{array}{l} \dot{\theta}(t)=\omega(t) \\ \dot{\omega}(t)=-\frac{D}{J}\omega(t)+\frac{1}{J}\tau(t) \end{array}\right. }

これを行列表現すると,\theta(t)\omega(t)を状態変数,\tau(t)を入力変数とする,つぎの状態方程式を得る。

\displaystyle{ \underbrace{ \left[\begin{array}{c} \dot{\theta}(t) \\ \dot{\omega}(t) \end{array}\right] }_{\dot{x}(t)} = \underbrace{ \left[\begin{array}{cc} 0 & 1 \\ 0 & -\frac{D}{J} \end{array}\right] }_{A} \underbrace{ \left[\begin{array}{c} \theta(t) \\ \omega(t) \end{array}\right] }_{x(t)} + \underbrace{ \left[\begin{array}{c} 0 \\ \frac{1}{J} \end{array}\right] }_{B} \underbrace{\tau(t)}_{u(t)} }

(1) \theta(t)を計測できる場合の出力方程式として,次式を得る。

\displaystyle{ \underbrace{\theta(t)}_{y(t)}= \underbrace{\ \left[\begin{array}{cc} 1 & 0 \end{array}\right] }_{C} \underbrace{\ \left[\begin{array}{c} \theta(t) \\ \omega(t) \end{array}\right] }_{x(t)} }

(2) \dot{\theta}(t)を計測できる場合の出力方程式として,次式を得る。

\displaystyle{ \underbrace{\omega(t)}_{y(t)}= \underbrace{\ \left[\begin{array}{cc} 0 & 1 \end{array}\right] }_{C} \underbrace{\ \left[\begin{array}{c} \theta(t) \\ \omega(t) \end{array}\right] }_{x(t)} }

演習1.3 例題1.2の(2)を考える。角速度を\omega(t)=\dot{\theta}(t)とおくと,運動方程式は\dot{\omega}(t)+{\omega}(t)=\tau(t)となる。いま一定のトルク\tau^*のもとで,一定の角速度\omega^*を得ているとする。このとき,x(t)=\omega(t)-\omega^*を状態変数,u(t)=\tau(t)-\tau^*を入力変数,y(t)=\omega(t)-\omega^*を出力変数とする状態空間表現を導出せよ(一般に,零状態x=0が平衡状態を表すように状態空間表現を導出する。)。

演習1.4 つぎの2階線形常微分方程式から,u(t)を入力変数,y(t)を出力変数とする状態空間表現を導出せよ。

\displaystyle{ \ddot{y}(t)+a_1\dot{y}(t)+a_2y(t)=u(t) }

MATLABを用いて状態空間表現 sys を定義するには,たとえば例題1.2の(1)で,J=1,D=-0.01の場合,つぎのコマンドを与えればよい。

%state_space.m
A=[0 1;0 -0.01]; B=[0;1]; C=[1 0]; D=0;
sys=ss(A,B,C,D)

ここで,A行列,B行列,C行列,D行列を参照するには,それぞれ

sys.a,sys.b,sys.c,sys.d

を用いる。たとえばA行列の(2,2)要素を-0.1に変更するには,つぎのコマンドを与えればよい。

sys.a(2,2)=-0.1

また,B行列,D行列が存在しない自由系 sys0 を定義するには,つぎのコマンドを与えればよい。

%state_space_cont.m
A=[0 1;0 -0.01]; B=[]; C=[1 0]; D=[];
sys0=ss(A,B,C,D)

もし状態方程式だけを指定する場合は,C=[]; D=[]; または C=eye(size(A)); D=0; とする。

SCILABを用いて状態空間表現 sys を定義するには,たとえば例題1.2の(1)で,J=1,D=-0.01の場合,つぎのコマンドを与えればよい。

//state_space.m
A=[0 1;0 -0.01]; B=[0;1]; C=[1 0]; D=0;
sys=syslin(A,B,C,D)

ここで,A行列,B行列,C行列,D行列を参照するには,それぞれ

sys.a,sys.b,sys.c,sys.d

を用いる。たとえばA行列の(2,2)要素を-0.1に変更するには,つぎのコマンドを与えればよい。

A(2,2)=-0.1; sys.a=A

また,B行列,D行列が存在しない自由系 sys0 を定義するには,つぎのコマンドを与えればよい。

//state_space_cont.m
A=[0 1;0 -0.01]; B=[]; C=[1 0]; D=[];
sys0=syslin(A,B,C,D)

もし状態方程式だけを指定する場合は,C=[]; D=[]; または C=eye(size(A)); D=zeros(size(A,1),size(B,2)); とする。

さて,状態空間表現のブロック線図を作成することにより,どのように入力変数から状態変数を経て出力変数につながるかを表すことができる。これは,Simulinkなどを用いた時間応答シミュレーションに役に立つ。

例題1.3 つぎの1次系の状態空間表現をブロック線図で表せ。

\displaystyle{ \left\{\begin{array}{l} \dot{x}(t)=-\frac{1}{T}x(t)+\frac{K}{T}u(t) \\ y(t)=cx(t) \end{array}\right. }

解答 積分器の出力をxとすると,その入力は\dot{x}であることに注意し,状態方程式の左辺\dot{x}と右辺-\frac{1}{T}x+\frac{K}{T}uを等しくなるよう描いて,つぎのブロック線図を得る(加え合せ点○で符号を表示しない場合は+とみなす。また,●は引き出し点を表す。)。

演習1.5 つぎの1次系の状態空間表現をブロック線図で表せ。

\displaystyle{ \left\{\begin{array}{l} \dot{x}(t)=u(t) \\ y(t)=x(t)+u(t) \end{array}\right. }

例題1.4 つぎの2次系の状態空間表現をブロック線図で表せ。

\displaystyle{ \left\{\begin{array}{l} %\underbrace{ \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \end{array}\right] %}_{\dot x} = %\underbrace{ \left[\begin{array}{cc} 0 & 1 \\ -\omega_n^2 & -2\zeta\omega_n \end{array}\right] %}_{A} %\underbrace{ \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] %}_{x} + %\underbrace{ \left[\begin{array}{c} 0 \\ \omega_n^2 \end{array}\right] %}_{B} u(t) \\ y(t) = %\underbrace{ \left[\begin{array}{cc} c_1 & 0 \end{array}\right] %}_{C} %\underbrace{ \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] %}_{x} \end{array}\right. }

解答 \dot{x}_1(t)=x_2(t),\ \dot{x}_2(t)=-\omega_n^2x_1(t)-2\zeta\omega_nx_2(t)+\omega_n^2u(t),\ y(t)=x_1(t)より,つぎのブロック線図を得る。

演習1.6 つぎの2次系の状態空間表現をブロック線図で表せ。

\displaystyle{ \left\{\begin{array}{l} %\underbrace{ \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \end{array}\right] %}_{\dot x} = %\underbrace{ \left[\begin{array}{cc} 0 & 1 \\ 0 & -2\zeta\omega_n \end{array}\right] %}_{A} %\underbrace{ \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] %}_{x} + %\underbrace{ \left[\begin{array}{c} 0 \\ \omega_n^2 \end{array}\right] %}_{B} u(t) \\ y(t) = %\underbrace{ \left[\begin{array}{cc} 0 & c_2 \end{array}\right] %}_{C} %\underbrace{ \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] %}_{x} \end{array}\right. }

演習1.7 演習1.2 で得られた状態空間表現について,ブロック線図を描け。

1.2 状態空間表現の座標変換と直列結合

n次系の状態空間表現

\displaystyle{(1.2)\quad \left\{\begin{array}{l} \dot{x}(t)=Ax(t)+Bu(t) \\ y(t)=Cx(t) \end{array}\right. }

に対して,座標変換

\displaystyle{(1.3)\quad x'(t)=Tx(t)\quad({\rm det}T\ne0) }

を行うと,つぎの状態空間表現を得る。

\displaystyle{(1.4)\quad \left\{\begin{array}{l} \dot{x}'(t)=A'x'(t)+B'u(t) \\ y(t)=C'x'(t) \end{array}\right. }

ただし,変換後の係数行列は次式で与えられる。

\displaystyle{(1.5)\quad \left\{\begin{array}{l} A'=TAT^{-1} \\ B'=TB \\ C'=CT^{-1} \\ \end{array}\right. }

例題1.5 2次系の状態空間表現

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \end{array}\right] = \left[\begin{array}{cc} 0 & -a_2 \\ 1 & -a_1 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] + \left[\begin{array}{c} 1 \\ 0 \end{array}\right] u(t) \nonumber \\ y(t)= \left[\begin{array}{cc} 0 & 1 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] \end{array}\right. }

に対して,つぎの座標変換を行え。

\displaystyle{ \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ 1 & -a_1 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] }

解答 状態空間表現に

\displaystyle{ \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ 1 & -a_1 \end{array}\right]^{-1} \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] = \left[\begin{array}{cc} a_1 & 1 \\ 1 & 0 \end{array}\right] \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] }

を代入して

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{cc} a_1 & 1 \\ 1 & 0 \end{array}\right] \left[\begin{array}{c} \dot{x}_1'(t) \\ \dot{x}_2'(t) \end{array}\right] = \left[\begin{array}{cc} 0 & -a_2 \\ 1 & -a_1 \end{array}\right] \left[\begin{array}{cc} a_1 & 1 \\ 1 & 0 \end{array}\right] \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] + \left[\begin{array}{c} 1 \\ 0 \end{array}\right] u \nonumber \\ y(t)= \left[\begin{array}{cc} 0 & 1 \end{array}\right] \left[\begin{array}{cc} a_1 & 1 \\ 1 & 0 \end{array}\right] \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] \end{array}\right. }

この状態方程式の左から

\displaystyle{ \left[\begin{array}{cc} a_1 & 1 \\ 1 & 0 \end{array}\right]^{-1} = \left[\begin{array}{cc} 0 & 1 \\ 1 & -a_1 \end{array}\right] }

をかけて,つぎの状態空間表現を得る。

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1'(t) \\ \dot{x}_2'(t) \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ -a_2 & -a_1 \end{array}\right] \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] + \left[\begin{array}{c} 0 \\ 1 \end{array}\right] u(t) \nonumber \\ y(t)= \left[\begin{array}{cc} 1 & 0 \end{array}\right] \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] \end{array}\right. }

演習1.8 2次系の状態空間表現

\displaystyle{ \left\{\begin{array}{l} %\underbrace{ \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \end{array}\right] %}_{\dot x} = %\underbrace{ \left[\begin{array}{cc} 0 & 1 \\ -\omega_n^2 & -2\zeta\omega_n \end{array}\right] %}_{A} %\underbrace{ \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] %}_{x} + %\underbrace{ \left[\begin{array}{c} 0 \\ \omega_n^2 \end{array}\right] %}_{B} u(t) \\ y(t) = %\underbrace{ \left[\begin{array}{cc} 1 & 0 \end{array}\right] %}_{C} %\underbrace{ \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] %}_{x}  \end{array}\right. \quad(\zeta<1) }

に対して,つぎの座標変換を行え。

\displaystyle{ \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] = \left[\begin{array}{cc} 1 & 0 \\ -\zeta\omega_n & \omega_n\sqrt{1-\zeta^2} \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] }

演習1.9 2次系の状態空間表現

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \end{array}\right] = \left[\begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] + \left[\begin{array}{c} b_{1} \\ b_{2} \end{array}\right] u(t) \nonumber \\ y(t) = \underbrace{ \left[\begin{array}{cc} c_1 & c_2 \end{array}\right] }_C \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] \quad(c_1\ne0) \end{array}\right. }

に対して,どのような座標変換

\displaystyle{ \left[\begin{array}{c} x_1'(t) \\ x_2'(t) \end{array}\right] = \underbrace{ \left[\begin{array}{cc} t_{11} & t_{12} \\ t_{21} & t_{22} \end{array}\right] }_T \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] }

を行なえば,出力方程式をつぎの形にできるか。

\displaystyle{ y(t) = \underbrace{ \left[\begin{array}{cc} 1 & 0 \end{array}\right] }_{C'} \left[\begin{array}{c} x'_1(t) \\ x'_2(t) \end{array}\right] }

さて,つぎの2つの状態空間表現を考える。

\displaystyle{(1.6)\quad S_1: \left\{\begin{array}{l} \dot{x}_1(t)=A_1x_1(t)+B_1u_1(t) \\ y_1(t)=C_1x_1(t)+D_1u_1(t) \end{array}\right. }

\displaystyle{(1.7)\quad S_2: \left\{\begin{array}{l} \dot{x}_2(t)=A_2x_2(t)+B_2u_2(t) \\ y_2(t)=C_2x_2(t)+D_2u_2(t) \end{array}\right. }

S_1の入力変数の数とS_2の出力変数の数が等しいとき,S_2の出力をS_1の入力に直接結合することを考える。その状態空間表現は次式で与えられる。

\displaystyle{(1.8)\quad \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \end{array}\right] = \left[\begin{array}{cc} A_1 & B_1C_2 \\ 0 & A_2 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] + \left[\begin{array}{c} B_1D_2 \\ B_2 \end{array}\right] u_2(t) \\ y_1(t)= \left[\begin{array}{cc} C_1 & D_1C_2 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] +D_1D_2u_2(t) \end{array}\right. }

例題1.6 1次系の状態空間表現

\displaystyle{ \left\{\begin{array}{l} \dot{x}(t)=-\frac{1}{T}x(t)+\frac{K}{T}u(t) \\ y(t)=x(t) \end{array}\right. }

の入力に,むだ時間を1次系として近似したときの状態空間表現

\displaystyle{ \left\{\begin{array}{l} \dot{x}_L(t)=-\frac{2}{L}x_L(t)+\frac{2}{L}u_L(t) \\ y_L(t)=2x_L(t)-u_L(t) \end{array}\right. }

の出力を結合して得られるシステムの状態空間表現を求めよ。
解答 まず,状態方程式は

\displaystyle{ \dot{x}(t)=-\frac{1}{T}x(t)+\frac{K}{T}u(t) }

u(t)=y_L(t)=2x_L(t)-u_L(t)を代入し,

\displaystyle{ \dot{x}_L(t)=-\frac{2}{L}x_L(t)+\frac{2}{L}u_L(t) }

と合わせて

\displaystyle{ \left[\begin{array}{c} \dot{x}(t) \\ \dot{x}_L(t) \end{array}\right] = \left[\begin{array}{ccc} -\frac{1}{T} & 2\frac{K}{T} \\ 0 & -\frac{2}{L} \end{array}\right] \left[\begin{array}{c} x(t) \\ x_L(t) \end{array}\right] + \left[\begin{array}{c} -\frac{K}{T} \\ \frac{2}{L} \end{array}\right] u_L(t) }

のように得られる。また,出力方程式は

\displaystyle{ y(t)= \left[\begin{array}{ccc} 1 & 0 \end{array}\right] \left[\begin{array}{c} x(t) \\ x_L(t) \end{array}\right] }

のように得られる。

演習1.10 2次系

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ 0 & 0 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] + \left[\begin{array}{c} 0 \\ 1 \end{array}\right] u(t) \nonumber \\ y(t) = \left[\begin{array}{cc} 1 & 0 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \end{array}\right] \end{array}\right. }

の入力に,むだ時間を2次系として近似したときの状態空間表現

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_{L1}(t) \\ \dot{x}_{L2}(t) \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ -\frac{12}{L^2} & -\frac{6}{L} \end{array}\right] \left[\begin{array}{c} x_{L1}(t) \\ x_{L2}(t) \end{array}\right] + \left[\begin{array}{c} 0 \\ 1 \end{array}\right] u_L(t) \nonumber \\ y_L(t) = \left[\begin{array}{cc} 0 & -\frac{12}{L} \end{array}\right] \left[\begin{array}{c} x_{L1}(t) \\ x_{L2}(t) \end{array}\right] +u_L(t) \end{array}\right. }

の出力を結合して得られるシステムの状態空間表現を求めよ。

MATLABを用いて座標変換を行うために,たとえば演習1.8で,\omega_n=1,\zeta=-0.01の場合,つぎのコマンドを与えればよい。

%coordinate_transformation.m
om=1; zeta=0.01;
A=[0 1;-om^2 -2*zeta*om]; B=[0;om^2]; C=[1 0]; D=0;
sys1=ss(A,B,C,D);
T=[1 0;-zeta*om om*sqrt(1-zeta^2)];
sys2=ss2ss(sys1,inv(T))

SCILABを用いて座標変換を行うために,たとえば演習1.8で,\omega_n=1,\zeta=-0.01の場合,つぎのコマンドを与えればよい。

//coordinate_transformation.m
om=1; zeta=0.01;
A=[0 1;-om^2 -2*zeta*om]; B=[0;om^2]; C=[1 0]; D=0;
sys1=syslin(‘c’,A,B,C,D);
T=[1 0;-zeta*om om*sqrt(1-zeta^2)];
sys2=ss2ss(sys1,T)

つぎに,MATLABを用いて直列結合を行うためには,たとえば演習1.10でL=1の場合,つぎのコマンドを与えればよい。

%serial_connection.m
A1=[0 1;0 0]; B1=[0;1]; C1=[1 0]; D1=0;
sys1=ss(A1,B1,C1,D1);
L=1;
A2=[0 1;-12/L^2 -6/L]; B2=[0;1]; C2=[0 -12/L]; D2=1;
sys2=ss(A2,B2,C2,D2);
sys=sys1*sys2

ここで, sys1 と sys2 の順番に注意する。

最後に,状態空間表現から伝達関数行列表現(8章の(8.2)式を参照。)を求めるには,コマンド tf を用いる。たとえば,上のむだ時間を2次系として近似したときの状態空間表現 sys2 の伝達関数を求めるには,コマンド tf(sys2) を与えればよい。

つぎに,SCILABを用いて直列結合を行うためには,たとえば演習1.10でL=1の場合,つぎのコマンドを与えればよい。

//serial_connection.m
A1=[0 1;0 0]; B1=[0;1]; C1=[1 0]; D1=0;
sys1=syslin(‘c’,A1,B1,C1,D1);
L=1;
A2=[0 1;-12/L^2 -6/L]; B2=[0;1]; C2=[0 -12/L]; D2=1;
sys2=syslin(‘c’,A2,B2,C2,D2);
sys=sys1*sys2

ここで, sys1 と sys2 の順番に注意する。

最後に,状態空間表現から伝達関数行列表現(8章の(8.2)式を参照。)を求めるには,コマンド ss2tf を用いる。たとえば,上のむだ時間を2次系として近似したときの状態空間表現 sys2 の伝達関数を求めるには,コマンド ss2tf(sys2) を与えればよい。

演習問題の解答

演習1.1 \omega=\dot{\theta}とおくと,\dot{\theta}=\omega, \dot{\omega}=-\frac{3g}{4\ell}\theta。したがって,つぎの状態方程式を得る。

\displaystyle{ \left[\begin{array}{c} \dot{\theta} \\ \dot{\omega} \end{array}\right] = \left[\begin{array}{cc} 0 & 1 \\ -\frac{3g}{4\ell} & 0 \end{array}\right] \left[\begin{array}{c} \theta \\ \omega \end{array}\right] }

演習1.2 v_1=\dot{x}_1, v_2=\dot{x}_2とおくと,\dot{x}_1=v_1, \dot{v}_1=-(x_1-x_2)+u\dot{x}_2=v_2, \dot{v}_2=-(x_2-x_1)。したがって,つぎの状態方程式を得る。

\displaystyle{ \left[\begin{array}{c} \dot{x}_1 \\ \dot{v}_1 \\ \dot{x}_2 \\ \dot{v}_2 \end{array}\right] = \left[\begin{array}{cccc} 0 & 1 & 0 & 0 \\ -1 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 1 & 0 & -1 & 0 \\ \end{array}\right] \left[\begin{array}{c} x_1 \\ v_1 \\ x_2 \\ v_2 \end{array}\right] + \left[\begin{array}{c} 0 \\ 1 \\ 0 \\ 0 \end{array}\right] u }

または

\displaystyle{ \left[\begin{array}{c} \dot{x}_1 \\ \dot{x}_2 \\ \dot{v}_1 \\ \dot{v}_2 \end{array}\right] = \left[\begin{array}{cccc} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ -1 & 1 & 0 & 0 \\ 1 & -1 & 0 & 0 \\ \end{array}\right] \left[\begin{array}{c} x_1 \\ x_2 \\ v_1 \\ v_2 \end{array}\right] + \left[\begin{array}{c} 0 \\ 0 \\ 1 \\ 0 \end{array}\right] u }

演習1.3 一定のトルク\tau^*のもとで一定の角速度\omega^*を得ている。これらは運動方程式\dot{\omega}=-{\omega}+\tauを満足するので,0=-\omega^*+\tau^*。これを運動方程式から辺々引き算して,つぎの1次系としての状態空間表現を得る。

\displaystyle{ \left\{\begin{array}{l} \underbrace{\frac{d}{dt}(\omega-\omega^*)}_{\dot x} =\underbrace{-1}_{a}\underbrace{(\omega-\omega^*)}_{x} +\underbrace{1}_{b} \underbrace{(\tau-\tau^*)}_{u} \\ \underbrace{\omega-\omega^*}_{y} =\underbrace{1}_{c}\underbrace{\omega-\omega^*}_{x} \end{array}\right. }

演習1.4 x_1={y}, x_2=\dot{y}とおくと,\dot{x}_1=x_2, \dot{x}_2=-a_1x_2-a_2x_1+u。したがって,つぎの状態空間表現を得る。

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1 \\ \dot{x}_2 \\ \end{array}\right] = \left[\begin{array}{cccc} 0 & 1 \\ -a_2 & -a_1 \\ \end{array}\right] \left[\begin{array}{c} x_1 \\ x_2 \\ \end{array}\right] + \left[\begin{array}{c} 0 \\ 1 \\ \end{array}\right] u \\ y = \left[\begin{array}{cccc} 1 & 0 \end{array}\right] \left[\begin{array}{c} x_1 \\ x_2 \\ \end{array}\right] \end{array}\right. }

または

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_2 \\ \dot{x}_1 \\ \end{array}\right] = \left[\begin{array}{cccc} -a_1 & -a_2 \\ 1 & 0 \\ \end{array}\right] \left[\begin{array}{c} x_2 \\ x_1 \\ \end{array}\right] + \left[\begin{array}{c} 1 \\ 0 \\ \end{array}\right] u \\ y = \left[\begin{array}{cccc} 0 & 1 \end{array}\right] \left[\begin{array}{c} x_2 \\ x_1 \\ \end{array}\right] \end{array}\right. }

演習1.5 \dot{x}=u,\ y=x+uより,つぎのブロック線図を得る。

演習1.6 \dot{x}_1=x_2,\ \dot{x}_2=-2\zeta\omega_nx_2+\omega_n^2u,\ y=c_2x_2より,つぎのブロック線図を得る。

演習1.7 \dot{v}_1=-(x_1-x_2)+u,\ \dot{v}_2=-(x_2-x_1)より,つぎのブロック線図を得る。

演習1.8 状態空間表現に

\displaystyle{ \left[\begin{array}{c} x_1 \\ x_2 \end{array}\right] = \left[\begin{array}{cc} 1 & 0 \\ -\zeta\omega_n & \omega_n\sqrt{1-\zeta^2} \end{array}\right] \left[\begin{array}{c} x_1' \\ x_2' \end{array}\right] }

を代入して

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{cc} 1 & 0 \\ -\zeta\omega_n & \omega_n\sqrt{1-\zeta^2} \end{array}\right] \left[\begin{array}{c} \dot{x}_1' \\ \dot{x}_2' \end{array}\right] \nonumber \\ = \left[\begin{array}{cc} 0 & 1 \\ -\omega_n^2 & -2\zeta\omega_n \end{array}\right] \left[\begin{array}{cc} 1 & 0 \\ -\zeta\omega_n & \omega_n\sqrt{1-\zeta^2} \end{array}\right] \left[\begin{array}{c} x_1' \\ x_2' \end{array}\right] + \left[\begin{array}{c} 0 \\ 1 \end{array}\right] u \nonumber \\ y= \left[\begin{array}{cc} 1 & 0 \end{array}\right] \left[\begin{array}{cc} 1 & 0 \\ -\zeta\omega_n & \omega_n\sqrt{1-\zeta^2} \end{array}\right] \left[\begin{array}{c} x_1' \\ x_2' \end{array}\right] \end{array}\right. }

この状態方程式の左から

\displaystyle{ \left[\begin{array}{cc} 1 & 0 \\ -\zeta\omega_n & \omega_n\sqrt{1-\zeta^2} \end{array}\right]^{-1} = \frac{1}{\omega_n\sqrt{1-\zeta^2}} \left[\begin{array}{cc} \omega_n\sqrt{1-\zeta^2} & 0 \\ \zeta\omega_n & 1 \end{array}\right] }

をかけて,つぎの状態空間表現を得る。

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1' \\ \dot{x}_2' \end{array}\right] = \left[\begin{array}{cc} -\zeta\omega_n & \omega_n\sqrt{1-\zeta^2} \\ -\omega_n\sqrt{1-\zeta^2} & -\zeta\omega_n \end{array}\right] \left[\begin{array}{c} x_1' \\ x_2' \end{array}\right] + \left[\begin{array}{c} 0 \\ \frac{1}{\omega_n\sqrt{1-\zeta^2}} \end{array}\right] u \nonumber \\ y= \left[\begin{array}{cc} 1 & 0 \end{array}\right] \left[\begin{array}{c} x_1' \\ x_2' \end{array}\right] \end{array}\right. }

演習1.9

\displaystyle{ \underbrace{ \left[\begin{array}{cc} 1 & 0 \end{array}\right] }_{C'} \underbrace{ \left[\begin{array}{cc} t_{11} & t_{12} \\ t_{21} & t_{22} \end{array}\right] }_T = \underbrace{ \left[\begin{array}{cc} c_1 & c_2 \end{array}\right] }_C \quad(Tは正則) }

を満足させればよいので,たとえばt_{11}=c_1(\ne0), t_{12}=c_2, t_{21}=0, t_{22}=1と選べばよい。

演習1.10

\displaystyle{ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x}_1(t) \\ \dot{x}_2(t) \\\hdashline \dot{x}_{L1}(t) \\ \dot{x}_{L2}(t) \end{array}\right] = \left[\begin{array}{cc:cc} 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & -\frac{12}{L} \\\hdashline 0 & 0 & 0 & 1 \\ 0 & 0 & -\frac{12}{L^2} & -\frac{6}{L} \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \\ \hdashline x_{L1}(t) \\ x_{L2}(t) \end{array}\right] + \left[\begin{array}{c} 0 \\ 1 \\ \hdashline 0 \\ 1 \end{array}\right] u_L(t) \\ y(t)= \left[\begin{array}{cc:cc} 1 & 0 & 0 & 0 \end{array}\right] \left[\begin{array}{c} x_1(t) \\ x_2(t) \\ \hdashline x_{L1}(t) \\ x_{L2}(t) \end{array}\right] \end{array}\right. }