線形計画問題

線形計画問題

[1]  次の線形計画問題を考えます。

\displaystyle{\boxed{ \begin{array}{l} {\rm\bf maxmize}\ f(x,y)=x+y\\ {\rm\bf subject\ to}\ \left\{\begin{array}{l} x\ge0\\ y\ge0\\ 5x+6y\le30\\ 3x+2y\le12 \end{array}\right. \end{array}} }

これは目的関数

\displaystyle{(1)\quad f(x,y)=x+y}

制約条件

\displaystyle{(2)\quad \left\{\begin{array}{l} x\ge0\\ y\ge0\\ 5x+6y\le30\\ 3x+2y\le12 \end{array}\right. }

の下で最小化する決定変数x,yを求める問題として定式化されています。制約条件を満たすx,yの集合を実行可能領域と呼びます。この問題は図1のように図示され、実行可能領域は凸多角形となり、これを通過する直線y=-x+zのうち最大のy切片を与える端点として求められます。

図1 線形計画問題の例

●この問題を制約条件付最小化問題

\displaystyle{\boxed{ \begin{array}{l} {\rm\bf minimize}\ f(x,y)=-(x+y)\\ {\rm\bf subject\ to}\ \left\{\begin{array}{l} x\ge0\\ y\ge0\\ 5x+6y\le30\\ 3x+2y\le12 \end{array}\right. \end{array}} }

として、MATLABで解く場合のコードを次に示します。

MATLAB
%lp.m
%-----
 clear all close all
 x=-1:10; y=-1:10; 
 plot(x,-5/6*x+5,'b',x,-3/2*x+6,'b',x,-x+3,'r')
 axis([0 6 0 6]),grid, hold on
%------ LMIの設定
 setlmis([]); 
 x=lmivar(1,[1 1]); y=lmivar(2,[1 1]); 
 lmi1=newlmi;                   %#1: x>=0
 lmiterm([-lmi1 1 1 x],1,1);    %x in RHS 
 lmi2=newlmi;                   %#2: y>=0 
 lmiterm([-lmi2 1 1 y],1,1);    %y in RHS 
 lmi3=newlmi;                   %#3: 5x+6y-30<=0
 lmiterm([lmi3 1 1 x],5,1);     %5x in LHS
 lmiterm([lmi3 1 1 y],6,1);     %6y in LHS
 lmiterm([lmi3 1 1 0],-30);     %-30 in LHS
 lmi4=newlmi;                   %#3: 3x+2y-12<=0
 lmiterm([lmi4 1 1 x],3,1);     %3x in LHS
 lmiterm([lmi4 1 1 y],2,1);     %2y in LHS
 lmiterm([lmi4 1 1 0],-12);     %-12 in LHS
 LMIs=getlmis;  
%----- 実行可能解の存在
 [tmin,xfeas]=feasp(LMIs); tmin
 xf=dec2mat(LMIs,xfeas,x), yf=dec2mat(LMIs,xfeas,y)
 plot(xf,yf,'*')
%----- 目的関数の設定と最小解求解
 cobj=-[1 1]; 
 [cost,xopt]=mincx(LMIs,cobj); cost
 xs=dec2mat(LMIs,xopt,x), ys=dec2mat(LMIs,xopt,y)
 plot(xs,ys,'o')
%-----
%eof

実行可能解の存在をチェックする関数feapの実行結果は次のようになり、t<0の値が得られているので、一つの実行可能解が示されています。


 Solver for LMI feasibility problems L(x) < R(x)
    This solver minimizes  t  subject to  L(x) < R(x) + t*I
    The best value of t should be negative for feasibility

 Iteration   :    Best value of t so far 
 
     1                       -1.203989

 Result:  best value of t:    -1.203989
          f-radius saturation:  0.000% of R =  1.00e+09
 

tmin =
   -1.2040

xf =
    1.2781

yf =
    3.3444

制約条件付最小化問題を解く関数mincxの実行結果は次のようになり、最小解が示されています。


 Solver for linear objective minimization under LMI constraints 

 Iterations   :    Best objective value so far 
     1                  -5.075328
***                 new lower bound:    -5.611584
     2                  -5.211637
***                 new lower bound:    -5.312330
     3                  -5.248462
***                 new lower bound:    -5.298322
 Result:  feasible solution of required accuracy
          best objective value:    -5.248462
          guaranteed relative accuracy:  9.50e-03
          f-radius saturation:  0.000% of R =  1.00e+09 
 
cost =
   -5.2485

xs =
    1.4914

ys =
    3.7571

LPV制御

LPV制御…Homework

[1] 回転体は次の運動方程式で表されます。

\displaystyle{(1)\quad \left\{\begin{array}{l} J_1\dot{\omega}_1(t)-\omega_2(t)\Omega(t)(J_2-J_3)=\tau_1(t) \\ J_2\dot{\omega}_2(t)-\omega_1(t)\Omega(t)(J_3-J_1)=\tau_2(t) \end{array}\right. }

ここで、次のパラメータ変動を想定します。

\displaystyle{(2)\quad \Omega_{min}<\Omega(t)<\Omega_{max} }

次の状態方程式を得ます。

\displaystyle{(3) \underbrace{ \left[\begin{array}{c} \dot{\omega}_1(t) \\ \dot{\omega}_2(t) \end{array}\right] }_{\dot{x}(t)} = \underbrace{ \left[\begin{array}{cc} 0 & \Omega(t)\frac{J_2-J_3}{J_1} \\ \Omega(t)\frac{J_3-J_1}{J_2} & 0 \end{array}\right] }_{A(\Omega(t))} \underbrace{ \left[\begin{array}{c} \omega_1(t) \\ \omega_2(t) \end{array}\right] }_{x(t)} + \underbrace{ \left[\begin{array}{cc} \frac{1}{J_1} & 0 \\ 0 & \frac{1}{J_2} \end{array}\right] }_{B} \underbrace{ \left[\begin{array}{c} \tau_1(t) \\ \tau_2(t) \end{array}\right] }_{u(t)} }

●そのために、A(\Omega(t))は次式で表されることに着目します。

\displaystyle{(5)\quad A(\Omega(t))= \underbrace{\frac{\Omega_{max}-\Omega(t)}{\Omega_{max}-\Omega_{min}}}_{p_1(\Omega(t))} \underbrace{A(\Omega_{min})}_{A_1} + \underbrace{\frac{\Omega(t)-\Omega_{min}}{\Omega_{max}-\Omega_{min}}}_{p_2(\Omega(t))} \underbrace{A(\Omega_{max})}_{A_2} }

ただし

\displaystyle{(6)\quad p_1(\Omega(t))+p_2(\Omega(t))=1 }

このとき上の状態方程式は、端点(vertex)モデルとよばれる

\displaystyle{(7)\quad \dot{x}(t)=A_1x(t)+Bu(t),\ \dot{x}(t)=A_2x(t)+Bu(t) }

を、係数p_1(\Omega),p_2(\Omega)によって重み付けて

\displaystyle{(8)\quad \dot{x}(t)=\underbrace{(p_1(\Omega(t))A_1+p_2(\Omega(t))A_2)}_{A(\Omega(t))}x(t)+Bu(t) }

のように得られることが分かります。これをLPV(Linear Parameter Varying)モデルと呼びます。

[2] 状態フィートバックによるパラメータ変動抑制について考えます。そのために端点モデルに対応した端点コントローラとよばれる

\displaystyle{(9)\quad u(t)=-F_1x(t),\ u(t)=-F_2x(t) }

を、係数p_1(\Omega(t)),p_2(\Omega(t))によって重み付けた

\displaystyle{(10)\quad u(t)=-\underbrace{(p_1(\Omega(t))F_1+p_2(\Omega(t))F_2)}_{F(\Omega(t))}x(t) }

のようなLPV(Linear Parameter Varying)制御を考えます。これは次のように図示されます。

図3 LPV制御の枠組み

この閉ループ系は次式で表されます。

\displaystyle{(11)\quad \dot{x}(t)=\underbrace{(p_1(\Omega(t))(A_1-BF_1)+p_2(\Omega(t))(A_2-BF_2))}_{A_F(\Omega(t))}x(t) }

ここで、A_1-BF_1A_2-BF_2は安定行列となるように設計しますが、閉ループ系の時変系としての安定性が保証されるかの検討が必要になります。

[3] そのための準備として、次の時変自由系の漸近安定性を考えます。

\displaystyle{(12)\quad \dot{x}(t)=A(t)x(t) }

平衡状態x=0の近傍{\cal X}において、リャプノフ関数とよばれる

\displaystyle{(13)\quad \left\{\begin{array}{ll} V(x)>0 & (x\in{\cal X}, x\ne0) \\ V(x)=0 & (x=0) \end{array}\right. }

を構成して

\displaystyle{(14)\quad \frac{d}{dt}V(x(t))<0 }

を示すことができれば、平衡状態は漸近安定となることが知られています。リャプノフ関数の存在は十分条件であること、またリャプノフ関数も時変でなく時不変としていることに注意してください。

●ちなみに、時不変自由系

\displaystyle{(15)\quad \dot{x}(t)=Ax(t) }

の漸近安定性\lambda(A)\subset{\bf LHP}のLMI条件は

\displaystyle{(16)\quad \exists X>0:XA+A^TX<0\Leftrightarrow\exists Y>0:AY+YA^T<0 }

でした(前者がX-LMI、後者がY-LMI)。このときは

\displaystyle{(17)\quad V(x(t))=x^T(t)Xx(t)}

と選べば

\displaystyle{(18)\quad \frac{d}{dt}V(x(t))=\dot{x}^T(t)Xx(t)+x^T(t)X\dot{x}(t)=x^T(t)(A^TX+XA)x(t)<0 }

となっていることが分かります。

[4] いま、上のA_1-BF_1A_2-BF_2を個別に安定行列としたとすると

\displaystyle{(19)\quad \exists X_1>0:X_1(A_1-BF_1)+(A_1-BF_1)^TX_1<0 }
\displaystyle{(20)\quad \exists X_2>0:X_2(A_2-BF_2)+(A_2-BF_2)^TX_2<0 }

から、個別にリャプノフ関数の候補

\displaystyle{(21)\quad V_1(x(t))=x^T(t)X_1x(t)}
\displaystyle{(22)\quad V_2(x(t))=x^T(t)X_2x(t)}

が得られますが、閉ループ系

\displaystyle{(23)\quad\dot{x}(t)=A_F(t)x(t)}

のリャプノフ関数を構成したことにはなりません。一方

\displaystyle{(24)\quad \exists X>0: \begin{array}{l} X(A_1-BF_1)+(A_1-BF_1)^TX<0\\ X(A_2-BF_2)+(A_2-BF_2)^TX<0 \end{array} }

となる共通のX>0を見つけることができれば

\displaystyle{(25)\quad V(x(t))=x^T(t)Xx(t) }

に対して、LPV制御では

\displaystyle{(26)\quad \begin{array}{l} \frac{d}{dt}V(x(t))=x^T(t)(A_F^T(\Omega(t))X+XA_F(\Omega(t)))x(t)\\\ =x^T(t)( ( ( p_1(\Omega(t))(A_1-BF_1)+p_2(\Omega(t))(A_2-BF_2) )^TX\\ +X( p_1(\Omega(t))(A_1-BF_1)+p_2(\Omega(t))(A_2-BF_2) ) )x(t)\\ =p_1(\Omega(t)) \underbrace{x^T(t)((A_1-BF_1)^TX+X(A_1-BF_1))x(t)}_{<0}\\ +p_2(\Omega(t)) \underbrace{x^T(t)((A_2-BF_2)^TX+X(A_2-BF_2))x(t)}_{<0}<0 \end{array} }

となって、リャプノフ関数を構成したことになります。

[5] LPVモデル

\displaystyle{(27)\quad \left\{\begin{array}{l} \dot{x}(t)=\underbrace{(p_1(\Omega(t))(A_1-BF_1)+p_2(\Omega(t))(A_2-BF_2))}_{A_F(t)}x(t)+Bu(t) \\ y(t)=Cx(t)+Du(t) \end{array}\right. }

に対して、各端点モデルの閉ループ系において、H_\inftyノルムは\gammaより小であるとすると

\displaystyle{(28)\quad \exists X_1>0:\ \left[\begin{array}{ccc} (A_1-BF_1)^TX_1+X_1(A_1-BF_1) & X_1B & C^T \\ B^TX_1 & -\gamma I & D^T \\ C & D & -\gamma I \end{array}\right]<0 }
\displaystyle{(29)\quad \exists X_2>0:\ \left[\begin{array}{ccc} (A_2-BF_2)^TX_2+X_2(A_2-BF_2) & X_2B & C^T \\ B^TX_2 & -\gamma I & D^T \\ C & D & -\gamma I \end{array}\right]<0 }

が成り立ちます。いま、共通解X_1=X_2=X>0が求まっているとしますと

\displaystyle{(30)\quad \left[\begin{array}{ccc} (A_1-BF_1)^TX+X(A_1-BF_1) & XB & C^T \\ B^TX & -\gamma^2 I & D^T \\ C & D &-I \end{array}\right]<0 }
\displaystyle{ \Leftrightarrow \left[\begin{array}{cc} (A_1-BF_1)^TX+X(A_1-BF_1) & XB \\ B^TX & 0 \end{array}\right] < \left[\begin{array}{cc} C^T & 0 \\ D^T & I \end{array}\right] \left[\begin{array}{cc} -I & 0 \\ 0 & \gamma^2 I \end{array}\right] \left[\begin{array}{cc} C & D \\ 0 & I \end{array}\right] }
\displaystyle{(31)\quad \left[\begin{array}{ccc} (A_1-BF_1)^TX+X(A_1-BF_1) & XB & C^T \\ B^TX & -\gamma^2 I & D^T \\ C & D &-I \end{array}\right]<0 }
\displaystyle{ \Leftrightarrow \left[\begin{array}{cc} (A_2-BF_2)^TX+X(A_2-BF_2) & XB \\ B^TX & 0 \end{array}\right] < \left[\begin{array}{cc} C^T & 0 \\ D^T & I \end{array}\right] \left[\begin{array}{cc} -I & 0 \\ 0 & \gamma^2 I \end{array}\right] \left[\begin{array}{cc} C & D \\ 0 & I \end{array}\right] }

に注意して、LPV制御では

\displaystyle{(32)\quad \dot{V}(x(t))=\frac{d}{dt}(x^T(t)Xx(t))= }
\displaystyle{ \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right]^T \left[\begin{array}{cc} \begin{array}{c} ( p_1(\Omega(t))(A_1-BF_1)+p_2(\Omega(t))(A_2-BF_2) )^TX\\ +X( p_1(\Omega(t))(A_1-BF_1)+p_2(\Omega(t))(A_2-BF_2) ) \end{array} & XB \\ B^TX & 0 \end{array}\right] \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right] }
\displaystyle{ =p_1(\Omega(t)) \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right]^T \left[\begin{array}{cc} (A_1-BF_1)^TX+X(A_1-BF_1) & XB \\ B^TX & 0 \end{array}\right] \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right] }
\displaystyle{ +p_2(\Omega(t)) \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right]^T \left[\begin{array}{cc} (A_2-BF_2)^TX+X(A_2-BF_2) & XB \\ B^TX & 0 \end{array}\right] \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right] }
\displaystyle{ < \underbrace{(p_1(\Omega(t))+p_2(\Omega(t)))}_1 \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right]^T \left[\begin{array}{cc} C & D \\ 0 & I \end{array}\right]^T \left[\begin{array}{cc} - I & 0 \\ 0 & \gamma^2 I \end{array}\right] \left[\begin{array}{cc} C & D \\ 0 & I \end{array}\right] \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right] }
\displaystyle{ =\gamma^2 u^T(t)u(t)-y^T(t)y(t) }

を得ます。すなわち時変系としての閉ループ系において、消散性の条件

\displaystyle{(33)\quad \underbrace{\frac{d}{dt}(x^TXx)}_{\dot{V}(x)} <\underbrace{\gamma^2 u^Tu-y^Ty}_{s(u,y)} }

が成り立ち

\displaystyle{(34)\quad \sup_{u\in{\cal L}_2}\frac{||y(t)||_2}{||u(t)||_2}<\gamma }

が成り立ちます。これは時不変系の場合にはH_\inftyノルムですが、時変系の場合は{\cal L}_2ゲインとよびます。

(28)と(29)の共通解X_1=X_2=X>0が求まれば、(24)は自動的に満足されるので、閉ループ系の時変系としての安定性が保証されることになります。

[6] いま、次の2ポート表現かつポリトピック表現されたn次系を考えます。

\displaystyle{(35)\quad P: \left\{\begin{array}{l} \dot{x}(t)=\underbrace{(p_1(\Omega(t))A_1+p_2(\Omega(t))A_2)}_{A(\Omega(t))}x(t)+B_1u_1(t)+B_2u_2(t) \\ \underbrace{ \left[\begin{array}{c} y(t)\\ u(t) \end{array}\right] }_{y_1(t)} = \underbrace{ \left[\begin{array}{c} C\\ 0 \end{array}\right] }_{C_1} x(t)+ \underbrace{ \left[\begin{array}{c} 0\\ 0 \end{array}\right] }_{D_{11}}u_1(t)+ \underbrace{ \left[\begin{array}{c} 0\\ I \end{array}\right] }_{D_{12}} u_2(t) \\ y_2(t)=x(t) \end{array}\right. }

これに対する状態フィードバック

\displaystyle{(36)\quad K: u_2(t)=-\underbrace{(p_1(\Omega(t))F_1+p_2(\Omega(t))F_2)}_{F(\Omega(t))}y_2(t) }

による閉ループ系

\displaystyle{(37)\quad P_{CL}: \left\{\begin{array}{l} \dot{x}(t)=(A(\Omega(t))-B_2F(\Omega(t)))x(t)+B_1u_1(t) \\ y_1(t)= \underbrace{ \left[\begin{array}{c} C\\ -F \end{array}\right] }_{C_1-D_{12}F} x(t) \end{array}\right. }

において、その{\cal L}_2ゲインが\gammaより小、すなわち

\displaystyle{(38)\quad \sup_{u_1\in{\cal L}_2}\frac{||y_1(t)||_2}{||u_1(t)||_2}<\gamma }

となるように状態フィードバックゲインF_1,F_2を求める問題を考えます。

●詳しい説明はあとで行いますが、この問題は次のように、線形行列不等式を制約条件にもつ線形計画問題として定式化されます。

Minimize \gamma on Y,Z_1,Z_2 subject to

\displaystyle{(39)\quad Y>0 }

\displaystyle{(40)\quad \left[\begin{array}{ccc} (A_1Y-B_2Z_1)^T+A_1Y-B_2Z_1 & B_1 & (C_1Y-D_{12}Z_1)^T \\ B_1^T & -\gamma I & D_{11}^T \\ C_1Y-D_{12}Z_1 & D_{11} & -\gamma I \end{array}\right]<0  }

\displaystyle{(41)\quad \begin{array}{l} 2\alpha Y+A_1Y-B_2Z_1+(A_1Y-B_2Z_1)^T<0 \\ \left[\begin{array}{cc} -rY & A_1Y-B_2Z_1 \\ (A_1Y-B_2Z_1)^T & -rY \end{array}\right]<0 \\ \left[\begin{array}{cc} \sin\theta(A_1Y-B_2Z_1+(A_1Y-B_2Z_1)^T) & \\ -\cos\theta(A_1Y-B_2Z_1-(A_1Y-B_2Z_1)^T) & \end{array}\right. \\ \left.\begin{array}{cc} & \cos\theta(A_1Y-B_2Z_1-(A_1Y-B_2Z_1)^T) \\ & \sin\theta(A_1Y-B_2Z_1+(A_1Y-B_2Z_1)^T) \end{array}\right]<0  \end{array} }

\displaystyle{(42)\quad \left[\begin{array}{ccc} (A_2Y-B_2Z_2)^T+A_2Y-B_2Z_2 & B_1 & (C_1Y-D_{12}Z_2)^T \\ B_1^T & -\gamma I & D_{11}^T \\ C_1Y-D_{12}Z_2 & D_{11} & -\gamma I \end{array}\right]<0 \\ }

\displaystyle{(43)\quad \begin{array}{l} 2\alpha Y+A_1Y-B_2Z_2+(A_1Y-B_2Z_2)^T<0 \\ \left[\begin{array}{cc} -rY & A_1Y-B_2Z_2 \\ (A_1Y-B_2Z_2)^T & -rY \end{array}\right]<0 \\ \left[\begin{array}{cc} \sin\theta(A_2Y-B_2Z_2+(A_2Y-B_2Z_2)^T) & \\ -\cos\theta(A_2Y-B_2Z_2-(A_2Y-B_2Z_2)^T) & \end{array}\right. \\ \left.\begin{array}{cc} & \cos\theta(A_2Y-B_2Z_2-(A_2Y-B_2Z_2)^T) \\ & \sin\theta(A_2Y-B_2Z_2+(A_2Y-B_2Z_2)^T) \end{array}\right]<0 \end{array} }

この最小化問題の解 Y,Z_1,Z_2を用いて、次のようにF_1,F_2を定めます。

\displaystyle{(38)\quad F_1=Z_1Y^{-1}}
\displaystyle{(39)\quad F_2=Z_2Y^{-1}}

[6] LPV制御のイメージを次に示します。LPVモデルとして表すことができる制御対象に対して、端点コントローラを求め、これを変動パラメータでスケジューリングする仕組みを表しています。

図4 LPV制御のイメージ

これに対して従来型のPID制御、LQI制御などのLTI制御は、次のように表すことができます。このようにピンポイントの制御が可能なので、一般には優れた性能を示しますが、パラメータ変動を考慮していないのでロバスト性は劣ると考えられます。

図5 LTI制御のイメージ

また、LPV制御の副産物として、スケジューリングを止めるとLTI制御方式が得られ、実装上の観点からメリットがあります。

図6 LPV制御においてスケジューリングを止めた場合

演習B03…Flipped Classroom

1^\circ 回転体のパラメータ変動を状態FBによるLPV制御で抑制したシミュレーションプログラムを以下に示す。これを実行し効果を確かめよ。

MATLAB
%cSPIN_sf_gs.m
%-----
 clear all close all
 J1=1; J2=1; J3=0.5;
 OMnom=2*pi; OMmin=0*OMnom; OMmax=2*OMnom;
 A1=[0 (J2-J3)/J1;(J3-J1)/J2 0];
 B=diag([1/J1 1/J2]); C=eye(2); D=zeros(2,2);
 S0=[zeros(2,2) B;C D];
 S1=zeros(4,4); S1(1:2,1:2)=A1;
%-----
 J1=1; J2=1; J3=0.5; 
 OMnom=2*pi; OMmin=0*OMnom; OMmax=2*OMnom;
 A1= OMmin*[0 (J2-J3)/J1;(J3-J1)/J2 0]; 
 A2= OMmax*[0 (J2-J3)/J1;(J3-J1)/J2 0];
 B=diag([1/J1 1/J2]); 
 B1=B; B2=B;
 C1=[eye(2,2);zeros(2,2)]; 
 D11=zeros(4,2); 
 D12=[zeros(2,2);eye(2,2)];
 alpha=1; r=3; th=pi/4; 
 LMIs=sf_synlmi7(A1,A2,B1,B2,C1,D11,D12,alpha,r,th);
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
 Y=dec2mat(LMIs,xopt,2);  
 Z1=dec2mat(LMIs,xopt,3);
 Z2=dec2mat(LMIs,xopt,4); 
 F1=Z1/Y,pl1=eig(A1-B2*F1)
 F2=Z2/Y,pl2=eig(A2-B2*F2) 
%------
 figure(1) 
 subplot(121),dregion(alpha,0,r,th,7*[-1,1,-1,1]) 
 plot(real(pl1),imag(pl1),'*') 
 subplot(122), dregion(alpha,0,r,th,7*[-1,1,-1,1]) 
 plot(real(pl2),imag(pl2),'*')  
%------ 
 prange=OMmax-OMmin; pmax=OMmax; pmin=OMmin; 
 sim("SPIN_sf_gs") 
%-----
function LMIs=sf_synlmi7(A1,A2,B1,B2,C1,D11,D12,alpha,r,th)
 [n,m]=size(B2);  
 sth=sin(th); cth=cos(th);
 setlmis([]);
 gam=lmivar(1,[1 0]); 
 Y=lmivar(1,[n 1]); 
 Z1=lmivar(2,[m n]); 
 Z2=lmivar(2,[m n]); 
%
 lmi11=newlmi;
 lmiterm([lmi11,1,1,Y],A1,1,'s');      %#1:A*Y+Y*A' 
 lmiterm([lmi11,1,1,Z1],-B2,1,'s');    %#1:-(B2*Z+Z*B2') 
 lmiterm([lmi11,1,2,0],B1);            %#1:B1 
 lmiterm([lmi11,2,2,gam],-1,1);        %#1:-gam 
 lmiterm([lmi11,3,1,Y],C1,1);          %#1:C1*Y 
 lmiterm([lmi11,3,1,Z1],-D12,1);       %#1:D12*Z 
 lmiterm([lmi11,3,2,0],D11);           %#1:D11 
 lmiterm([lmi11,3,3,gam],-1,1);        %#1:-gam 
 lmi21=newlmi;  
 lmiterm([lmi21,1,1,Y],A1,1,'s');      %#2:A*Y+Y*A'   
 lmiterm([lmi21,1,1,Z1],-B2,1,'s');    %#2:-(B2*Z+Z'*B2')   
 lmiterm([lmi21,1,1,Y],2*alpha,1);     %#2:2*alpha*Y   
 lmi31=newlmi;  
 lmiterm([lmi31,1,1,Y],-r,1);          %#3:-r*Y  
 lmiterm([lmi31,1,2,Y],A1,1);          %#3:A*Y   
 lmiterm([lmi31,1,2,Z1],-B2,1);        %#3:-B2*Z  
 lmiterm([lmi31,2,2,Y],-r,1);          %#3:-r*Y  
 lmi41=newlmi;  
 lmiterm([lmi41,1,1,Y],sth*A1,1,'s');  %#4:sth*(A*Y+Y*A')  
 lmiterm([lmi41,1,1,Z1],-sth*B2,1,'s');%#4:-sth*(B2*Z+Z'*B2')  
 lmiterm([lmi41,1,2,Y],cth*A1,1);      %#4:cth*A*Y  
 lmiterm([lmi41,1,2,Y],1,-cth*A1');    %#4:-cth*Y*A'  
 lmiterm([lmi41,1,2,Z1],-cth*B2,1);    %#4:-cth*B2*Z  
 lmiterm([lmi41,1,2,-Z1],1,cth*B2');   %#4:cth*Z'*B2'  
 lmiterm([lmi41,2,2,Y],sth*A1,1,'s');  %#4:sth*(A*Y+Y*A')  
 lmiterm([lmi41,2,2,Z1],-sth*B2,1,'s');%#4:-sth*(B2*Z+Z'*B2')  
%
 lmi12=newlmi;
 lmiterm([lmi12,1,1,Y],A2,1,'s');      %#1:A*Y+Y*A' 
 lmiterm([lmi12,1,1,Z2],-B2,1,'s');    %#1:-(B2*Z+Z*B2') 
 lmiterm([lmi12,1,2,0],B1);            %#1:B1 
 lmiterm([lmi12,2,2,gam],-1,1);        %#1:-gam 
 lmiterm([lmi12,3,1,Y],C1,1);          %#1:C1*Y 
 lmiterm([lmi12,3,1,Z2],-D12,1);       %#1:D12*Z 
 lmiterm([lmi12,3,2,0],D11);           %#1:D11 
 lmiterm([lmi12,3,3,gam],-1,1);        %#1:-gam 
 lmi22=newlmi;  
 lmiterm([lmi22,1,1,Y],A2,1,'s');      %#2:A*Y+Y*A'   
 lmiterm([lmi22,1,1,Z2],-B2,1,'s');    %#2:-(B2*Z+Z'*B2')   
 lmiterm([lmi22,1,1,Y],2*alpha,1);     %#2:2*alpha*Y   
 lmi32=newlmi;  
 lmiterm([lmi32,1,1,Y],-r,1);          %#3:-r*Y  
 lmiterm([lmi32,1,2,Y],A2,1);          %#3:A*Y   
 lmiterm([lmi32,1,2,Z2],-B2,1);        %#3:-B2*Z  
 lmiterm([lmi32,2,2,Y],-r,1);          %#3:-r*Y  
 lmi42=newlmi;  
 lmiterm([lmi42,1,1,Y],sth*A2,1,'s');  %#4:sth*(A*Y+Y*A')  
 lmiterm([lmi42,1,1,Z2],-sth*B2,1,'s');%#4:-sth*(B2*Z+Z'*B2')  
 lmiterm([lmi42,1,2,Y],cth*A2,1);      %#4:cth*A*Y  
 lmiterm([lmi42,1,2,Y],1,-cth*A2');    %#4:-cth*Y*A'  
 lmiterm([lmi42,1,2,Z2],-cth*B2,1);    %#4:-cth*B2*Z  
 lmiterm([lmi42,1,2,-Z2],1,cth*B2');   %#4:cth*Z'*B2'  
 lmiterm([lmi42,2,2,Y],sth*A2,1,'s');  %#4:sth*(A*Y+Y*A')  
 lmiterm([lmi42,2,2,Z2],-sth*B2,1,'s');%#4:-sth*(B2*Z+Z'*B2')  
%
 lmi5=newlmi;
 lmiterm([-lmi5,1,1,Y],1,1);           %#5:Y   
 lmi6=newlmi;
 lmiterm([lmi6,1,1,gam],1,1);          %#6:gam 
 lmiterm([-lmi6,1,1,0],1e3);           %#6:1000    
 LMIs=getlmis; 
end
%-----
%eof

図7 回転体のLPV制御

2^\circ 回転体のパラメータ変動を状態FBによるH^\infty制御で抑制したシミュレーションプログラムを以下に示す。これを実行し1^\circと比較せよ。

MATLAB
%cSPIN_sf_hinf.m
%-----
 clear all close all
 J1=1; J2=1; J3=0.5;
 OMnom=2*pi; OMmin=0*OMnom; OMmax=2*OMnom;
 A1=[0 (J2-J3)/J1;(J3-J1)/J2 0];
 B=diag([1/J1 1/J2]); C=eye(2); D=zeros(2,2);
 S0=[zeros(2,2) B;C D];
 S1=zeros(4,4); S1(1:2,1:2)=A1;
%-----
 A=OMnom*[0 (J2-J3)/J1;(J3-J1)/J2 0];
 B=diag([1/J1 1/J2]); 
 B1=B; B2=B;
 C1=[eye(2,2);zeros(2,2)]; 
 D11=zeros(4,2); 
 D12=[zeros(2,2);eye(2,2)];
 alpha=1; r=3; th=pi/4; 
 LMIs=sf_synlmi6(A,B1,B2,C1,D11,D12,alpha,r,th);
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
 Y=dec2mat(LMIs,xopt,2);  
 Z=dec2mat(LMIs,xopt,3);  
 F=Z/Y;  
 pl=eig(A-B2*F)
 sim("SPIN_sf_hinf")
 close all,figure(1) 
 dregion(alpha,0,r,th,5*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'*') 
%-----
function LMIs=sf_synlmi6(A,B1,B2,C1,D11,D12,alpha,r,th)
 [n,m]=size(B2);  
 sth=sin(th); cth=cos(th);
 setlmis([]);
 gam=lmivar(1,[1 0]); 
 Y=lmivar(1,[n 1]); 
 Z=lmivar(2,[m n]); 
 lmi1=newlmi;
 lmiterm([lmi1,1,1,Y],A,1,'s');      %#1:A*Y+Y*A' 
 lmiterm([lmi1,1,1,Z],-B2,1,'s');    %#1:-(B2*Z+Z*B2') 
 lmiterm([lmi1,1,2,0],B1);           %#1:B1 
 lmiterm([lmi1,2,2,gam],-1,1);       %#1:-gam 
 lmiterm([lmi1,3,1,Y],C1,1);         %#1:C1*Y 
 lmiterm([lmi1,3,1,Z],-D12,1);       %#1:D12*Z 
 lmiterm([lmi1,3,2,0],D11);          %#1:D11 
 lmiterm([lmi1,3,3,gam],-1,1);       %#1:-gam 
 lmi2=newlmi;  
 lmiterm([lmi2,1,1,Y],A,1,'s');      %#2:A*Y+Y*A'   
 lmiterm([lmi2,1,1,Z],-B2,1,'s');    %#2:-(B2*Z+Z'*B2')   
 lmiterm([lmi2,1,1,Y],2*alpha,1);    %#2:2*alpha*Y   
 lmi3=newlmi;  
 lmiterm([lmi3,1,1,Y],-r,1);         %#3:-r*Y  
 lmiterm([lmi3,1,2,Y],A,1);          %#3:A*Y   
 lmiterm([lmi3,1,2,Z],-B2,1);        %#3:-B2*Z  
 lmiterm([lmi3,2,2,Y],-r,1);         %#3:-r*Y  
 lmi4=newlmi;  
 lmiterm([lmi4,1,1,Y],sth*A,1,'s');  %#4:sth*(A*Y+Y*A')  
 lmiterm([lmi4,1,1,Z],-sth*B2,1,'s');%#4:-sth*(B2*Z+Z'*B2')  
 lmiterm([lmi4,1,2,Y],cth*A,1);      %#4:cth*A*Y  
 lmiterm([lmi4,1,2,Y],1,-cth*A');    %#4:-cth*Y*A'  
 lmiterm([lmi4,1,2,Z],-cth*B2,1);    %#4:-cth*B2*Z  
 lmiterm([lmi4,1,2,-Z],1,cth*B2');   %#4:cth*Z'*B2'  
 lmiterm([lmi4,2,2,Y],sth*A,1,'s');  %#4:sth*(A*Y+Y*A')  
 lmiterm([lmi4,2,2,Z],-sth*B2,1,'s');%#4:-sth*(B2*Z+Z'*B2')  
 lmi5=newlmi;
 lmiterm([-lmi5,1,1,Y],1,1);         %#5:Y   
 lmi6=newlmi;
 lmiterm([lmi6,1,1,gam],1,1);        %#6:gam 
 lmiterm([-lmi6,1,1,0],1e3);         %#6:1000    
 LMIs=getlmis; 
end
%-----
%eof

図8 回転体のH_\infty制御

3^\circ 1^\circのLPV制御において、次のようにスケジューリングを止めた場合、これを実行し1^\circ2^\circと比較せよ。

図9 回転体のLPV制御においてスケジューリングを止めた場合

リャプノフの安定定理

リャプノフの安定定理

[1]  非線形システム理論に関する文献:
Hassan K.Khalil: Nonlinear Systems, 3rd ed., Prentice Hall, 2002
から次の定理(Theorem 4.1, p.114)を引用します。

リャプノフの安定定理 状態方程式

\displaystyle{(1)\quad \dot{x}(t)=f(x(t))}

に対して、その平衡状態 x^*=0 を含む領域 {\cal D} を考える。いま {\cal D} で連続微分可能な実数値関数 V に対して

\displaystyle{(2)\quad \left\{\begin{array}{l} V(0)=0 \\ V(x)>0\quad(x\in{\cal D},x\not=0) \end{array}\right.}

このとき

\displaystyle{(3)\quad \frac{d}{dt}V(x)\le0 \quad(x\in{\cal D})}

ならば、平衡状態 x^*=0 は安定、また

\displaystyle{(4)\quad \frac{d}{dt}V(x)<0 \quad(x\in{\cal D},x\not=0)}

ならば、平衡状態 x^*=0 は漸近安定である。

すなわち、(2)と(4)を満足するリャプノフ関数Vの存在を示して(発見して)、非線形系(1)の漸近安定性を示すことができます。

●振り子の例について、エネルギーの変化と安定性の関係を考えてみます。その運動方程式は,摩擦力を入れた場合

\displaystyle{(5)\quad  \underbrace{\frac{4}{3}m\ell^2}_J \dot{\omega}(t)=-mg\ell\sin\theta(t)-c\,\omega(t)\quad(\omega(t)=\dot{\theta}(t)) }

です。いま、運動エネルギーと位置エネルギーの和を

\displaystyle{(6)\quad  E=\frac{1}{2}J\omega^2(t)+mg\ell(1-\cos\theta(t))>0 }

と書くと、(5)を用いて

\displaystyle{(7)\quad  \dot{E}= (J\dot{\omega}(t)+mg\ell\sin\theta(t))\omega(t) =-c\,\omega^2(t) \le 0 }

が成り立ちます。このようにエネルギーが減少することは、振り子の揺れが止まることと対応するので、エネルギーの時間変化率から安定性を判定できそうです。

リャプノフの安定定理は十分条件であり、リャプノフ関数が見つからないからといって安定性や漸近安定性が成り立たないとはかぎりません。また、リャプノフ関数の構築法について一般論はないのですが、上でみたようにエネルギーとの関連が深いです。そこで、振り子の平衡状態

\displaystyle{(8)\quad  x^*= \left[\begin{array}{c} \theta^* \\ \omega^* \end{array}\right]= \left[\begin{array}{c} 0 \\ 0  \end{array}\right] }

の安定性を調べるために、(6)のエネルギーEをリャプノフ関数の候補としてみます。まず、(6)と(7)から、Ex^*=0の安定性を保証するためのリャプノフ関数といえます。

つぎに、(7)から

\displaystyle{(9)\quad  \omega(t)=0\ \Rightarrow\ \dot{E}=-c\,\omega^2(t)=0\quad (\forall \theta(t)) }

ですが、これはEx^*=0は漸近安定性を保証するためのリャプノフ関数とはならないことを示しています。しかし、実際は漸近安定なので、ほかにリャプノフ関数の候補を探せる可能性があります。

例えば、エネルギーEの代わりに、つぎのリャプノフ関数の候補を考えます。

\displaystyle{(10)\quad  V(t)=\frac{1}{2} \left[\begin{array}{c} \theta(t) \\ \omega(t) \end{array}\right]^T \left[\begin{array}{cc} \frac{1}{2}\frac{c^2}{J} & \frac{1}{2}c \\ \frac{1}{2}c & J \end{array}\right] \left[\begin{array}{c} \theta(t) \\ \omega(t) \end{array}\right] +mg\ell(1-\cos\theta(t))>0 }

この時間微分を計算すると、(5)を用いて

\displaystyle{(11)\quad  \dot{V}(t)=-\frac{1}{2}\frac{3g}{4\ell}c\,\theta(t)\sin\theta(t) -\frac{1}{2}c\,\omega^2(t) }

となります。ここで

\displaystyle{(12)\quad  \theta(t)\sin\theta(t)>0\quad (|\theta(t)|<\pi,\theta(t)\ne0) }

だから、(11)は負値をとります。したがって、(10)はリャプノフ関数となっています。

[2]  リャプノフの安定定理を線形系

\displaystyle{(17)\quad \dot{x}(t)=Ax(t)\quad(x(t)\in{\bf R}^n)}

に適用して、漸近安定性を保証するリャプノフ関数を求めてみます。その候補として次を考えます。

\displaystyle{(18)\quad V(x)=x^T(t)Px(t)\quad(P>0)}

これを微分して(17)を用いると

\displaystyle{(19)\quad \begin{array}{l} \frac{d}{dt}V(x)=\dot{x}^T(t)Px(t)+x^T(t)P\dot{x}(t)\\ =x^T(t)A^TPx(t)+x^T(t)PAx(t)\\ =x^T(t)(A^TP+PA)x(t) \end{array} }

となります。したがって、線形行列不等式

\displaystyle{(20)\quad \boxed{{A^TP+PA<0\quad(P>0)}}}

が成り立てば、(2)と(4)が満足され、線形系(17)の漸近安定性が成り立つといえます。

●逆に、もし線形系(17)が漸近安定、すなわち

\displaystyle{(21)\quad x(t)=\exp(At)x(0)\rightarrow 0\quad(t\rightarrow \infty)}

であれば、線形行列不等式(20)を満たすP>0を次のように決めることができます。

\displaystyle{(22)\quad P=\int_0^\infty \exp(A^Tt)Q\exp(At)dt}

ここで、Q>0は任意です(ある条件下ではQ\ge0としてもよい)。実際

\displaystyle{(23)\quad \begin{array}{l} \displaystyle{A^T\int_0^\infty \exp(A^Tt)Q\exp(At)dt+\int_0^\infty \exp(A^Tt)Q\exp(At)dt\,A}\\ \displaystyle{=\int_0^\infty \frac{d}{dt}(\exp(A^Tt)Q\exp(At))\,dt}\\ \displaystyle{=\left[\exp(A^Tt)Q\exp(At)\right]_0^\infty=-Q<0} \end{array} }

となって(20)を満足します。また、任意のv\ne0に対して

(24)\quad \begin{array}{l} \displaystyle{v^TPv=\int_0^\infty v^T\exp(A^Tt)Q\exp(At)vdt}\\ \displaystyle{=\int_0^\infty ||Q^{1/2}\exp(At)v||dt\ge0} \end{array}

ですが、v^TPv=0とすると、Q^{1/2}\exp(At)v=0が得られ、これはv=0を意味し矛盾です。したがってv^TPv>0でなけれならず、P>0を得ます。以上から、線形行列不等式(20)が(17)の漸近安定性の必要十分条件になっています。

●(20)において、X=PY=P^{-1}とおくと、漸近安定性の等価な条件として次が得られます。

\displaystyle{(25)\quad \exists X>0: A^TX+XA<0}
\displaystyle{(26)\quad \exists Y>0: YA^T+PY<0}

本資料では同様な多くのLMIが登場しますが、(25)のタイプをX-LMI、(26)のタイプをY-LMIと呼びます。X-LMIは特性解析のために、Y-LMIはコントローラ設計(シンセシス)のために使い分けられます。

演習B02…Flipped Classroom
1^\circ 安定行列Aに対して、線形行列不等式(20)を満足する正定行列Pは、次のプログラムで計算できることを確かめよ。

MATLAB
%ana_lmi0.m
%-----
 A=[0 1;2 -3]; n=2; 
%-----
 setlmis([]); 
 X=lmivar(1,[n 1]); 
%-----
 lmi1=newlmi; 
 lmiterm([lmi1 1 1 X],1,A,'s'); %#1:X*A+A'*X 
%-----
 lmi2=newlmi; 
 lmiterm([-lmi2 1 1 X],1,1);    %#2:X 
%-----
 LMIs=getlmis;  
 [tmin,xfeas]=feasp(LMIs); 
 X=dec2mat(LMIs,xfeas,X) 
%-----
%eof

パラメータ変動システム

パラメータ変動システム…Homework

[1]  次図のような回転体の運動を考えます。

図1 パラメータ変動システムの例

これは次の運動方程式で表されます。

\displaystyle{(1)\quad \left\{\begin{array}{l} J_1\dot{\omega}_1(t)-\omega_2(t)\Omega(t)(J_2-J_3)=\tau_1(t) \\ J_2\dot{\omega}_2(t)-\omega_1(t)\Omega(t)(J_3-J_1)=\tau_2(t) \end{array}\right. }

ここで、次のパラメータ変動を想定します。

\displaystyle{(2)\quad \Omega_{min}<\Omega(t)<\Omega_{max} }

次の状態方程式を得ます。

\displaystyle{(3) \underbrace{ \left[\begin{array}{c} \dot{\omega}_1(t) \\ \dot{\omega}_2(t) \end{array}\right] }_{\dot{x}(t)} = \underbrace{ \left[\begin{array}{cc} 0 & \Omega(t)\frac{J_2-J_3}{J_1} \\ \Omega(t)\frac{J_3-J_1}{J_2} & 0 \end{array}\right] }_{A(\Omega(t))} \underbrace{ \left[\begin{array}{c} \omega_1(t) \\ \omega_2(t) \end{array}\right] }_{x(t)} + \underbrace{ \left[\begin{array}{cc} \frac{1}{J_1} & 0 \\ 0 & \frac{1}{J_2} \end{array}\right] }_{B} \underbrace{ \left[\begin{array}{c} \tau_1(t) \\ \tau_2(t) \end{array}\right] }_{u(t)} }

●いま、\Omega_{min}=0,\Omega_{nom}=2\pi,\Omega_{max}=4\piとして

\displaystyle{(4)\quad \Omega(t)=\Omega_{nom}(1+\sin(2\pi t)) }

のようなパラメータ変動下での零入力応答をシミュレーションしてみます。

図2 パラメータ変動システムの応答シミュレーション例

もしパラメータ変動がない場合はきれいな正弦波となりますから、パラメータ変動がある場合はかなりの動特性の変動が表れています。

演習B01…Flipped Classroom
1^\circ 図2のグラフを描け。

MATLAB
%lspin.m
%-----
 clear all close all
 J1=1; J2=1; J3=0.5;
 OMnom=2*pi; OMmin=0*OMnom; OMmax=2*OMnom;
 sim("SPIN0")
%-----
 A1=[0 (J2-J3)/J1;(J3-J1)/J2 0];
 B=diag([1/J1 1/J2]); C=eye(2); D=zeros(2,2);
 S0=[zeros(2,2) B;C D];
 S1=zeros(4,4); S1(1:2,1:2)=A1;
 sim("SPIN")
%-----
%eof

図3 SPIN0.slx

Note B01 パラメータ変動システムの応答シミュレーション

このSimulinkブロック線図は

\displaystyle{(1)\quad \left\{\begin{array}{ll} \dot{x}(t)=-(1+\sin\omega t)x(t)+u(t)\\ y(t)=x(t) \end{array}\right. }

を次式のように書き換えて、Productを利用したものです。

\displaystyle{(2) \left[\begin{array}{c} \dot{x}(t) \\ y(t) \end{array}\right] = ((1+\sin\omega t)\left[\begin{array}{cc} -1 & 0\\ 0 & 0 \end{array}\right] + \left[\begin{array}{cc} 0 & 1\\ 1 & 0 \end{array}\right]) \left[\begin{array}{c} x(t) \\ u(t) \end{array}\right] }

それでは演習B01のSPIN.slxはどのように構成すればよいでしょうか?

3Dアニメーション

[0] 3Dアニメーションの対象として、次の単振り子を考えます。


図1 単振り子

この運動方程式は

\displaystyle{(1)\quad m\ddot{r}=\underbrace{-mg\sin\theta}_f\quad(r=\ell\theta) }

すなわち

\displaystyle{(2)\quad \ddot{\theta}=-\frac{g}{\ell}\sin\theta }

となります。

[1] Simulink 3D Animationを使って、単振り子の3Dアニメーションを作成します。これはたとえば図2のように作成されます。


図2 単振り子アニメーションのためのSimulink図

ここで、下半分は非線形運動方程式(2)をブロック線図で表したものです。ブロックVR Sinkを開くと、図3の単振り子が運動する仮想空間(VR図)が現れます。


図3 単振り子のVR図

設定のタブをクリックすると図4の画面が現れます。


図4 単振り子のVR Sink設定

ここで、VR図を描くX3Dプログラムとして、vrpend.x3dが指定されていることがわかります。また、VR図は2つの要素(pendulum, ground)と2つの視点(view1, view2)から成ります。pendulumのところのrotationにチェックを入れていることに注意してください。これにより、VR Sinkへの入力信号(回転軸を表す3次元ベクトル、回転角を表すスカラー)の受け入れを行うことができます。回転軸は[0;0;1]となっています。

図3において座標軸の設定は図5のようになっています。左右方向がx軸、上下方向がy軸、画面の貫通方向がz軸です。回転軸を[0;0;1]で指定するとz軸まわりの回転を意味します。


図5 Simulink 3D Animationにおける座標軸

それでは以下に示されるvrpend.x3dについて詳しく見ていきます。

X3D
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" 
"http://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive' version='3.3' 
xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' 
xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.3.xsd'>
<head>
</head>
<Scene>

<Transform DEF='pendulum'  translation='0 0.6 0' center='0 0.5 0'>
  <Shape>
    <Appearance>
      <Material>
      </Material>
    </Appearance>
    <Box size='0.02 1 0.02'>
    </Box>
  </Shape>
  <Viewpoint 
       DEF = 'view2' 
       description = 'inside view' 
       position = '0 0 0'
       orientation = '0 1 0 1.57'> 
  </Viewpoint>
</Transform>

<Transform DEF='ground' >
  <Shape>
    <Appearance>
      <Material diffuseColor = '1.0 0.0 0.0'>
      </Material>
    </Appearance>
    <Box size='2 0.01 2'>
    </Box>
  </Shape>
</Transform>

<Viewpoint 
       DEF = 'view1' 
       description = 'outside view' 
       position = '0 0 0'
       orientation = '1 0 0 -0.5236'>      
</Viewpoint>

</Scene>
</X3D>

プログラム vrpend.x3d

DEF=’pendulum’の部分について
これは振り子を描く部分で、<Box size=’0.02 1 0.02’></Box>によって、断面が2cm平方、長さが1mのボックス(直方体)として描いています。このボックスの重心を平行移動、または重心を通る軸まわりに回転させることができます。画面には原点があって、何も指定しなければここにボックスの重心が合わせられます。しかし、回転軸は振り子の端点とし、これを110cmのところに固定したいので、translation=’0 0.6 0′で全体を原点から60cm浮かせ、center=’0 0.5 0′で重心を50cmシフトさせています。x-y平面内で回転面することになります。


図6 translationとcenter

DEF=’ground’の部分について
これは床を描く部分で、<Box size=’2 0.01 2’></Box>によって、2m平方、厚さ1cmのボックス(直方体)として描いています。

DEF = ‘view1’の部分について
これは振り子の運動を外から観察するために視点の設定をしています。orientation=’1 0 0 -0.5236′により、回転面をx軸回りに30度傾けて見ることになります。ちなみにDEF=’pendulum’の部分においても視点が設定されています。これはちょうどブランコに乗って景色を見ていることに相当します。orientation=’0 1 0 1.57′により、視点の方向を回転面内に入れています。

[2] VRエディタvreditを用いたvrpend.x3dの作成法について述べます。

まず振り子の生成を行います。

●次図のようにメニューを辿って、ROOT の下に、Transform を生成します。

●次図のようにEdit Nameを選択して、名前を pendulum に設定します。

●次図のようにメニューを辿って、children の下に、Shape を生成します。

●次図のようにメニューを辿って、Shape の下に、Appearance を生成します。

●次図のようにメニューを辿って、Appearance の下に、Material を生成します。

●次図のようにメニューを辿って、geometry の下に、Box を生成します。

●次図のように、Box サイズを指定します。

●次図のようにメニューを辿って、内部視点 view2(inside-view) を生成します。

同様にして、床の生成外部視点 view1(outside-view) の生成を行います。

特異値分解

特異値分解(Singular-Value Decomposition)

Aをサイズm\times nの行列({\rm rank}\,A=k)とします。このとき、サイズm\times mの直交行列Uとサイズn\times nの直交行列Vが存在して

\displaystyle{(1)\quad A=U\Sigma V^T }

が成り立ちます。ここで、サイズm\times nの行列\Sigmaは次を満たします。

\displaystyle{(2.1)\quad \Sigma= \left[\begin{array}{cc} \Sigma_1(k\times k) & 0\,(k\times n-k)\\ 0\,(m-k\times k) & 0\,(m-k\times n-k) \end{array}\right] }

\displaystyle{(2.2)\quad \Sigma_1={\rm diag}\{\sigma_1,\cdots,\sigma_k\}\quad(\sigma_1\ge\cdots\ge\sigma_k>0) }

A^TA\ge 0だから、仮定{\rm rank}\,A=kより、A^TAk個の正固有値とn-k個の零固有値をもち、互いに直交する固有ベクトルをもちます。そこで、A^TAの固有値の正の平方根を、大きい順に、\sigma_1\ge\cdots\ge\sigma_k>\sigma_{k+1}=\cdots=\sigma_{n}=0のように表し、対応する固有ベクトルv_1,\cdots,v_nv_i^Tv_i=1\ (i=j),\ 0\ (i\ne j)を満足するようにとることができます。いま、\Sigma_1を上のように、また

\displaystyle{(3)\quad V= [\begin{array}{cc} V_1 & V_2 \end{array}] = [\begin{array}{ccc|ccc} v_1 & \cdots & v_k & v_{k+1}& \cdots & v_n \end{array}] }

とおくと、Vは直交行列となり、つぎが成り立ちます。

\displaystyle{(4)\quad \begin{array}{l} A^TAV_1=V_1\Sigma_1^2\\ A^TAV_2=0 \end{array} }

第2式の左から、V_2^Tをかけて

\displaystyle{(5)\quad V_2^TA^TAV_2=0\Rightarrow AV_2=0 }

また、U_1=AV_1\Sigma_1^{-1}とおくと、第1式からU_1^TU_1=I_{k}を得ます。そこで、U_2U= [\begin{array}{cc} U_1 & U_2 \end{array}]が直交行列となるように選ぶと

\displaystyle{(6)\quad U^TAV= \left[\begin{array}{cc} U_1^TAV_1 & U_1^TAV_2\\ U_2^TAV_1 & U_2^TAV_2 \end{array}\right] = \left[\begin{array}{cc} \Sigma_1 & 0\\ U_2^TU_1\Sigma_1 & 0 \end{array}\right] =\Sigma }

が成り立ちます。

●行列A= \left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 1 \end{array}\right]の特異値分解は

\displaystyle{(7)\quad A= \underbrace{ \left[\begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array}\right] }_{U} \underbrace{ \left[\begin{array}{ccc} \sqrt{2} & 0 & 0 \\ 0 & 1 & 0 \end{array}\right] }_{\Sigma} \underbrace{ \left[\begin{array}{ccc} 0 & 1 & 0 \\ \frac{1}{\sqrt{2}} & 0 & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & 0 & \frac{1}{\sqrt{2}} \end{array}\right]^T }_{V^T} }

のように与えられることを確かめます。

A^TAのサイズは3\times 3ですが、AA^Tのサイズは2\times 2であるので、AA^Tを計算すると\left[\begin{array}{cc} 1 & 0 \\ 0 & 2 \end{array}\right]となります(サイズm\times nの行列Aの特異値を手計算で求めるには、A^TAAA^Tのが同じ非零固有値をもつことから、サイズの小さいほうの固有値計算を行えばよい)。これから、AA^Tの固有値は1,2で、その正の平方根1,\sqrt{2}が特異値で、上の\Sigma_1の対角成分の特異値は大きい順に並べる約束ですから

\displaystyle{(8)\quad \underbrace{ \left[\begin{array}{cc} 1 & 0 \\ 0 & 2 \end{array}\right] }_{AA^T} \underbrace{ \left[\begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array}\right] }_{U} = \underbrace{ \left[\begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array}\right] }_{U} \underbrace{ \left[\begin{array}{cc} 2 & 0 \\ 0 & 1 \end{array}\right] }_{\Sigma_1^2} }

のように、U\Sigma_1が決まります。つぎに、Vについては、視察によって

\displaystyle{(9)\quad \underbrace{ \left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 1 \\ 0 & 1 & 1 \end{array}\right] }_{A^TA} \underbrace{ \left[\begin{array}{ccc} 0 & 1 & 0 \\ x & 0 & -y \\ y & 0 & x \end{array}\right] }_{V} = \underbrace{ \left[\begin{array}{ccc} 0 & 1 & 0 \\ x & 0 & -y \\ y & 0 & x \end{array}\right] }_{V} \underbrace{ \left[\begin{array}{ccc} 2 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{array}\right] }_{{\rm diag}\{\Sigma_1^2,0\}} }

とします。ここで、\left[\begin{array}{ccc}x \\y \end{array}\right]\left[\begin{array}{ccc}-y \\x \end{array}\right]が直交しており、x^2+y^2=1の制約があります。上式からx=yが出て、x=y=\frac{1}{\sqrt{2}}と定まります。

行列のノルム

x\in{\rm\bf R}^nからy\in{\rm\bf R}^mへの写像y=Axの「伝達特性」をどう測るかを考えます。これはスカラの場合は正比例の関係y=axですから、比例定数aに相当する量を求める話になります。

サイズm\times nの行列Aの次の特異値分解を考えます。

\displaystyle{(1)\quad \begin{array}{l} A= \underbrace{ \left[\begin{array}{cc} U_1 & U_2 \end{array}\right] }_{U(m\times m)} \underbrace{ \left[\begin{array}{cc} {\rm diag}\{\sigma_1,\cdots,\sigma_k\} & 0_{k\times (n-k)} \\ 0_{(m-k)\times k} & 0_{(m-k)\times (n-k)} \end{array}\right] }_{\Sigma= \left[\begin{array}{cc} \Sigma_1 & 0 \\ 0 & 0 \end{array}\right] \quad(\sigma_1\ge\cdots\ge\sigma_k) } \underbrace{ \left[\begin{array}{cc} V_1^T \\ V_2^T \end{array}\right] }_{V(n\times n)^T}\\ =U_1(m\times k)\Sigma_1(k\times k)V_1(n\times k)^T \end{array} }

ここで、k={\rm rank}Aで、UVは直交行列です。

\displaystyle{(2)\quad UU^T=U^TU=I_m,\quad VV^T=V^TV=I_n }

したがって、次のような3つの線形写像に分解されます。

n次元ベクトルx\in{\rm\bf R}^nのノルムとして、次の3通りが知られています。

\displaystyle{(3)\quad \left\{\begin{array}{lll} ||x||_1=|x_1|+\cdots+|x_n|&\\ ||x||_2=\sqrt{x_1^2+\cdots+x_n^2}&\Rightarrow&||x||_2^2=x^Tx\\ ||x||_\infty=\max\{|x_1|,\cdots,|x_n|\}& \end{array}\right. }

以下では、ベクトルのノルムとして、2番目の2ノルムを考えます。

このとき、次が成り立ちます。

\displaystyle{(4)\quad ||x'||_2^2=||Vx||_2^2=x^TV^TVx=x^Tx=||x||_2^2\ \Rightarrow\ \frac{||x'||_2}{||x||_2}=1 }

\displaystyle{(5)\quad \begin{array}{l} ||y'||_2^2=||\Sigma x'||_2^2=\sigma_1^2x_1'\,^2+\cdots+\sigma_k^2x_k'\,^2+0x_{n+1}'\,^2+\cdots+0x_n'\,^2\\ \le \sigma_1^2(x_1'\,^2+\cdots+x_n'\,^2)=\sigma_1^2x'\,^Tx'=\sigma_1^2||x'||_2^2 \ \Rightarrow\ \frac{||y'||_2}{||x'||_2}\le\sigma_1 \end{array} }

\displaystyle{(6)\quad ||y||_2^2=||Uy'||_2^2=y'\,^TU^TUy'=y'\,^Ty'=||y'||_2^2\ \Rightarrow\ \frac{||y||_2}{||y'||_2}=1 }

すなわち

\displaystyle{(7)\quad \frac{||x'||_2}{||x||_2}\times\frac{||y'||_2}{||x'||_2}\times\frac{||y||_2}{||y'||_2}\le\sigma_1 \ \Rightarrow\ \frac{||y||_2}{||x||_2}=\frac{||Ax||_2}{||x||_2}\le\sigma_1 }

したがって、線形写像y=Axの伝達特性は、行列Aの2ノルム

\displaystyle{(8)\quad ||A||_2=\max_{x\ne 0}\frac{||Ax||_2}{||x||_2}=\sigma_1(A) }

すなわち行列Aの最大特異値\sigma_1(A)(行列A^TAまたはAA^Tの最大固有値の正の平方根)によって表されます。

●行列のノルムについて次式が成り立ちます。

\displaystyle{(9)\quad \begin{array}{l} ||A+B||\le ||A||+||B||\\ ||AB||\le ||A|| ||B|| \end{array}  }

(8)より

\displaystyle{(10)\quad \frac{||Ax||}{||x||} \le ||A||\ \Rightarrow\ ||Ax|| \le ||A||||x|| }

に注意して

\displaystyle{(11)\quad \begin{array}{l} ||(A+B)x||=||Ax||+||Bx||\ \le (||A||+||B||)||x||\\ \Rightarrow\ ||(A+B)|| \le ||A||+||B||\\ ||ABx||\le ||A||||Bx||\ \le ||A||||B||||x||\ \Rightarrow\ ||AB|| \le ||A||||B|| \end{array} }

●一方、ベクトルの2ノルムについて次式が成り立ちます。

\displaystyle{(12)\quad \begin{array}{l} ||a+b||\le ||a||+||b||\\ |a^Tb|\le ||a|| ||b|| \end{array}  }

これらは(9)の特別な場合と考えられますが、ここでは直接導出してみます。

いま、xに関する2次方程式

(13)\quad \begin{array}{l} \displaystyle{\sum_{i=1}^n(a_ix-b_i)^2=\sum_{i=1}^n(a_i^2x^2-2a_ib_ix+b_i^2)}\\ \displaystyle{=(\sum_{i=1}^na_i^2)x^2-2(\sum_{i=1}^na_ib_i)x+(\sum_{i=1}^nb_i^2)=0} \end{array}

を考えると、この実数解は1個または0個となることから、この判別式は零または負でなければならないので

\displaystyle{(14)\quad D=\underbrace{(\sum_{i=1}^na_ib_i)^2}_{(a^Tb)^2}-\underbrace{(\sum_{i=1}^na_i^2)}_{a^Ta}\underbrace{(\sum_{i=1}^nb_i^2)}_{b^Tb}\le 0 }

より

\displaystyle{(15)\quad (a^Tb)^2 \le a^Ta b^Tb \Leftrightarrow |a^Tb|\le||a||||b|| }

すなわち(12)の第2式が得られます。また、第1式は、次式から得られます。

\displaystyle{(16)\quad \begin{array}{l} (\sqrt{a^Ta}+\sqrt{b^Tb})^2-(a+b)^T(a+b)\\ =a^Ta+2\sqrt{a^Ta}\sqrt{b^Tb}+b^Tb-(a^Ta+2a^Tb+b^Tb)\\ =2(\sqrt{a^Ta}\sqrt{b^Tb}-a^Tb) \ge 2(|a^Tb|-a^Tb) >0 \end{array}  }

●ちなみに、行列のフロベニウスノルムは

\displaystyle{(17)\quad ||A||_F^2={\rm tr}A^TA=\sum_{i=1}^m\sum_{j=1}^n a_{ij}^2 }

で定義されます。これは

\displaystyle{(18)\quad ||A||_F^2={\rm tr}V\Sigma U^TU\Sigma V^T=\sum_{i=1}^{\min\{n,m\}}\sigma_{i}^2 }

と表せるので、次式が成り立ちます。

\displaystyle{(19)\quad \underbrace{\sigma_1^2}_{||A||^2} \le \underbrace{\sum_{i=1}^{\min\{n,m\}}\sigma_{i}^2}_{||A||_F^2} \le \min\{n,m\}\underbrace{\sigma_1^2}_{||A||^2}\ \Rightarrow\ ||A|| \le ||A||_F  \le \sqrt{\min\{n,m\}}||A|| }

行列積のフロベニウスノルムについても

\displaystyle{(20)\quad \begin{array}{l} \displaystyle{||AB||_F^2=\sum_{j=1}^{n}\sum_{i=1}^{m}(\sum_{k=1}^{\ell}a_{ik}b_{kj})^2} \displaystyle{\le \sum_{j=1}^{n}\sum_{i=1}^{m} (\sum_{k=1}^{\ell}a^2_{ik}\sum_{k=1}^{\ell}b_{kj}^2)}\\ \displaystyle{=(\sum_{i=1}^{m}\sum_{k=1}^{\ell}a^2_{ik}) (\sum_{k=1}^{\ell}\sum_{j=1}^{n}b_{kj}^2)} \displaystyle{=||A||_F^2||B||_F^2} \end{array}  }

が成り立ちます。

連立1次方程式

次の線形方程式(連立1次方程式)を考えます。

\displaystyle{(1)\quad Ax=b\quad(A\in{\bf R}^{n\times m}, x\in\bf R}^m, b\in\bf R}^n) }

ここで、Aはフルランク({\rm rank}A=\min\{n,m\})とします。

1^\circ n\le mの場合(未知数の数が方程式の数より大きい場合)、(1)はunder-determined(劣決定)と呼ばれ、Aの特異値分解を代入して次のように書けます。

\displaystyle{(2)\quad \begin{array}{l} \underbrace{U\left[\begin{array}{cc} \Sigma_1 & 0_{n\times m-n} \end{array}\right] \left[\begin{array}{c} V_1^H\\ V_2^H \end{array}\right]}_{A}x =U\Sigma_1V_1^Hx=b\\ \Sigma_1={\rm diag}\{\sigma_1,\cdots,\sigma_n\} \end{array} }

(2)の解候補として

\displaystyle{(3)\quad x=V_1\Sigma_1^{-1} U^Hb+V_2c\quad(c\in{\bf R}^{n\times m-n}) }

を考えます。V_1^HV_2=0_{n\times m-n}より第1項と第2項は直交することから

\displaystyle{(4)\quad ||x||^2=||V_1\Sigma_1^{-1} U^Hb||^2+||V_2c||^2 }

(3)においてc=0として得られるx=V_1\Sigma_1^\dagger U^Hbは、||x||を最小化する最小ノルム解と呼ばれます。

2^\circ n\ge mの場合(未知数の数が方程式の数より小さい場合)、(1)はover-determined(過決定)と呼ばれ、Aの特異値分解を代入して次のように書けます。

\displaystyle{(5)\quad \begin{array}{l} \underbrace{\left[\begin{array}{cc} U_1 & U_2 \end{array}\right] \left[\begin{array}{cc} \Sigma_1 \\ 0_{n-m\times m}  \end{array}\right]V^H}_{A}x =U_1\Sigma_1V^Hx=b\\ \Sigma_1={\rm diag}\{\sigma_1,\cdots,\sigma_m\} \end{array} }

(5)の解候補として

\displaystyle{(6)\quad x=V\Sigma_1^{-1} U_1^Hb }

を考えます。b=(b-Ax)+Axにおいて、

\displaystyle{(7)\quad \begin{array}{l} b=(b-Ax)+Ax\\ =(I-U_1\Sigma_1V^HV\Sigma_1^{-1} U_1^H)b+U_1\Sigma_1V^HV\Sigma_1^{-1} U_1^Hb\\ =U_2 U_2^Hb+U_1 U_1^Hb \end{array} }

ここで、U_2^HU_1=0_{m\times n-m}より第1項と第2項は直交することから

\displaystyle{(8)\quad ||b||^2=||b-Ax||^2+||Ax||^2 }

(6)は||b-Ax||^2を最小化する最小2乗解と呼ばれます。

行列指数関数

定義

n次正方行列Xの行列指数関数
\displaystyle{ \exp(X)=I_n+X+\frac{1}{2}X^2+\cdots+\frac{1}{k!}X^k+\cdots }

●諸性質
\displaystyle{1^{\circ}\ \exp(0)=I_n}
\displaystyle{2^{\circ}\ (\exp(X))^T=\exp(X^T)}
\displaystyle{3^{\circ}\ X=V\Lambda V^{-1}\ \Rightarrow \ \exp(X)=V\exp(\Lambda)V^{-1}}
\displaystyle{4^{\circ}\ XY=YX\ \Rightarrow \ \exp(X+Y)=\exp(X)\exp(Y)}
\displaystyle{5^{\circ}\ (\exp(X))^{-1}=\exp(-X)}
\displaystyle{6^{\circ}\ \frac{d}{dt}\exp(At)=A\exp(At)=\exp(At)A }
\displaystyle{7^{\circ}\ \det A\ne 0\ \Rightarrow \ \int \exp(At) dt=A^{-1}\exp(At)=\exp(At)A^{-1} }

1^\circ2^\circは自明でしょう。

3^\circは一般項が次式となるためです。

\displaystyle{\frac{1}{k!}X^k=\frac{1}{k!}(V\Lambda V^{-1})^k=\frac{1}{k!}V\Lambda^kV^{-1}}

注意すべきは、4^\circで、指数法則は可換な行列に対してのみ成立することです。これは

\displaystyle{{\rm RHS}=(I_n+X+\frac{1}{2}X^2+\cdots)(I_n+Y+\frac{1}{2}Y^2+\cdots)}
\displaystyle{=I_n+X+Y+\frac{1}{2}X^2+XY+\frac{1}{2}Y^2+\cdots}
\displaystyle{=I_n+X+Y+\frac{1}{2}(X^2+2XY+Y^2)+\cdots}

\displaystyle{I_n+X+Y+\frac{1}{2}(X^2+XY+YX+Y^2)+\cdots}
\displaystyle{=I_n+X+Y+\frac{1}{2}(X+Y)^2+\cdots={\rm LHS}}

と等しくなるためにはXYが可換(XY=YX)でなければならないからです。

5^\circ4^\circY=-Xとおけば出ます。

6^\circは一般項が

\displaystyle{\frac{d}{dt}\frac{1}{k!}(At)^k=A\frac{1}{(k-1)!}(At)^{k-1}=\frac{1}{(k-1)!}(At)^{k-1}A}

となることから出ます。

7^\circ6^\circの両辺を積分して

\displaystyle{\exp(At)=A\int\exp(At)dt=\int\exp(At)dtA }

となることから出ます。

2次の行列指数関数

n=2の場合、Aの実Jordan標準形\Lambdaは次の3つに分類されます。

\displaystyle{1^{\circ}\ \lambda(A)=\{\lambda_1,\lambda_2\} \ \Rightarrow\ \Lambda_1=\left[\begin{array}{cc} \lambda_1 & 0 \\ 0 & \lambda_2 \end{array}\right]}
\displaystyle{2^{\circ}\ \lambda(A)=\{\lambda_R\pm j\lambda_I\} \ \Rightarrow\ \Lambda_2=\left[\begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array}\right]}
\displaystyle{3^{\circ}\ \lambda(A)=\{\lambda,\lambda\} \ \Rightarrow\ \Lambda_3=\left[\begin{array}{cc} \lambda & 1 \\ 0 & \lambda \end{array}\right]}

このときの行列指数関数は次式で与えられます。

\displaystyle{1^{\circ}\quad \exp(\Lambda_1 t)= \left[\begin{array}{cc} e^{\lambda_1t} & 0 \\ 0 & e^{\lambda_2 t} \end{array}\right] }
\displaystyle{2^{\circ}\quad \exp(\Lambda_2 t)=e^{\lambda_R t} \left[\begin{array}{cc} \cos(\lambda_It) & \sin(\lambda_It) \\ -\sin(\lambda_It)  & \cos(\lambda_It) \end{array}\right] }
\displaystyle{3^{\circ}\quad \exp(\Lambda_3 t)=e^{\lambda t} \left[\begin{array}{cc} 1 & t \\ 0 & 1 \end{array}\right] }

2^\circは、次式において、XYが可換であることから出ます。

\displaystyle{ \left[\begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array}\right]= \underbrace{\lambda_RI_2}_{X}+ \underbrace{\lambda_I \left[\begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array}\right]}_{Y} }

3^\circは、次式において、XYが可換であることから出ます。

\displaystyle{ \left[\begin{array}{cc} \lambda & 1 \\ 0 & \lambda \end{array}\right]= \underbrace{\lambda I_2}_{X}+ \underbrace{ \left[\begin{array}{cc} 0 & 1 \\ 0 & 0 \end{array}\right]}_{Y} }

3次の行列指数関数

n=3の場合、Aの実Jordan標準形\Lambdaは次の4つに分類されます。

\displaystyle{1^{\circ}\ \lambda(A)=\{\lambda_1,\lambda_2,\lambda_3\} \ \Rightarrow\ \Lambda_1=\left[\begin{array}{ccc} \lambda_1 & 0 & 0\\ 0 & \lambda_2 & 0\\ 0 & 0 & \lambda_3 \end{array}\right]}
\displaystyle{2^{\circ}\ \lambda(A)=\{\lambda_R\pm j\lambda_I,\lambda\} \ \Rightarrow\ \Lambda_2=\left[\begin{array}{ccc} \lambda_R & \lambda_I & 0 \\ -\lambda_I & \lambda_R & 0 \\ 0 & 0 & \lambda \end{array}\right]}
\displaystyle{3^{\circ}\ \lambda(A)=\{\lambda,\lambda,\lambda\} \ \Rightarrow\ \Lambda_3=\left[\begin{array}{ccc} \lambda & 1 & 0\\ 0 & \lambda & 1\\ 0 & 0 & \lambda \end{array}\right]}
\displaystyle{4^{\circ}\ \lambda(A)=\{\lambda,\lambda,\lambda'\} \ \Rightarrow\ \Lambda_4=\left[\begin{array}{ccc} \lambda & 1 & 0\\ 0 & \lambda & 0\\ 0 & 0 & \lambda' \end{array}\right]}

このときの行列指数関数は次式で与えられます。

\displaystyle{1^{\circ}\quad \exp(\Lambda_1 t)= \left[\begin{array}{ccc} e^{\lambda_1t} & 0 & 0\\ 0 & e^{\lambda_2 t} & 0\\ 0 & 0 & e^{\lambda_3 t} \end{array}\right] }
\displaystyle{2^{\circ}\quad \exp(\Lambda_2 t)= \left[\begin{array}{ccc} e^{\lambda_R t}\cos(\lambda_It) & e^{\lambda_R t}\sin(\lambda_It) & 0\\ -e^{\lambda_R t}\sin(\lambda_It)  & e^{\lambda_R t}\cos(\lambda_It) & 0\\ 0 & 0 & e^{\lambda t} \end{array}\right] }
\displaystyle{3^{\circ}\quad \exp(\Lambda_3 t)=e^{\lambda t} \left[\begin{array}{ccc} 1 & t & \frac{t^2}{2} \\ 0 & 1 & t \\ 0 & 0 & 1 \\ \end{array}\right] }
\displaystyle{4^{\circ}\quad \exp(\Lambda_4 t)= \left[\begin{array}{ccc} e^{\lambda t} & te^{\lambda t} & 0\\ 0 & e^{\lambda t} & 0\\ 0 & 0 & e^{\lambda t} \end{array}\right] }

一般の行列指数関数

●一般の場合、Aの実Jordan標準形\Lambda

\Lambda= {\rm diag}\{J(\lambda_1,m_1),\cdots,J(\lambda_p,m_p), K(\lambda_{R1},\lambda_{I1},\ell_1),\cdots,K(\lambda_{Rq},\lambda_{Iq},\ell_q)\}
m_1+\cdots+m_p+2(\ell_1+\cdots+\ell_q)=n

すなわち、次の2種類のジョルダン細胞のブロック対角行列となります(\lambda, \lambda_R, \lambda_I(\ne0)は実数)。

\displaystyle{1^{\circ}\quad J(\lambda,m)= \left[\begin{array}{cccc} \lambda & 1 & & \\ & \lambda & \ddots & \\ & & \ddots & 1 \\ & & & \lambda \end{array}\right]\in{\bf R}^{m\times m} }

\displaystyle{2^{\circ}\quad K(\lambda_{R},\lambda_{I},\ell)= \left[\begin{array}{c|c|cc|c} \begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array} & \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} & & \\ \hline & \begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array} & \ddots & & \\ \hline & & & & \\ \hline & & & \ddots & \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \\ \hline & & & & \begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array} \end{array}\right]\in{\bf R}^{2\ell\times 2\ell} }

このときの行列指数関数は次式で与えられます。

\displaystyle{1^{\circ}\quad \exp(J(\lambda,m)t)=e^{\lambda t} \left[\begin{array}{ccccc} 1 & t & \frac{t^2}{2} & \cdots & \frac{t^{m-1}}{(m-1)!} \\ & 1 & t & \ddots & \vdots \\ & & 1 & \ddots & \frac{t^2}{2} \\ & & & \ddots & t \\ & & & & 1 \end{array}\right] }

\displaystyle{2^{\circ}\quad \exp(K(\lambda_{R},\lambda_{I},\ell)t)= \exp(J(\lambda_R,\ell)t) \bigotimes e^{\lambda_R t} \left[\begin{array}{cc} \cos\lambda_It & \sin\lambda_It \\ -\sin\lambda_It & \cos\lambda_It \end{array}\right] }

1^\circは、次式において、XYが可換であることから出ます。

\displaystyle{ J(\lambda,m)= \underbrace{\lambda I_m}_{X}+ \underbrace{ \left[\begin{array}{cccc} 0 & 1 & & \\ & 0 & \ddots & \\ & & \ddots & 1 \\ & & & 0 \end{array}\right]}_{Y} }

2^\circは、まず次式のようなXYの和となります。

\displaystyle{ K(\lambda_{R},\lambda_{I},\ell)= \underbrace{\left[\begin{array}{cccc} \lambda_R & 1 & & \\ & \lambda_R & \ddots & \\ & & \ddots & 1 \\ & & & \lambda_R \end{array}\right] \otimes I_2 }_{X}+ \underbrace{I_\ell\otimes \lambda_I \left[\begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array}\right] }_{Y} }

ここでクロネッカ積に関する恒等式

\displaystyle{\underbrace{(A\otimes B)}_X\underbrace{(C\otimes D)}_Y=AC\otimes BD}

を用いると、ACが可換、BDが可換であれば、XYは可換となります(2^\circの場合、OKです)。また、次式が成り立つことが知られています。

\displaystyle{\exp(A\otimes I+I\otimes B)=\exp(A\otimes I)\exp(I\otimes B)=\exp(A)\otimes \exp(B)}

高次系の漸近安定性

●行列指数関数を用いると、微分方程式

\displaystyle{\underbrace{\frac{dx(t)}{dt}}_{\dot{x}(t)}=Ax(t)}

の解は次のように表されます。

\displaystyle{x(t)=\exp(At)x(0)=V\exp(\Lambda t)V^{-1}x(0)}

ここで

\begin{array}{ll} &\exp(At)=V\exp(\Lambda t)V^{-1}={\displaystyle \sum_{i=1}^p\sum_{k=1}^{m_i}t^{k-1}}e^{\lambda_it}\,R_{ik} \\ &+{\displaystyle \sum_{i=1}^q\sum_{k=1}^{\ell_i}t^{k-1}}e^{\lambda_{Ri}t}\cos\lambda_{Ii}t\,C_{ik} +{\displaystyle \sum_{i=1}^q\sum_{k=1}^{\ell_i}t^{k-1}}e^{\lambda_{Ri}t}\sin\lambda_{Ii}t\,S_{ik} \end{array}

と書けることに注意します(R_{ik},C_{ik},S_{ik}は適当なn次実正方行列)。

したがって、任意のx(0)\ne0に対して、t\rightarrow\inftyのときx(t)\rightarrow 0となるための条件は

\displaystyle{\exp(\Lambda t)\rightarrow 0\quad(t\rightarrow\infty)}

となります。これはAのすべての固有値の実部が負を意味します。

\dot{x}(t)=ax(t)a=1,0,0.5)の解のグラフを見ると、a=0の場合は、漸近安定ではないが、発散はしないので、不安定とまではいえないのではないかと思うかもしれません。したがって零の固有値を不安定とみなすのか、安定とみなすか迷うところです。しかし、\dot{x}(t)=Ax(t)において、A=\left[\begin{array}{cc} 0& 1\\ 0& 0 \end{array}\right]の場合、解はx(t)=\left[\begin{array}{cc} 1& t\\ 0& 1 \end{array}\right]x(0)となって、x(0)の第2要素が零でない場合は発散します。したがって、一般には零の固有値は不安定とみなします。

\dot{x}(t)=Ax(t)において、Aのすべての固有値の実部は負または零の場合を考えます。いま実部が零の固有値\lambda_iの代数的重複度をq_i\ge2とし、次が成り立つとします。

\displaystyle{{\rm rank}(A-\lambda_i I_n)=n-q_i}

これが任意のx(0)\ne0に対して、t\rightarrow\inftyのときx(t)=\exp(At)x(0)が発散しないための必要十分条件であることが知られています。

実Jordan標準形

固有値と固有ベクトル

●正方行列Aの固有値\lambdaと固有ベクトルv: Av=\lambda vを満足する\lambdav\ne0
例) \underbrace{ \left[\begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right] }_{A} \underbrace{ \left[\begin{array}{cc} v_{i1} \\ v_{i2} \end{array}\right] }_{v_i} = \lambda_i \underbrace{ \left[\begin{array}{cc} v_{i1} \\ v_{i2} \end{array}\right] }_{v_i}\quad(i=1,2)

Av=\lambda v\Leftrightarrow (A-\lambda I_n)v=0を満足するv\ne0が存在するためには \det(\lambda I_n-A)=0 が必要。

●正方行列Aの固有値の集合: \lambda(A)=\{\lambda_1,\cdots,\lambda_n\}=\{\lambda_i|\det(\lambda_i I_n-A)=0\}

●正方行列Aの固有ベクトルが1次独立ならば A=V\Lambda V^{-1}
例) \left\{\begin{array}{cc} Av_1=\lambda_1v_1\\ Av_2=\lambda_2v_2 \end{array}\right. \Leftrightarrow A \underbrace{ \left[\begin{array}{cc} v_1 & v_2 \end{array}\right] }_{V} = \underbrace{ \left[\begin{array}{cc} v_1 & v_2 \end{array}\right] }_{V} \underbrace{ \left[\begin{array}{cc} \lambda_1 & 0\\ 0 & \lambda_2 \end{array}\right] }_{\Lambda}

実ジョルダン標準形(高橋:微分方程式入門、東京大学出版会、pp.110-112, 1988)
n次正方実行列Aは、正則なn次正方実行列Vにより、\Lambda=V^{-1}AVがつぎの形式となるように変換できます。

\displaystyle{ \Lambda= {\rm diag}\{J(\lambda_1,m_1),\cdots,J(\lambda_p,m_p), K(\lambda_{R1},\lambda_{I1},\ell_1),\cdots,K(\lambda_{Rq},\lambda_{Iq},\ell_q)\} }

ただし、m_1+\cdots+m_p+2(\ell_1+\cdots+\ell_q)=n、および

\displaystyle{ J(\lambda,m)= \left[\begin{array}{cccc} \lambda & 1 & & \\ & \lambda & \ddots & \\ & & \ddots & 1 \\ & & & \lambda \end{array}\right] }

\displaystyle{ K(\lambda_{R},\lambda_{I},\ell)= \left[\begin{array}{c|c|cc|c} \begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array} & \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} & & \\ \hline & \begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array} & \ddots & & \\ \hline & & & & \\ \hline & & & \ddots & \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \\ \hline & & & & \begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array} \end{array}\right] }

ここで、J(\lambda,m)のサイズはm\times mK(\lambda_{R},\lambda_{I},\ell)のサイズは2\ell\times 2\ellです。また、\lambda,\,\lambda_R,\,\lambda_I(\ne0)は実数、指定されていない要素はすべて零です。

n=2の場合、\Lambdaは次の3つに分類されます。

\displaystyle{1^{\circ}\ \lambda(A)=\{\lambda_1,\lambda_2\} \ \Rightarrow\ \Lambda=\left[\begin{array}{cc} \lambda_1 & 0 \\ 0 & \lambda_2 \end{array}\right]}
\displaystyle{2^{\circ}\ \lambda(A)=\{\lambda_R\pm j\lambda_I\} \ \Rightarrow\ \Lambda=\left[\begin{array}{cc} \lambda_R & \lambda_I \\ -\lambda_I & \lambda_R \end{array}\right]}
\displaystyle{3^{\circ}\ \lambda(A)=\{\lambda,\lambda\} \ \Rightarrow\ \Lambda=\left[\begin{array}{cc} \lambda & 1 \\ 0 & \lambda \end{array}\right]}

n=3の場合、\Lambdaは次の4つに分類されます。

\displaystyle{1^{\circ}\ \lambda(A)=\{\lambda_1,\lambda_2,\lambda_3\} \ \Rightarrow\ \Lambda=\left[\begin{array}{ccc} \lambda_1 & 0 & 0\\ 0 & \lambda_2 & 0\\ 0 & 0 & \lambda_3 \end{array}\right]}
\displaystyle{2^{\circ}\ \lambda(A)=\{\lambda_R\pm j\lambda_I,\lambda\} \ \Rightarrow\ \Lambda=\left[\begin{array}{ccc} \lambda_R & \lambda_I & 0 \\ -\lambda_I & \lambda_R & 0 \\ 0 & 0 & \lambda \end{array}\right]}
\displaystyle{3^{\circ}\ \lambda(A)=\{\lambda,\lambda,\lambda\} \ \Rightarrow\ \Lambda=\left[\begin{array}{ccc} \lambda & 1 & 0\\ 0 & \lambda & 1\\ 0 & 0 & \lambda \end{array}\right]}
\displaystyle{4^{\circ}\ \lambda(A)=\{\lambda,\lambda,\lambda'\} \ \Rightarrow\ \Lambda=\left[\begin{array}{ccc} \lambda & 1 & 0\\ 0 & \lambda & 0\\ 0 & 0 & \lambda' \end{array}\right]}

対称行列の場合

●対称行列: Q=Q^T
例) \displaystyle{ Q=\left[\begin{array}{cc} q_1 & q_3 \\ q_3 & q_2 \end{array}\right] }

●対称行列の固有値は実数
例) \displaystyle{ \lambda_1=\frac{1}{2}(q_1+q_2+\sqrt{D}),\ \lambda_2=\frac{1}{2}(q_1+q_2-\sqrt{D}) }
\displaystyle{ D=(q_1-q_2)^2+4q_3^2>0 }

●対称行列の固有ベクトルは直交
例) \displaystyle{ Qv_i=\lambda_iv_i\quad(i=1,2) }
\displaystyle{ v_1=\left[\begin{array}{c} q_1-q_2+\sqrt{D} \\ 2q_3 \end{array}\right],\quad v_2=\left[\begin{array}{c} q_1-q_2-\sqrt{D} \\ 2q_3 \end{array}\right] }
\displaystyle{ v_1^Tv_2=(q_1-q_2)^2-(q_1-q_2)^2-4q_3^2+4q_3^2=0 }

●対称行列Qが正定行列
\displaystyle{ Q>0 \leftrightarrow \forall x\ne0:x^TQx>0 }
\displaystyle{ Q>0 \Leftrightarrow \lambda_1,\lambda_2>0 \Leftrightarrow q_1>0,q_1q_2-q_3^2>0 }

●対称行列Qが準正定行列
\displaystyle{ Q\ge0 \leftrightarrow \forall x\ne0:x^TQx\ge0 }
\displaystyle{ Q\ge0 \Leftrightarrow \lambda_1>0,\lambda_2=0 \Leftrightarrow q_1>0,q_1q_2-q_3^2=0 }

行列の記法

行列の記法

●実数の集合: {\rm\bf R}
●実ベクトル: x\in{\rm\bf R}^n
例) \underbrace{ \left[\begin{array}{cc} x_1\\ x_2 \end{array}\right] }_{x} \in{\rm\bf R}^2

●実行列: A\in{\rm\bf R}^{m\times n}
●サイズm\times nの行列: A(m\times n)
例1) A=\left[\begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{array}\right](fat)
例2) A=\left[\begin{array}{ccc} a_{11} & a_{12} \\ a_{21} & a_{22} \\ a_{31} & a_{32} \end{array}\right](tall)

●サイズm\times nの零行列: 0_{m\times n}
例) 0_{2\times 3}=\left[\begin{array}{ccc} 0 & 0 & 0 \\ 0 & 0 & 0 \end{array}\right]

n次の正方行列: A(n\times n)
例) A=\left[\begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right]

n次の単位行列: I_n
例) I_2:=\left[\begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}\right]

n次の対角行列
例) {\rm diag}\{d_1,d_2\}:=\left[\begin{array}{cc} d_{1} & 0 \\ 0 & d_{2} \end{array}\right]

以下では、次の行列ABを考えます。

A=\left[\begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right]B=\left[\begin{array}{cc} b_{11} & b_{12} \\ b_{21} & b_{22} \end{array}\right]

●行列の和と差
例) A\pm B=\left[\begin{array}{cc} a_{11}\pm b_{11} & a_{12}\pm b_{12} \\ a_{21}\pm b_{21} & a_{22}\pm b_{22} \end{array}\right]

●行列の積
例) AB=\left[\begin{array}{cc} a_{11}b_{11}+a_{12}b_{21} & a_{11}b_{12}+a_{12}b_{22} \\ a_{21}b_{11}+a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22} \end{array}\right]
●一般には、AB\ne BA

●行列のスカラ倍
例) \alpha A=\left[\begin{array}{cc} \alpha a_{11} & \alpha a_{12} \\ \alpha a_{21} & \alpha a_{22} \end{array}\right]

●正方行列のn
例) A^2=A A

●行列の転置: A^T
例) A^T=\left[\begin{array}{cc} a_{11} & a_{21} \\ a_{12} & a_{22} \end{array}\right]
(AB)^T=B^TA^T

●行列のクロネッカ積
例) A\bigotimes B = \left[\begin{array}{cc} a_{11}B & a_{12}B \\ a_{21}B & a_{22}B \end{array}\right]

●正方行列のトレース: {\rm tr} A
例) {\rm tr} A=a_{11}+a_{22}

●正方行列の行列式: \det A
例) \det A=a_{11}a_{22}-a_{12}a_{21}
\det(AB)=\det A\det B

●正則行列: \det A\ne0を満足する正方行列A
●特異行列: \det A=0を満足する正方行列A
●正則行列Aの逆行列: AX=XA=I_nを満足する正則行列X=A^{-1}
例) A^{-1}=\frac{1}{\det A} \left[\begin{array}{cc} a_{22} & -a_{12} \\ -a_{21} & a_{11} \end{array}\right]\ (\det A\ne0)
(AB)^{-1}=B^{-1}A^{-1}

行列の階数

not(P\Rightarrow Q)\quad \Leftrightarrow\quad {P\ and\ not(Q)}
P\Rightarrow Q\quad \Leftrightarrow\quad not(Q)\Rightarrow not(P)

●ベクトルv_1,v_2は線形独立(1次独立):
\alpha_1v_1+\alpha_2v_2=0 \Rightarrow \alpha_1=\alpha_2=0
●ベクトルv_1,v_2は線形独立でない(1次独立でない): \alpha_1v_1+\alpha_2v_2=0 \quad (\alpha_1\ne0\ or\ \alpha_2\ne0)

●行列Aの階数: {\rm rank} A
列(行)ベクトルのうち線形独立(1次独立)なベクトルの個数
例1) 横長(fat)行列が行フルランク(row full rank)
\displaystyle{{\rm rank}\left[\begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{array}\right] ={\rm rank}\left[\begin{array}{ccc} \left[\begin{array}{ccc} a_{11} & a_{12} & a_{13} \end{array}\right]\\ \left[\begin{array}{ccc} a_{21} & a_{22} & a_{23} \end{array}\right] \end{array}\right]}
例2) 縦長(tall)行列が行フルランク(column full rank)
\displaystyle{{\rm rank}\left[\begin{array}{ccc} a_{11} & a_{12} \\ a_{21} & a_{22} \\ a_{31} & a_{32} \end{array}\right] ={\rm rank}\left[\begin{array}{ccc} \left[\begin{array}{ccc} a_{11} \\ a_{21} \\ a_{31} \end{array}\right] \left[\begin{array}{ccc} a_{12} \\ a_{22} \\ a_{32} \end{array}\right] \end{array}\right]}

●線形方程式(連立1次方程式): A(n\times n)x(n\times 1)=b(n\times 1)
例) \left\{\begin{array}{cc} a_{11}x_1+a_{12}x_2=b_1 \\ a_{21}x_1+a_{22}x_2=b_2 \end{array}\right. \Leftrightarrow \underbrace{ \left[\begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right] }_{A} \underbrace{ \left[\begin{array}{cc} x_1 \\ x_2 \end{array}\right] }_{x} = \underbrace{ \left[\begin{array}{cc} b_1 \\ b_2 \end{array}\right] }_{b}
Aが正則行列のとき、Ax=bの解はx=A^{-1}bとして一意に定まります。

●命題1:\det A\ne0\Leftrightarrow {\rm rank}A=n\ (Ax=0 \Rightarrow x=0)
この対偶をとって
●命題2:\det A=0\Leftrightarrow {\rm rank}A<n\ (Ax=0, x\ne0)

命題1⇒は、次から明らかです。
\det A\ne0 \Rightarrow (Ax=0\Rightarrow x=A^{-1}0=0)\Rightarrow {\rm rank}A=n
命題1⇒の逆は、命題2⇒が次のように示されることから出ます。
\det A=0 \Rightarrow (Ax=0, x\ne0)\Rightarrow {\rm rank}A<n

●シルベスターの不等式(nAの列数=Bの行数)
{\rm rank}A+{\rm rank}B-n\le{\rm rank}AB\le{\rm min}\{{\rm rank}A,{\rm rank}B\}

SICE BP(3慣性系)

●原、千田、佐伯、野波:ロバスト制御のためのベンチマーク問題(I)
-3慣性系に対する位置制御・速度制御

●佐伯、千田、野波、原:ロバスト制御のためのベンチマーク問題(II)
-位置制御系の設計例

[1] 次図のような3慣性系を考えます。

これは次の運動方程式で表されます。

\displaystyle{(1) \begin{array}{l} \bullet j_1\ddot{\theta}_1(t)+d_1\dot{\theta}_1(t)=k_a(\theta_2(t)-\theta_1(t))+d_a(\dot{\theta}_2(t)-\dot{\theta}_1(t))+\tau(t)+\tau_{d1}\\ \bullet j_2\ddot{\theta}_2(t)+d_2\dot{\theta}_2(t)=-k_a(\theta_2(t)-\theta_1(t))-d_a(\dot{\theta}_2(t)-\dot{\theta}_1(t))\\+k_b(\theta_3(t)-\theta_2(t))+d_b(\dot{\theta}_3(t)-\dot{\theta}_2(t))+\tau_{d2}\\ \bullet j_3\ddot{\theta}_3(t)+d_3\dot{\theta}_3(t)=-k_b(\theta_3(t)-\theta_2(t))-d_b(\dot{\theta}_3(t)-\dot{\theta}_2(t))+\tau_{d3} \end{array} }

ここで、物理定数は次の値が想定されています。

物理定数 最小値 公称値 最大値
j_1 0.0009 0.001 0.0011
j_2 0.0009 0.001 0.0011
j_3 0.001 0.002 0.003
d_1 0.045 0.05 0.055
d_2 0.0009 0.001 0.0011
d_3 0.0014 0.007 0.035
d_a 0.0002 0.001 0.01
d_b 0.0009 0.001 0.0011
k_a 828 920 1012
k_b 72 80 88

●以下では、j_3,d_3,k_bの3つのパラメータ誤差を考慮して、回転体3に対してインパルス外乱が加わるときのシミュレーションを行ってみます。

図1

原論文にはさまざまな問題設定がなされていますが、ここでは、回転体3に対するインパルス外乱の下で、回転体3を速やかに整定させる制御系設計を検討します。ただし、操作入力には次の振幅制限

\displaystyle{(3)\quad \begin{array}{l} |u(t)|\le 3 \end{array} }

が課され、観測出力は回転体1の変位\theta_1(t)とします。

[2] 制御対象のLPVモデルを導出します。

\displaystyle{(4)\quad \begin{array}{l} \underbrace{ \left[\begin{array}{ccc} j_1 & 0 & 0\\ 0 & j_2 & 0\\ 0 & 0 & j_3 \end{array}\right] }_{J} \underbrace{ \left[\begin{array}{ccc} \ddot{\theta}_1(t)\\ \ddot{\theta}_2(t)\\ \ddot{\theta}_3(t) \end{array}\right] }_{\ddot{\xi}(t)} +\underbrace{ \left[\begin{array}{ccc} d_1+d_a & -d_a & 0\\ -d_a & d_2+d_a+d_b & -d_b\\ 0 & -d_b & d_3+d_b \end{array}\right] }_{D} \underbrace{ \left[\begin{array}{ccc} \dot{\theta}_1(t)\\ \dot{\theta}_2(t)\\ \dot{\theta}_3(t) \end{array}\right] }_{\dot{\xi}(t)}\\ +\underbrace{ \left[\begin{array}{ccc} k_a & -k_a & 0\\ -k_a & k_a+k_b & -k_b\\ 0 & -k_b & k_b \end{array}\right] }_{K} \underbrace{ \left[\begin{array}{ccc} {\theta}_1(t)\\ {\theta}_2(t)\\ {\theta}_3(t) \end{array}\right] }_{{\xi}(t)} = \underbrace{ \left[\begin{array}{ccc} 1\\ 0\\ 0 \end{array}\right] }_{E_{3\times1}}\tau(t) +\underbrace{ \left[\begin{array}{ccc} \tau_{d1}\\ \tau_{d2}\\ \tau_{d3} \end{array}\right] }_{\tau_{d}} \end{array} }

\displaystyle{(5)\quad \begin{array}{l} \left[\begin{array}{c} \dot{\xi}(t)\\ \ddot{\xi}(t) \end{array}\right] = \underbrace{ \left[\begin{array}{cccc} 0_{3\times3} & I_3\\ -J^{-1}K & -J^{-1}D \end{array}\right] }_{A(d_3/j_3,k_b/j_3)} \left[\begin{array}{c} {\xi}(t)\\ \dot{\xi}(t) \end{array}\right] + \left[\begin{array}{c} 0\\ J^{-1}E_{3\times1} \end{array}\right]\tau(t) + \left[\begin{array}{c} 0\\ J^{-1} \end{array}\right]\tau_d \end{array} }

\displaystyle{(6)\quad \begin{array}{l} J^{-1}D={ \left[\begin{array}{ccc} d_1/j_1+d_a/j_1 & -d_a/j_1 & 0\\ -d_a/j_2 & d_2/j_2+d_a/j_2+d_b/j_2 & -d_b/j_2\\ 0 & -d_b/j_3 & d_3/j_3+d_b/j_3 \end{array}\right]\\ =(d_1/j_1)D_1+(d_2/j_2)D_2+(d_3/j_3)D_3\\ +(d_a/j_1)D_4+(d_a/j_2)D_5+(d_b/j_2)D_6+(d_b/j_3)D_7\\ J^{-1}K= \left[\begin{array}{ccc} k_a/j_1 & -k_a/j_1 & 0\\ -k_a/j_2 & k_a/j_2+k_b/j_2 & -k_b/j_2\\ 0 & -k_b/j_3 & k_b/j_3 \end{array}\right]\\ =(k_a/j_1)K_1+(k_a/j_2)K_2+(k_b/j_2)K_3+(k_b/j_3)K_4\\ \end{array} }

\displaystyle{(6)\quad {\theta}_1(t)=\left[\begin{array}{cccc} E_{1\times 3} & 0_{1\times 3} \end{array}\right] \left[\begin{array}{c} {\xi}(t)\\ \dot{\xi}(t) \end{array}\right] }

ここで、\alpha_1\le\alpha\le\alpha_2\beta_1\le\beta\le\beta_2に対する次の内分式に注目します。

\displaystyle{(8)\quad \begin{array}{l} \left[\begin{array}{c} \alpha\\ \beta \end{array}\right]= \underbrace{\frac{\alpha_2-\alpha}{\alpha_2-\alpha_1}\frac{\beta_2-\beta}{\beta_2-\beta_1}}_{p_{11}(\alpha,\beta)}\left[\begin{array}{c} \alpha_1\\ \beta_1 \end{array}\right]+ \underbrace{\frac{\alpha_2-\alpha}{\alpha_2-\alpha_1}\frac{\beta-\beta_1}{\beta_2-\beta_1}}_{p_{12}(\alpha,\beta)}\left[\begin{array}{c} \alpha_1\\ \beta_2 \end{array}\right]\\+ \underbrace{\frac{\alpha-\alpha_1}{\alpha_2-\alpha_1}\frac{\beta_2-\beta}{\beta_2-\beta_1}}_{p_{21}(\alpha,\beta)}\left[\begin{array}{c} \alpha_2\\ \beta_1 \end{array}\right]+ \underbrace{\frac{\alpha-\alpha_1}{\alpha_2-\alpha_1}\frac{\beta-\beta_1}{\beta_2-\beta_1}}_{p_{22}(\alpha,\beta)}\left[\begin{array}{c} \alpha_2\\ \beta_2 \end{array}\right] \\ \end{array} }

\displaystyle{(9)\quad p_{11}(\alpha,\beta)+p_{12}(\alpha,\beta)+p_{21}(\alpha,\beta)+p_{22}(\alpha,\beta)=1 }

\alpha=d_3/j_3,\beta=k_b/j_3のとき上の状態方程式は、端点モデル

\displaystyle{(10)\quad \begin{array}{l} \dot{x}(t)=\underbrace{A(\alpha_1,\beta_1)}_{A_{11}}x(t)+Bu(t)\\ \dot{x}(t)=\underbrace{A(\alpha_1,\beta_2)}_{A_{12}}x(t)+Bu(t)\\ \dot{x}(t)=\underbrace{A(\alpha_2,\beta_1)}_{A_{21}}x(t)+Bu(t)\\ \dot{x}(t)=\underbrace{A(\alpha_2,\beta_2)}_{A_{22}}x(t)+Bu(t) \end{array} }

を、p_{11},p_{12},p_{12},p_{22}によって重み付けして、LPVモデル

\displaystyle{(11)\quad \dot{x}(t)=\underbrace{(p_{11}A_{11}+p_{12}A_{12}+p_{21}A_{21}+p_{22}A_{22})}_{A(\alpha,\beta)}x(t)+Bu(t) }

として表されます。

[3] 状態FB

図2

[3] 出力FB

図3

演習13.3…Flipped Classroom

1^\circ 図1

MATLAB
SCILAB

2^\circ 図2

MATLAB
SCILAB

3^\circ 図3

MATLAB
SCILAB