LPV制御(状態FB)

LPV制御(状態FB)…Homework

ここでは、主軸変動を伴う回転体の運動制御を例にとって、状態FB形式のGS制御について説明します。

[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)} }

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

\displaystyle{(4)\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{(5)\quad p_1(\Omega(t))+p_2(\Omega(t))=1 }

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

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

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

\displaystyle{(7)\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)モデルと呼びます。

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

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

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

\displaystyle{(9)\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)制御を考えます。この閉ループ系は次式で表されます。

\displaystyle{(10)\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) }

ここで、端点コントローラによる閉ループ系

\displaystyle{(11)\quad \dot{x}(t)=(A_1-BF_1)x(t),\  \dot{x}(t)=(A_2-BF_2)x(t) }

はそれぞれ漸近安定となるように設計しますが、閉ループ系の時変系としての安定性が保証されるかの検討が必要になります(Note B51参照)。

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

\displaystyle{(12)\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{(13)\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{(14)\quad P_{CL}: \left\{\begin{array}{l} \dot{x}(t)=\underbrace{(p_1(\Omega(t))(A_1-B_2F_1)+p_2(\Omega(t))(A_2-B_2F_2))}_{A_F(\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{(15)\quad \sup_{u_1\in{\cal L}_2}\frac{||y_1(t)||_2}{||u_1(t)||_2}<\gamma }

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

●そのために、各端点におけるH_\infty制御(状態フィードバック)を共通のリャプノフ関数をもつように解きます。その際コントローラの実装上の立場から、各端点において

\lambda(A_1-BF_1),\lambda(A_2-BF_2)\subset{\cal D}_1\cup{\cal D}_2\cup{\cal D}_3

の制約を課すことがあります。この問題は次のように定式化されます。

Minimize \gamma on Y,Z_1,Z_2 subject to

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

\displaystyle{(17)\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{(18)\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{(19)\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{(20)\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{(21)\quad F_1=Z_1Y^{-1}}
\displaystyle{(22)\quad F_2=Z_2Y^{-1}}

●この問題設定では

\displaystyle{(23)\quad \left[\begin{array}{ccc} Y(A_1-B_2F)^T+(A_1-B_2F)Y & B_1 & Y(C_1-D_{12}F)^T \\ B_1^T & -\gamma I & D_{11}^T \\ (C_1-D_{12}F)Y & D_{11} & -\gamma I \end{array}\right]<0 }
\displaystyle{(24)\quad \left[\begin{array}{ccc} Y(A_2-B_2F)^T+(A_2-B_2F)Y & B_1 & Y(C_1-D_{12}F)^T \\ B_1^T & -\gamma I & D_{11}^T \\ (C_1-D_{12}F)Y & D_{11} & -\gamma I \end{array}\right]<0 }

の共通解Y>0を求めています。X=Y^{-1}ととれば

\displaystyle{(25)\quad \left[\begin{array}{ccc} (A_1-BF_1)^TX+X(A_1-BF_1) & XB_1 & (C_1-D_{12}F)^T \\ B_1^TX_1 & -\gamma I & D_{11}^T \\ (C_1-D_{12}F) & D_{11} & -\gamma I \end{array}\right]<0 }
\displaystyle{(26)\quad \left[\begin{array}{ccc} (A_2-BF_2)^TX+X(A_2-BF_2) & XB_1 & (C_1-D_{12}F)^T \\ B_1^TX & -\gamma I & D_{11}^T \\ (C_1-D_{12}F) & D_{11} & -\gamma I \end{array}\right]<0 }

の共通解となっています。これにより、閉ループ系の時変系としての安定性が保証されます(Note B51参照)。

演習B51…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


図2 回転体の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


図3 回転体のH_\infty制御

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

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

Note B51 閉ループ系の時変系としての安定性

●次の時変自由系の漸近安定性を考えます。

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

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

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

を構成して

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

を示すことができれば、平衡状態は漸近安定となることが知られています。

●LPVモデル

\displaystyle{(4)\quad \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) }

において、A_1-BF_1A_2-BF_2を個別に安定行列としたとすると

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

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

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

が得られますが、閉ループ系(4)のリャプノフ関数を構成したことにはなりません。一方

\displaystyle{(9)\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{(10)\quad V(x(t))=x^T(t)Xx(t) }

に対して

\displaystyle{(11)\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} }

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

●LPVモデル

\displaystyle{(12)\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=Cx(t) \end{array}\right. }

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

\displaystyle{(13)\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{(14)\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{(15)\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{(16)\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] }

に注意して

\displaystyle{(17)\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{(18)\quad \underbrace{\frac{d}{dt}(x^TXx)}_{\dot{V}(x)} <\underbrace{\gamma^2 u^Tu-y^Ty}_{s(u,y)} }

が成り立ち

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

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

出力FB用LMI(H2制御)

出力FB用LMI(H2制御)…Homework

[1] n次系\dot{x}=Ax+Bu,\ y=CxH_2ノルムが\gammaより小となるためのLMI条件は、次の通りでした。

\displaystyle{(1)\quad \begin{array}{l} \displaystyle{{\rm tr} (CW_cC^T)<\gamma^2\quad(W_c=\int_0^\infty \exp(At)BB^T\exp(A^Tt)dt)}\\\\ \displaystyle{\Leftrightarrow \exists X_c>0,\ Q_c>0:\\ \left[\begin{array}{cc} A^TX_c+X_cA & X_cB  \\ B^TX_c & -I  \end{array}\right]<0,\  \left[\begin{array}{cc} X_c & C^T  \\ C & Q_c  \end{array}\right]>0,\  {\rm tr}(Q_c)<\gamma^2}\\\\ \displaystyle{\Leftrightarrow \exists Y_c>0,\ Q_c>0:\\ \left[\begin{array}{cc} Y_cA^T+AY_c & B \\ B^T & -I \end{array}\right]<0,\  \left[\begin{array}{cc} Y_c & Y_cC^T  \\ CY_c & Q_c  \end{array}\right]>0,\  {\rm tr}(Q_c)<\gamma^2} \end{array}}


図1 2ポートシステム

いま、次の2ポート表現されたn次系を考えます。

\displaystyle{(2)\quad P: \left\{\begin{array}{l} \dot{x}=Ax+B_1u_1+B_2u_2 \\ y_1=C_1x+D_{11}u_1+D_{12}u_2 \\ y_2=C_2x+D_{21}u_1 \end{array}\right. }

これに対する出力フィードバック

\displaystyle{(3)\quad K: \left\{\begin{array}{l} \dot{x}_K=A_Kx_K+B_Ky_2 \\ u_2=C_Kx_K+D_Ky_2 \end{array}\right. }

による閉ループ系

\displaystyle{(4) \begin{array}{l} P_{CL}: \\ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x} \\ \dot{x}_K \end{array}\right] = \underbrace{ \left[\begin{array}{ccc} A+B_2D_KC_2 & B_2C_K \\ B_KC_2 & A_K \end{array}\right] }_{A_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] + \underbrace{ \left[\begin{array}{ccc} B_1+B_2D_KD_{21} \\ B_KD_{21} \end{array}\right] }_{B_{CL}} u_1\\ y_1 = \underbrace{ \left[\begin{array}{ccc} C_1+D_{12}D_KC_2 & D_{12}C_K \end{array}\right] }_{C_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] + \underbrace{ (D_{11}+D_{12}D_KD_{21}) }_{D_{CL}} u_1 \end{array}\right. \end{array} }

において、そのH_2ノルムを考えますが、直達項D_{CL}が0となるように、D_{11}=0D_K=0とします。すなわち閉ループ系

\displaystyle{(5) \begin{array}{l} P_{CL}: \\ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x} \\ \dot{x}_K \end{array}\right] = \underbrace{ \left[\begin{array}{ccc} A & B_2C_K \\ B_KC_2 & A_K \end{array}\right] }_{A_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] + \underbrace{ \left[\begin{array}{ccc} B_1 \\ B_KD_{21} \end{array}\right] }_{B_{CL}} u_1\\ y_1 = \underbrace{ \left[\begin{array}{ccc} C_1 & D_{12}C_K \end{array}\right] }_{C_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] \end{array}\right. \end{array} }

H_2ノルムが\gammaより小、すなわち

\displaystyle{(6)\quad {\rm tr} (C_{CL}W_cC_{CL}^T)<\gamma^2\quad(W_c=\int_0^\infty \exp(A_{CL}t)B_{CL}B_{CL}^T\exp(A_{CL}^Tt)dt)} }

となるように出力フィードバックのゲインA_K,B_K,C_Kを求める問題を考えます。

この問題のLMI条件は、次のようになります。

\displaystyle{(7)\quad \begin{array}{l} \exists Y_{CL}>0,\ Q>0:\\ \left[\begin{array}{cc} Y_{CL}A_{CL}^T+A_{CL}Y_{CL} & B_{CL} \\ B_{CL}^T & -I \end{array}\right]<0,\\  \left[\begin{array}{cc} Y_{CL} & Y_{CL}C_{CL}^T  \\ C_{CL}Y_{CL} & Q  \end{array}\right]>0,\\  {\rm tr}(Q)<\gamma^2 \end{array} }

出力フィードバックに関する変数変換の議論を参照して、Y_{CL}=\Pi_1\Pi_2^{-1}=\Pi_2^{-T}\Pi_1^Tを代入して

\displaystyle{(8)\quad \begin{array}{l} \exists \Pi_1\Pi_2^{-1}>0,\ Q>0:\\ \left[\begin{array}{cc} \Pi_2^{-T}\Pi_1^TA_{CL}^T+A_{CL}\Pi_1\Pi_2^{-1} & B_{CL} \\ B_{CL}^T & -I \end{array}\right]<0,\\  \left[\begin{array}{cc} \Pi_2^{-T}\Pi_1^T & \Pi_2^{-T}\Pi_1^TC_{CL}^T  \\ C_{CL}\Pi_1\Pi_2^{-1} & Q \end{array}\right]>0,\\  {\rm tr}(Q)<\gamma^2 \end{array} }

左から\Pi_2^T、右から\Pi_2をかけると、次のようなLMIとなります。

\displaystyle{(9)\quad \begin{array}{l} \exists \Pi_2^T\Pi_1>0,\ Q>0:\\ \left[\begin{array}{cc} \Pi_1^TA_{CL}^T\Pi_2+\Pi_2^TA_{CL}\Pi_1 & \Pi_2^TB_{CL} \\ B_{CL}^T\Pi_2 & -I \end{array}\right]<0,\\  \left[\begin{array}{cc} \Pi_1^T\Pi_2 & \Pi_1^TC_{CL}^T  \\ C_{CL}\Pi_1 & Q  \end{array}\right]>0,\\  {\rm tr}(Q)<\gamma^2 \end{array} }

すなわち

\displaystyle{(10)\quad \begin{array}{l} \Pi_2^TA_{CL}\Pi_1= \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} A & B_2C_K \\ B_KC_2 & A_K \end{array}\right] \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right] \\ =\left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} AR+B_2C_KM^T & A \\ B_KC_2R+A_KM^T & B_KC_2 \end{array}\right] \\ =\left[\begin{array}{ccc} AR+B_2C_KM^T &  A\\ SAR+SB_2C_KM^T+NB_KCR+NA_KM^T & SA+NB_KC_2 \end{array}\right] \\ =\left[\begin{array}{cc} AR+B_2{\cal C}_K & A \\ {\cal A}_K & SA+{\cal B}_KC_2 \end{array}\right] \end{array} }

\displaystyle{(11)\quad \begin{array}{l} \Pi_2^TB_{CL}= \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} B_1 \\ B_KD_{21} \end{array}\right] \\ =\left[\begin{array}{ccc} B_1 \\ SB_1+NB_KD_{21} \end{array}\right] =\left[\begin{array}{ccc} B_1 \\ SB_1+{\cal B}_KD_{21} \end{array}\right] \end{array} }

\displaystyle{(12)\quad \begin{array}{l} C_{CL}\Pi_1= \left[\begin{array}{ccc} C_1 & D_{12}C_K \end{array}\right] \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right] \\ =\left[\begin{array}{ccc} C_1R+D_{12}C_KM^T & C_1 \end{array}\right] \\ =\left[\begin{array}{ccc} C_1R+D_{12}{\cal C}_K & C_1 \end{array}\right] \end{array} }

ただし

\displaystyle{(13)\quad \begin{array}{lll} {\cal A}_K=NA_KM^T+NB_KC_2R+SB_2C_KM^T+SAR \nonumber\\ {\cal B}_K=NB_K \nonumber\\ {\cal C}_K=C_KM^T \nonumber\\ (I-SR=NM^T)\nonumber \end{array} }

したがって、次の制約条件

\displaystyle{(14) \begin{array}{l} \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] >0,\ Q>0 \end{array} }

\displaystyle{(15) \left[\begin{array}{ccc} \left[\begin{array}{cc} AR+B_2{\cal C}_K & A\\ {\cal A}_K & SA+{\cal B}_KC_2 \end{array}\right]+(*)^T & \left[\begin{array}{c} B_1 \\ SB_1+{\cal B}_KD_{21} \end{array}\right]\\ (*)^T & -I \end{array}\right]<0 }

\displaystyle{(16) \left[\begin{array}{cc} \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] & (*)^T  \\ \left[\begin{array}{cc} C_1R+D_{12}{\cal C}_K & C_1 \end{array}\right] & Q \end{array}\right]>0 }

\displaystyle{(17)\quad {\rm tr}(Q)<\gamma^2 }

の下で、\gamma を最小化し、 R=R^T,S=S^T,{\cal A}_K,{\cal B}_K,{\cal C}_Kを求め、次式によって出力フィードバックのゲインを決定します。

\displaystyle{(18)\quad \begin{array}{lll} A_K=N^{-1}({\cal A}_K-SAR-{\cal B}_KC_2R-SB_2{\cal C}_K)M^{-T} \nonumber\\ B_K=N^{-1}{\cal B}_K \nonumber\\ C_K={\cal C}_KM^{-T} \nonumber\\ (I-SR=NM^T) \end{array} }

演習B44…Flipped Classroom
1^\circ 次のコードを参考にして、H_2制御(出力FB)を求める関数を作成せよ。

MATLAB
%of_syn_lmi7.m 
%-----
 A=[0 1;-1 -2*0.01]; B1=[0;1]; B2=B1;
 C1=[1 0;0 0]; D11=[0;0]; D12=[0;1]; 
 C2=[1 0]; D21=0; D22=0; 
 [n,m]=size(B1); p=1; 
%=====
 setlmis([]);
 gam=lmivar(1,[1 0]);  
 Q=lmivar(1,[p 1]);  
 R=lmivar(1,[n 1]); 
 S=lmivar(1,[n 1]); 
 Ak=lmivar(2,[n n]); 
 Bk=lmivar(2,[n p]); 
 Ck=lmivar(2,[m n]); 
 Dk=lmivar(2,[m p]); 
%----- (15)
 lmi1=newlmi;
 lmiterm([lmi1 1 1 R],A,1,'s');       %#1:R*A'+AR 
 lmiterm([lmi1 1 1 Ck],B2,1,'s');     %#1:Ck'*B2'+B2*Ck 
 lmiterm([lmi1 2 1 0],A');            %#1:A' 
 lmiterm([lmi1 2 1 Ak],1,1);          %#1:Ak 
 lmiterm([lmi1 2 2 S],1,A,'s');       %#1:A'*S+S*A 
 lmiterm([lmi1 2 2 Bk],1,C2,'s');     %#1:C2'*Bk'+Bk*C2 
 lmiterm([lmi1 1 3 0],B1);            %#1:B1 
 lmiterm([lmi1 2 3 S],1,B1);          %#1:S*B1 
 lmiterm([lmi1 2 3 Bk],1,D21);        %#1:Bk*D21 
 lmiterm([lmi1 3 3 0],-1);            %#1:-I
%----- (16)
 lmi2=newlmi
 lmiterm([-lmi2 1 1 R],1,1);          %#2:R 
 lmiterm([-lmi2 2 1 0],1);            %#2:I 
 lmiterm([-lmi2 2 2 S],1,1);          %#2:S 
 lmiterm([-lmi2,3,1,R],C1,1);         %#2:C1*R
 lmiterm([-lmi2,3,1,Ck],D12,1);       %#2:D12*Ck 
 lmiterm([-lmi2 3 3 Q],1,1);          %#2:Q  
%----- (17) gam-tr(Q)>0
 CT=zeros(1,p*(p+1)/2); 
 for i=1:p, j=(i+1)*i/2; CT(j)=1; end
 lmi3=newlmi;   
 lmiterm([-lmi3 1 1 gam],1,1);        %#3:gam  
 lmiterm([-lmi3 1 1 Q],-CT,1);        %#3:-tr(Q) 
%======
 LMIs=getlmis; 
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
%-----
 gopt=dec2mat(LMIs,xopt,gam)
 R=dec2mat(LMIs,xopt,R); 
 S=dec2mat(LMIs,xopt,S); 
 ak=dec2mat(LMIs,xopt,Ak); 
 bk=dec2mat(LMIs,xopt,Bk); 
 ck=dec2mat(LMIs,xopt,Ck); 
 dk=dec2mat(LMIs,xopt,Dk); 
 [u,sd,v]=svd(eye(size(A,1)-S*R);  
 sd=diag(sqrt(1./diag(sd))); 
 Ni=sd*u'; Mti=v*sd; 
 AK=Ni*(ak-S*A*R-bk*C2*R-S*B2*ck)*Mti; 
 BK=Ni*bk; 
 CK=ck*Mti; 
%-----
 pl=eig(A)
 ACL=[A B2*CK;
      BK*C2 AK];
 plCL=eig(ACL)
 close all,figure(1)
 dregion(0,0,2000,pi/2,2000*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'x',real(plCL),imag(plCL),'*')
 BCL=[B1;
      BK*D21];
 CCL=[C1 D12*CK];
 DCL=zeros(2,1);
 figure(2) 
 ol=ltisys(A,B1,C1,D11); 
 cl=ltisys(ACL,BCL,CCL,DCL); 
 om=logspace(-1,1,100); 
 splot(cl,'sv',om),hold on 
 splot(ol,'sv',om),grid 
%-----
%eof

出力FB用LMI(H∞制御)

出力FB用LMI(H∞制御)…Homework

[1] n次系\dot{x}=Ax+Bu,\ y=Cx+DuH_\inftyノルムが\gammaより小となるためのLMI条件は、次の通りでした。

\displaystyle{(1) \begin{array}{lll} && \sup_{\omega\in{\rm\bf R}}||\hat{G}(j\omega)||_2<\gamma \nonumber\\ &\Leftrightarrow& \exists X>0:\ \left[\begin{array}{ccc} A^TX+XA & XB & C^T \\ B^TX & -\gamma I & D^T \\ C & D & -\gamma I \end{array}\right]<0 \nonumber\\ &\Leftrightarrow& \exists Y>0:\ \left[\begin{array}{ccc} YA^T+AY & B & YC^T \\ B^T & -\gamma I & D^T \\ CY & D & -\gamma I \end{array}\right]<0\nonumber \end{array} }

ただし

\displaystyle{(2)\quad \hat{G}(s)=C(sI-A)^{-1}B+D }


図1 2ポートシステム

いま、次の2ポート表現されたn次系を考えます。

\displaystyle{(3)\quad P: \left\{\begin{array}{l} \dot{x}=Ax+B_1u_1+B_2u_2 \\ y_1=C_1x+D_{11}u_1+D_{12}u_2 \\ y_2=C_2x+D_{21}u_1 \end{array}\right. }

これに対する出力フィードバック

\displaystyle{(4)\quad K: \left\{\begin{array}{l} \dot{x}_K=A_Kx_K+B_Ky_2 \\ u_2=C_Kx_K+D_Ky_2 \end{array}\right. }

による閉ループ系

\displaystyle{(5) \begin{array}{l} P_{CL}: \\ \left\{\begin{array}{l} \left[\begin{array}{c} \dot{x} \\ \dot{x}_K \end{array}\right] = \underbrace{ \left[\begin{array}{ccc} A+B_2D_KC_2 & B_2C_K \\ B_KC_2 & A_K \end{array}\right] }_{A_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] + \underbrace{ \left[\begin{array}{ccc} B_1+B_2D_KD_{21} \\ B_KD_{21} \end{array}\right] }_{B_{CL}} u_1\\ y_1 = \underbrace{ \left[\begin{array}{ccc} C_1+D_{12}D_KC_2 & D_{12}C_K \end{array}\right] }_{C_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] + \underbrace{ (D_{11}+D_{12}D_KD_{21}) }_{D_{CL}} u_1 \end{array}\right. \end{array} }

において、そのH_\inftyノルムが\gammaより小、すなわち

\displaystyle{(6)\quad \sup_{\omega\in{\rm\bf R}} \underbrace{||\hat{P}_{CL}(j\omega)||_2}_{\sigma_1(\hat{P}_{CL}(j\omega))} <\gamma }

ただし

\displaystyle{(7)\quad \hat{P}_{CL}(s)=C_{CL}(sI-A_{CL})^{-1}B_{CL}+D_{CL} }

となるように出力フィードバックのゲインA_K,B_K,C_K,D_Kを求める問題を考えます。

この問題のLMI条件は、次のようになります。

\displaystyle{(8)\quad \exists Y_{CL}>0:\ \left[\begin{array}{ccc} Y_{CL}A_{CL}^T+A_{CL}Y_{CL} & B_{CL} & Y_{CL}C_{CL}^T \\ B_{CL}^T & -\gamma I & D_{CL}^T \\ C_{CL}Y_{CL} & D_{CL} & -\gamma I \end{array}\right]<0 }

出力フィードバックに関する変数変換の議論を参照して、Y_{CL}=\Pi_1\Pi_2^{-1}=\Pi_2^{-T}\Pi_1^Tを代入して

\displaystyle{(9)\quad \exists \Pi_1\Pi_2^{-1}>0:\ \left[\begin{array}{ccc} \Pi_2^{-T}\Pi_1^TA_{CL}^T+A_{CL}\Pi_1\Pi_2^{-1} & B_{CL} & \Pi_2^{-T}\Pi_1^TC_{CL}^T \\ B_{CL}^T & -\gamma I & D_{CL}^T \\ C_{CL}\Pi_1\Pi_2^{-1} & D_{CL} & -\gamma I \end{array}\right]<0 }

左から\Pi_2^T、右から\Pi_2をかけると、次のようなLMIとなります。

\displaystyle{(10)\quad \exists \Pi_2^T\Pi_1>0:\ \left[\begin{array}{ccc} \Pi_1^TA_{CL}^T\Pi_2+\Pi_2^TA_{CL}\Pi_1 & \Pi_2^TB_{CL} & \Pi_1^TC_{CL}^T \\ B_{CL}^T\Pi_2 & -\gamma I & D_{CL}^T \\ C_{CL}\Pi_1 & D_{CL} & -\gamma I \end{array}\right]<0 }

すなわち

\displaystyle{(11)\quad \begin{array}{l} \Pi_2^TA_{CL}\Pi_1= \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} A+B_2D_KC_2 & B_2C_K \\ B_KC_2 & A_K \end{array}\right] \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right] \\ =\left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} (A+B_2D_KC_2)R+B_2C_KM^T & A+B_2D_KC_2 \\ B_KC_2R+A_KM^T & B_KC_2 \end{array}\right] \\ =\left[\begin{array}{ccc} (A+B_2D_KC_2)R+B_2C_KM^T &  \\ S(A+B_2D_KC_2)R+SB_2C_KM^T+NB_KCR+NA_KM^T & \end{array}\right. \\ \left.\begin{array}{ccc} & A+B_2D_KC_2 \\ & S(A+B_2D_KC_2)+NB_KC_2 \end{array}\right] \\ =\left[\begin{array}{cc} AR+B_2{\cal C}_K & A+B_2D_KC_2 \\ {\cal A}_K & SA+{\cal B}_KC_2 \end{array}\right] \end{array} }

\displaystyle{(12)\quad \begin{array}{l} \Pi_2^TB_{CL}= \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} B_1+B_2D_KD_{21} \\ B_KD_{21} \end{array}\right] \\ =\left[\begin{array}{ccc} B_1+B_2D_KD_{21} \\ S(B_1+B_2D_KD_{21})+NB_KD_{21} \end{array}\right] =\left[\begin{array}{ccc} B_1+B_2D_KD_{21} \\ SB_1+{\cal B}_KD_{21} \end{array}\right] \end{array} }

\displaystyle{(13)\quad \begin{array}{l} C_{CL}\Pi_1= \left[\begin{array}{ccc} C_1+D_{12}D_KC_2 & D_{12}C_K \end{array}\right] \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right] \\ =\left[\begin{array}{ccc} (C_1+D_{12}D_KC_2)R+D_{12}C_KM^T & C_1+D_{12}D_KC_2 \end{array}\right] \\ =\left[\begin{array}{ccc} C_1R+D_{12}{\cal C}_K & C_1+D_{12}D_KC_2 \end{array}\right] \end{array} }

ただし

\displaystyle{(14)\quad \begin{array}{lll} {\cal A}_K=NA_KM^T+NB_KC_2R+SB_2C_KM^T+S(A+B_2D_KC_2)R \nonumber\\ {\cal B}_K=NB_K+SB_2D_K \nonumber\\ {\cal C}_K=C_KM^T+D_KC_2R \nonumber\\ (I-SR=NM^T)\nonumber \end{array} }

したがって、次の制約条件

\displaystyle{(15) \begin{array}{l} \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] >0 \end{array} }

\displaystyle{(16) \left[\begin{array}{ccc} \left[\begin{array}{cc} AR+B_2{\cal C}_K & A+B_2D_KC_2\\ {\cal A}_K & SA+{\cal B}_KC_2 \end{array}\right]+(*)^T & \left[\begin{array}{c} B_1+B_2D_KD_{21} \\ SB_1+{\cal B}_KD_{21} \end{array}\right] & (*)^T \\ (*)^T & -\gamma I & (*)^T \\ \left[\begin{array}{cc} C_1R+D_{12}{\cal C}_K & C_1+D_{12}D_KC_2 \end{array}\right] & D_{11} & -\gamma I \end{array}\right]<0 }

\displaystyle{(17) \begin{array}{l} \left[\begin{array}{cc} AR+B_2{\cal C}_K & A+B_2D_KC_2\\ {\cal A}_K & SA+{\cal B}_KC_2 \end{array}\right] +(*)^T %\nonumber\\&& +\alpha \left[\begin{array}{cc} R & I \\ I & S \end{array}\right]<0} \\ \left[\begin{array}{cc} -r \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] & \left[\begin{array}{cc} AR+B_2{\cal C}_K & A+B_2D_KC_2\\ {\cal A}_K & SA+{\cal B}_KC_2 \end{array}\right] \\ (*)^T & -r \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] \end{array}\right] <0 \\ \left[\begin{array}{cc} \sin\theta & \cos\theta \\ -\cos\theta & \sin\theta \end{array}\right]\otimes \left[\begin{array}{cc} AR+B_2{\cal C}_K & A+B_2D_KC_2\\ {\cal A}_K & SA+{\cal B}_KC_2 \end{array}\right]+ (*)^T <0 \end{array} }

の下で、\gamma を最小化し、 R=R^T,S=S^T,{\cal A}_K,{\cal B}_K,{\cal C}_K,D_Kを求め、次式によって出力フィードバックのゲインを決定します。

\displaystyle{(18)\quad \begin{array}{lll} A_K=N^{-1}({\cal A}_K-S(A-B_2D_KC_2)R-{\cal B}_KC_2R-SB_2{\cal C}_K)M^{-T} \nonumber\\ B_K=N^{-1}({\cal B}_K-SB_2D_K) \nonumber\\ C_K=({\cal C}_K-D_KC_2R)M^{-T} \nonumber\\ (I-SR=NM^T) \end{array} }

演習B43…Flipped Classroom
1^\circ 次のコードを参考にして、H_\infty制御(出力FB)を求める関数を作成せよ。

MATLAB
%of_syn_lmi5.m 
%-----
 A=[0 1;-1 -2*0.01]; B1=[0;1]; B2=B1;
 C1=[1 0;0 0]; D11=[0;0]; D12=[0;1]; 
 C2=[1 0]; D21=0; D22=0; 
%-----
 setlmis([]);
 gam=lmivar(1,[1 0]);    
 R=lmivar(1,[2 1]); 
 S=lmivar(1,[2 1]); 
 Ak=lmivar(2,[2 2]); 
 Bk=lmivar(2,[2 1]); 
 Ck=lmivar(2,[1 2]); 
 Dk=lmivar(2,[1 1]); 
%-----
 lmiRS=newlmi;
 lmiterm([lmiRS 1 1 R],A,1,'s');       %#1:R*A'+AR 
 lmiterm([lmiRS 1 1 Ck],B2,1,'s');     %#1:Ck'*B2'+B2*Ck 
 lmiterm([lmiRS 2 1 0],A');            %#1:A' 
 lmiterm([lmiRS 2 1 Ak],1,1);          %#1:Ak 
 lmiterm([lmiRS 2 1 -Dk],C2',B2');     %#1:C2'*Dk'*B2' 
 lmiterm([lmiRS 2 2 S],1,A,'s');       %#1:A'*S+S*A 
 lmiterm([lmiRS 2 2 Bk],1,C2,'s');     %#1:C2'*Bk'+Bk*C2 
 lmiterm([lmiRS 1 3 0],B1);            %#1:B1 
 lmiterm([lmiRS 1 3 Dk],B2,D21);       %#1:B2*Dk*D21 
 lmiterm([lmiRS 2 3 S],1,B1);          %#1:S*B1 
 lmiterm([lmiRS 2 3 Bk],1,D21);        %#1:Bk*D21 
 lmiterm([lmiRS 3 3 gam],-1,1);        %#1:-gam 
 lmiterm([lmiRS 4 1 R],C1,1);          %#1:C1*R 
 lmiterm([lmiRS 4 1 Ck],D12,1);        %#1:D12*Ck 
 lmiterm([lmiRS 4 2 0],C1);            %#1:C1 
 lmiterm([lmiRS 4 2 Dk],D12,C2);       %#1:D12*Dk*C2 
 lmiterm([lmiRS 4 3 0],D11);           %#1:D11 
 lmiterm([lmiRS 4 3 Dk],D12,D21);      %#1:D12*Dk*D21 
 lmiterm([lmiRS 4 4 gam],-1,1);        %#1:-gam 
%-----
 posX=-newlmi;                         
 lmiterm([posX 1 1 R],1,1);            %#5:R 
 lmiterm([posX 2 1 0],1);              %#5:I 
 lmiterm([posX 2 2 S],1,1);            %#5:S 
%-----
 lmiDk=-newlmi;                        
 lmiterm([lmiDk 1 1 0],1e2);           %#6:1e2 
 lmiterm([lmiDk 2 2 0],1e2);           %#6:1e2 
 lmiterm([lmiDk 2 1 Dk],1,1);          %#6:Dk 
%-----
 lmig=newlmi;                          
 lmiterm([lmig,1,1,gam],1,1);          %#7:gam 
 lmiterm([lmig,1,1,0],-1e3);           %#7:1e3 
%-----
 LMIs=getlmis; 
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
%-----
 gopt=dec2mat(LMIs,xopt,gam)
 R=dec2mat(LMIs,xopt,R); 
 S=dec2mat(LMIs,xopt,S); 
 ak=dec2mat(LMIs,xopt,Ak); 
 bk=dec2mat(LMIs,xopt,Bk); 
 ck=dec2mat(LMIs,xopt,Ck); 
 dk=dec2mat(LMIs,xopt,Dk); 
 [u,sd,v]=svd(eye(size(A,1)-S*R);  
 sd=diag(sqrt(1./diag(sd))); 
 Ni=sd*u'; Mti=v*sd; 
 AK=Ni*(ak-S*(A-B2*dk*C2)*R-bk*C2*R-S*B2*ck)*Mti; 
 BK=Ni*(bk-S*B2*dk); 
 CK=(ck-dk*C2*R)*Mti; 
 DK=dk; 
%-----
 pl=eig(A)
 ACL=[A+B2*DK*C2 B2*CK;
      BK*C2 AK];
 plCL=eig(ACL)
 close all,figure(1)
 dregion(0,0,2000,pi/2,2000*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'x',real(plCL),imag(plCL),'*')
 BCL=[B1+B2*DK*D21;
      BK*D21];
 CCL=[C1+D12*DK*C2 D12*CK];
 DCL=D11+D12*DK*D21;
 figure(2) 
 ol=ltisys(A,B1,C1,D11); 
 cl=ltisys(ACL,BCL,CCL,DCL); 
 om=logspace(-1,1,100); 
 splot(cl,'sv',om),hold on 
 splot(ol,'sv',om),grid 
%-----
%eof


2^\circ 上の2次振動系のH_\infty制御について、閉ループ系の固有値に制約を付けた場合の効果を確かめよ。

MATLAB
%of_syn_lmi6.m 
%-----
 A=[0 1;-1 -2*0.01]; B1=[0;1]; B2=B1;
 C1=[1 0;0 0]; D11=[0;0]; D12=[0;1]; 
 C2=[1 0]; D21=0; D22=0; 
%-----
 setlmis([]);
 gam=lmivar(1,[1 0]);    
 R=lmivar(1,[2 1]); 
 S=lmivar(1,[2 1]); 
 Ak=lmivar(2,[2 2]); 
 Bk=lmivar(2,[2 1]); 
 Ck=lmivar(2,[1 2]); 
 Dk=lmivar(2,[1 1]); 
%-----
 lmiRS=newlmi;
 lmiterm([lmiRS 1 1 R],A,1,'s');       %#1:R*A'+AR 
 lmiterm([lmiRS 1 1 Ck],B2,1,'s');     %#1:Ck'*B2'+B2*Ck 
 lmiterm([lmiRS 2 1 0],A');            %#1:A' 
 lmiterm([lmiRS 2 1 Ak],1,1);          %#1:Ak 
 lmiterm([lmiRS 2 1 -Dk],C2',B2');     %#1:C2'*Dk'*B2' 
 lmiterm([lmiRS 2 2 S],1,A,'s');       %#1:A'*S+S*A 
 lmiterm([lmiRS 2 2 Bk],1,C2,'s');     %#1:C2'*Bk'+Bk*C2 
 lmiterm([lmiRS 1 3 0],B1);            %#1:B1 
 lmiterm([lmiRS 1 3 Dk],B2,D21);       %#1:B2*Dk*D21 
 lmiterm([lmiRS 2 3 S],1,B1);          %#1:S*B1 
 lmiterm([lmiRS 2 3 Bk],1,D21);        %#1:Bk*D21 
 lmiterm([lmiRS 3 3 gam],-1,1);        %#1:-gam 
 lmiterm([lmiRS 4 1 R],C1,1);          %#1:C1*R 
 lmiterm([lmiRS 4 1 Ck],D12,1);        %#1:D12*Ck 
 lmiterm([lmiRS 4 2 0],C1);            %#1:C1 
 lmiterm([lmiRS 4 2 Dk],D12,C2);       %#1:D12*Dk*C2 
 lmiterm([lmiRS 4 3 0],D11);           %#1:D11 
 lmiterm([lmiRS 4 3 Dk],D12,D21);      %#1:D12*Dk*D21 
 lmiterm([lmiRS 4 4 gam],-1,1);        %#1:-gam 
%-----
 alpha=0.1;
 lmiPL1=newlmi; 
 lmiterm([lmiPL1 1 1 R],A,1,'s');      %#2:R*A'+A*R 
 lmiterm([lmiPL1 1 1 Ck],B2,1,'s');    %#2:Ck'*B2'+B2*Ck 
 lmiterm([lmiPL1 2 1 Ak],1,1);         %#2:Ak 
 lmiterm([lmiPL1 1 2 0],A);            %#2:A 
 lmiterm([lmiPL1 1 2 Dk],B2,C2);       %#2:B2*Dk*C2 
 lmiterm([lmiPL1 2 2 S],1,A,'s');      %#2:A'*S+S*A 
 lmiterm([lmiPL1 2 2 Bk],1,C2,'s');    %#2:C2'*Bk'+Bk*C2 
% 
 lmiterm([lmiPL1 1 1 R],2*alpha,1);    %#2:2*alpha*R
 lmiterm([lmiPL1 2 1 0],2*alpha);      %#2:2*alpha*I 
 lmiterm([lmiPL1 2 2 S],2*alpha,1);    %#2:2*alpha*S 
%-----
 r=2;
 lmiPL2=newlmi; 
 lmiterm([lmiPL2 1 1 R],-r,1);         %#3:-r*R 
 lmiterm([lmiPL2 2 1 0],-r);           %#3:-r*I 
 lmiterm([lmiPL2 2 2 S],-r,1);         %#3:-r*S 
% 
 lmiterm([lmiPL2 1 3 R],A,1);          %#3:A*R
 lmiterm([lmiPL2 1 3 Ck],B2,1);        %#3:B2*Ck 
 lmiterm([lmiPL2 2 3 Ak],1,1);         %#3:Ak 
 lmiterm([lmiPL2 1 4 0],A);            %#3:A 
 lmiterm([lmiPL2 1 4 Dk],B2,C2);       %#3:B2*Dk*C2 
 lmiterm([lmiPL2 2 4 S],1,A);          %#3:S*A 
 lmiterm([lmiPL2 2 4 Bk],1,C2);        %#3:Bk*C2 
% 
 lmiterm([lmiPL2 3 3 R],-r,1);         %#3:-r*R
 lmiterm([lmiPL2 4 3 0],-r);           %#3:-r*I 
 lmiterm([lmiPL2 4 4 S],-r,1);         %#3:-r*S 
%-----
 th=0.4*pi; sth=sin(th); cth=cos(th);
 lmiPL3=newlmi; 
 lmiterm([lmiPL3 1 1 R],sth*A,1,'s');  %#4:sth*(R*A'+A*R) 
 lmiterm([lmiPL3 1 1 Ck],sth*B2,1,'s');%#4:sth*(Ck'*B2'+B2*Ck) 
 lmiterm([lmiPL3 2 1 Ak],sth,1);       %#4:sth*(Ak) 
 lmiterm([lmiPL3 1 2 0],sth*A);        %#4:sth*(A) 
 lmiterm([lmiPL3 1 2 Dk],sth*B2,C2);   %#4:sth*(B2*Dk*C2) 
 lmiterm([lmiPL3 2 2 S],1,sth*A,'s');  %#4:sth*(A'*S+S*A) 
 lmiterm([lmiPL3 2 2 Bk],1,sth*C2,'s');%#4:sth*(C2'*Bk'+Bk*C2) 
% 
%  lmiterm([lmiPL3 1 3 R],1,cth*A');   %#4:cth*(R*A')
%  lmiterm([lmiPL3 1 3 R],-cth*A,1);   %#4:cth*(-A*R) 
%  lmiterm([lmiPL3 1 3 -Ck],cth*B2',1);%#4:cth*(Ck'*B2') 
%  lmiterm([lmiPL3 1 3 Ck],-cth*B2,1); %#4:cth*(-B2*Ck) 
 lmiterm([lmiPL3 1 3 R],cth*A,1);      %#1:cth*(A*R) 
 lmiterm([lmiPL3 1 3 R],1,-cth*A');    %#1:cth*(-R*A')
 lmiterm([lmiPL3 1 3 Ck],cth*B2,1);    %#1:cth*(B*Ck) 
 lmiterm([lmiPL3 1 3 -Ck],-cth*B2',1); %#1:cth*(-Ck'*B') 
 lmiterm([lmiPL3 2 3 Ak],cth,1);       %#4:cth*(Ak) 
 lmiterm([lmiPL3 1 4 -Ak],-cth,1);     %#4:cth*(-Ak') 
 lmiterm([lmiPL3 1 4 0],A);            %#4:cth*(A) 
 lmiterm([lmiPL3 2 3 0],-A');          %#4:cth*(-A') 
 lmiterm([lmiPL3 1 4 Dk],cth*B2,C2);   %#4:cth*(B2*Dk*C2) 
 lmiterm([lmiPL3 2 3 -Dk],-cth*C2',B2');%#4:cth*(-C2'*Dk'*B2') 
 lmiterm([lmiPL3 2 4 S],1,cth*A);      %#4:cth*(S*A) 
 lmiterm([lmiPL3 2 4 S],-cth*A',1);    %#4:cth*(-A'*S) 
 lmiterm([lmiPL3 2 4 Bk],1,cth*C2);    %#4:cth*(Bk*C2) 
 lmiterm([lmiPL3 2 4 -Bk],-cth*C2',1); %#4:cth*(-C2'*Bk') 
% 
 lmiterm([lmiPL3 3 3 R],sth*A,1,'s');  %#4:sth*(R*A'+A*R)
 lmiterm([lmiPL3 3 3 Ck],sth*B2,1,'s');%#4:sth*(Ck'*B2'+B2*Ck) 
 lmiterm([lmiPL3 4 3 Ak],sth,1);       %#4:sth*(Ak) 
 lmiterm([lmiPL3 3 4 0],sth*A);        %#4:sth*(A) 
 lmiterm([lmiPL3 3 4 Dk],sth*B2,C2);   %#4:sth*(B2*Dk*C2) 
 lmiterm([lmiPL3 4 4 S],1,sth*A,'s');  %#4:sth*(A'*S+S*A) 
 lmiterm([lmiPL3 4 4 Bk],1,sth*C2,'s');%#4:sth*(C2'*Bk'+Bk*C2) 
%-----
 posX=-newlmi;
 lmiterm([posX 1 1 R],1,1);            %#5:R 
 lmiterm([posX 2 1 0],1);              %#5:I 
 lmiterm([posX 2 2 S],1,1);            %#5:S 
%-----
 lmiDk=-newlmi;                        
 lmiterm([lmiDk 1 1 0],1e2);           %#6:1e2 
 lmiterm([lmiDk 2 2 0],1e2);           %#6:1e2 
 lmiterm([lmiDk 2 1 Dk],1,1);          %#6:Dk 
%-----
 lmig=newlmi;                          
 lmiterm([lmig,1,1,gam],1,1);          %#7:gam 
 lmiterm([lmig,1,1,0],-1e3);           %#7:1e3 
%-----
 LMIs=getlmis; 
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
%-----
 gopt=dec2mat(LMIs,xopt,gam)
 R=dec2mat(LMIs,xopt,R); 
 S=dec2mat(LMIs,xopt,S); 
 ak=dec2mat(LMIs,xopt,Ak); 
 bk=dec2mat(LMIs,xopt,Bk); 
 ck=dec2mat(LMIs,xopt,Ck); 
 dk=dec2mat(LMIs,xopt,Dk); 
 [u,sd,v]=svd(eye(size(A,1)-S*R);  
 sd=diag(sqrt(1./diag(sd))); 
 Ni=sd*u'; Mti=v*sd; 
 AK=Ni*(ak-S*(A-B2*dk*C2)*R-bk*C2*R-S*B2*ck)*Mti; 
 BK=Ni*(bk-S*B2*dk); 
 CK=(ck-dk*C2*R)*Mti; 
 DK=dk; 
%-----
 pl=eig(A)
 ACL=[A+B2*DK*C2 B2*CK;
      BK*C2 AK];
 plCL=eig(ACL)
 close all,figure(1)
 dregion(alpha,0,r,th,r*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'x',real(plCL),imag(plCL),'*')
 BCL=[B1+B2*DK*D21;
      BK*D21];
 CCL=[C1+D12*DK*C2 D12*CK];
 DCL=D11+D12*DK*D21;
 figure(2) 
 ol=ltisys(A,B1,C1,D11); 
 cl=ltisys(ACL,BCL,CCL,DCL); 
 om=logspace(-1,1,100); 
 splot(cl,'sv',om),hold on 
 splot(ol,'sv',om),grid 
%-----
%eof 

出力FB用LMI(固有値制約)

出力FB用LMI(固有値制約)…Homework

[0] n次系

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

に対する出力フィードバック

\displaystyle{(2)\quad \left\{\begin{array}{l} \dot{x}_K=A_Kx_K+B_Ky \\ u=C_Kx_K+D_Ky \end{array}\right. }

による閉ループ系

\displaystyle{(3)\quad \left[\begin{array}{c} \dot{x} \\ \dot{x}_K \end{array}\right] = \underbrace{ \left[\begin{array}{ccc} A+BD_KC & BC_K \\ B_KC & A_K \end{array}\right] }_{A_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] }

において、

\displaystyle{(4)\quad\lambda(A_{CL})\subset{\cal D}_i\quad(i=1,2,3)}

となるように出力フィードバックのゲインA_K,B_K,C_K,D_Kを求める問題を考えます。


図1 領域{\cal D}={\cal D}_1\cup{\cal D}_2\cup{\cal D}_3

[1] \lambda(A)\subset{\cal D}_1となるLMI条件は、次の通りでした。

\displaystyle{(5) \begin{array}{lll} &&\lambda(A)\subset {\cal D}_1=\{s=x+jy\in{\rm\bf C}: 2\alpha+s+s^*<0 \}\\ &\Leftrightarrow& \exists X>0:\ 2\alpha X+XA+A^TX<0\\ &\Leftrightarrow& \exists Y>0:\ 2\alpha Y+AY+YA^T<0 \end{array} }

したがって、\lambda(A_{CL})\subset{\cal D}_1となるLMI条件は、次のようになります。

\displaystyle{(6)\quad \exists Y_{CL}>0: 2\alpha Y_{CL}+A_{CL}Y_{CL}+Y_{CL}A_{CL}^T<0 }

出力フィードバックに関する変数変換の議論を参照して、Y_{CL}=\Pi_1\Pi_2^{-1}=\Pi_2^{-T}\Pi_1^Tを代入して

\displaystyle{(7)\quad \exists \Pi_1\Pi_2^{-1}>0: 2\alpha \Pi_1\Pi_2^{-1}+A_{CL}\Pi_1\Pi_2^{-1}+\Pi_2^{-T}\Pi_1^TA_{CL}^T<0 }

左から\Pi_2^T、右から\Pi_2をかけると、次のようなLMIとなります。

\displaystyle{(8)\quad \exists \Pi_2^T\Pi_1>0: 2\alpha \Pi_2^T\Pi_1+\Pi_2^TA_{CL}\Pi_1+(\Pi_2^TA_{CL}\Pi_1)^T<0 }

すなわち

\displaystyle{(9)\quad \exists \left[\begin{array}{cc} R & I \\ I & S \end{array}\right]>0: 2\alpha \left[\begin{array}{cc} R & I \\ I & S \end{array}\right]+ }
\displaystyle{ \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right] + \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right]^T <0 }

これを解いて R=R^T,S=S^T,{\cal A}_K,{\cal B}_K,{\cal C}_K,D_Kを求め、次式によって出力フィードバックのゲインを決定します。

\displaystyle{(10)\quad \begin{array}{lll} A_K=N^{-1}({\cal A}_K-S(A-BD_KC)R-{\cal B}_KCR-SB{\cal C}_K)M^{-T} \\ B_K=N^{-1}({\cal B}_K-SBD_K) \\ C_K=({\cal C}_K-D_KCR)M^{-T} \\ I-SR=NM^T \end{array} }

[2] \lambda(A)\subset{\cal D}_2となるLMI条件は、次の通りでした。

\displaystyle{(11) \begin{array}{lll} &&\lambda(A)\subset {\cal D}_2=\{s=x+jy\in{\rm\bf C}: \left[\begin{array}{cc} -r & s \\ s^* & -r \end{array}\right] <0 \}\nonumber\\ &\Leftrightarrow& \exists X>0:\ \left[\begin{array}{cc} -rX & XA \\ A^TX & -rX \end{array}\right]<0 \nonumber\\ &\Leftrightarrow& \exists Y>0:\ \left[\begin{array}{cc} -rY & AY \\ YA^T & -rY \end{array}\right]<0\nonumber \end{array} }

したがって、\lambda(A_{CL})\subset{\cal D}_1となるLMI条件は、次のようになります。

\displaystyle{(12)\quad \exists Y_{CL}>0: \left[\begin{array}{cc} -rY_{CL} & A_{CL}Y_{CL} \\ Y_{CL}A_{CL}^T & -rY_{CL} \end{array}\right]<0 }

出力フィードバックに関する変数変換の議論を参照して、Y_{CL}=\Pi_1\Pi_2^{-1}=\Pi_2^{-T}\Pi_1^Tを代入して

\displaystyle{(13)\quad \exists \Pi_1\Pi_2^{-1}>0: \left[\begin{array}{cc} -r\Pi_1\Pi_2^{-1} & A_{CL}\Pi_1\Pi_2^{-1} \\ \Pi_2^{-T}\Pi_1^TA_{CL}^T & -r\Pi_1\Pi_2^{-1} \end{array}\right]<0 }

左から\Pi_2^T、右から\Pi_2をかけると、次のようなLMIとなります。

\displaystyle{(14)\quad \exists \Pi_2^T\Pi_1>0: \left[\begin{array}{cc} -r\Pi_2^T\Pi_1 & \Pi_2^TA_{CL}\Pi_1 \\ (\Pi_2^TA_{CL}\Pi_1)^T & -r\Pi_2^T\Pi_1 \end{array}\right]<0 }

すなわち

\displaystyle{(15)\quad \exists \left[\begin{array}{cc} R & I \\ I & S \end{array}\right]>0:\ }
\displaystyle{ \left[\begin{array}{cc} -r \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] & \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right] \\ \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right]^T & -r \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] \end{array}\right] <0 }

これを解いて R=R^T,S=S^T,{\cal A}_K,{\cal B}_K,{\cal C}_K,D_Kを求め、次式によって出力フィードバックのゲインを決定します。

\displaystyle{(10)\quad \begin{array}{lll} A_K=N^{-1}({\cal A}_K-S(A-BD_KC)R-{\cal B}_KCR-SB{\cal C}_K)M^{-T} \\ B_K=N^{-1}({\cal B}_K-SBD_K) \\ C_K=({\cal C}_K-D_KCR)M^{-T} \\ I-SR=NM^T \end{array} }

[3] \lambda(A)\subset{\cal D}_3となるLMI条件は、次の通りでした。

\displaystyle{(16) \begin{array}{lll} &&\lambda(A)\subset {\cal D}_3=\{s=x+jy\in{\rm\bf C}:\\ && \left[\begin{array}{cc} \sin\theta & \cos\theta \\ -\cos\theta & \sin\theta \end{array}\right]s + \left[\begin{array}{cc} \sin\theta & \cos\theta \\ -\cos\theta & \sin\theta \end{array}\right]^Ts^* <0 \}\nonumber\\ &&\Leftrightarrow \exists X>0:\ \left[\begin{array}{cc} \sin\theta(XA+A^TX) & \cos\theta(XA-A^TX) \\ -\cos\theta(XA-A^TX) & \sin\theta(XA+A^TX) \end{array}\right] <0 \nonumber\\ &&\Leftrightarrow \exists Y>0:\ \left[\begin{array}{cc} \sin\theta(AY+YA^T) & \cos\theta(AY-YA^T) \\ -\cos\theta(AY-YA^T) & \sin\theta(AY+YA^T) \end{array}\right] <0\nonumber \end{array} }

したがって、\lambda(A_{CL})\subset{\cal D}_1となるLMI条件は、次のようになります。

\displaystyle{(17)\quad \exists Y_{CL}>0:\ }
\displaystyle{ \left[\begin{array}{cc} \sin\theta(A_{CL}Y_{CL}+Y_{CL}A_{CL}^T) & \cos\theta(A_{CL}Y_{CL}-Y_{CL}A_{CL}^T) \\ -\cos\theta(A_{CL}Y_{CL}-Y_{CL}A_{CL}^T) & \sin\theta(A_{CL}Y_{CL}+Y_{CL}A_{CL}^T) \end{array}\right] <0 }

出力フィードバックに関する変数変換の議論を参照して、Y_{CL}=\Pi_1\Pi_2^{-1}=\Pi_2^{-T}\Pi_1^Tを代入して

\displaystyle{(18)\quad \exists \Pi_1\Pi_2^{-1}>0:\ }
\displaystyle{ \left[\begin{array}{cc} \sin\theta(A_{CL}\Pi_1\Pi_2^{-1}+\Pi_2^{-T}\Pi_1^TA_{CL}^T) & \cos\theta(A_{CL}\Pi_1\Pi_2^{-1}-\Pi_2^{-T}\Pi_1^TA_{CL}^T) \\ -\cos\theta(A_{CL}\Pi_1\Pi_2^{-1}-\Pi_2^{-T}\Pi_1^TA_{CL}^T) & \sin\theta(A_{CL}\Pi_1\Pi_2^{-1}+\Pi_2^{-T}\Pi_1^TA_{CL}^T) \end{array}\right] <0 }

左から\Pi_2^T、右から\Pi_2をかけると、次のようなLMIとなります。

\displaystyle{(19)\quad \exists \Pi_2^T\Pi_1>0:\ }
\displaystyle{ \left[\begin{array}{cc} \sin\theta(\Pi_2^TA_{CL}\Pi_1+(\Pi_2^TA_{CL}\Pi_1)^T) & \cos\theta(\Pi_2^TA_{CL}\Pi_1-(\Pi_2^TA_{CL}\Pi_1)^T) \\ -\cos\theta(\Pi_2^TA_{CL}\Pi_1-(\Pi_2^TA_{CL}\Pi_1)^T) & \sin\theta(\Pi_2^TA_{CL}\Pi_1+(\Pi_2^TA_{CL}\Pi_1)^T) \end{array}\right]<0 }

すなわち

\displaystyle{(20)\quad \begin{array}{l} \exists \left[\begin{array}{cc} R & I \\ I & S \end{array}\right]>0:\ \\ \left[\begin{array}{cc} \sin\theta & \cos\theta \\ -\cos\theta & \sin\theta \end{array}\right] \otimes \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right]+ \\ (\left[\begin{array}{cc} \sin\theta & \cos\theta \\ -\cos\theta & \sin\theta \end{array}\right] \otimes \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right])^T <0 \end{array} }

これを解いて R=R^T,S=S^T,{\cal A}_K,{\cal B}_K,{\cal C}_K,D_Kを求め、次式によって出力フィードバックのゲインを決定します。

\displaystyle{(10)\quad \begin{array}{lll} A_K=N^{-1}({\cal A}_K-S(A-BD_KC)R-{\cal B}_KCR-SB{\cal C}_K)M^{-T} \\ B_K=N^{-1}({\cal B}_K-SBD_K) \\ C_K=({\cal C}_K-D_KCR)M^{-T} \\ I-SR=NM^T \end{array} }

演習B42…Flipped Classroom
1^\circ 次のコードを参考にして、\lambda(A-BF)\subset{\cal D}を達成する出力FBを求める関数を作成せよ。

MATLAB
%of_syn_lmi4.m 
%-----
 clear all, close all
 A=[0 1;-1 -2*0.01]; B=[0;1]; C=[1 0];
%-----
 setlmis([]);
 R=lmivar(1,[2 1]); 
 S=lmivar(1,[2 1]); 
 Ak=lmivar(2,[2 2]); 
 Bk=lmivar(2,[2 1]); 
 Ck=lmivar(2,[1 2]); 
 Dk=lmivar(2,[1 1]); 
%-----
 alpha=0.1;
 lmiPL1=newlmi; 
 lmiterm([lmiPL1 1 1 R],A,1,'s');      %#2:R*A'+A*R 
 lmiterm([lmiPL1 1 1 Ck],B,1,'s');     %#2:Ck'*B'+B*Ck 
 lmiterm([lmiPL1 2 1 Ak],1,1);         %#2:Ak 
 lmiterm([lmiPL1 1 2 0],A);            %#2:A 
 lmiterm([lmiPL1 1 2 Dk],B,C);         %#2:B*Dk*C 
 lmiterm([lmiPL1 2 2 S],1,A,'s');      %#2:A'*S+S*A 
 lmiterm([lmiPL1 2 2 Bk],1,C,'s');     %#2:C'*Bk'+Bk*C 
% 
 lmiterm([lmiPL1 1 1 R],2*alpha,1);    %#2:2*alpha*R
 lmiterm([lmiPL1 2 1 0],2*alpha);      %#2:2*alpha*I 
 lmiterm([lmiPL1 2 2 S],2*alpha,1);    %#2:2*alpha*S 
%-----
 r=5;
 lmiPL2=newlmi; 
 lmiterm([lmiPL2 1 1 R],-r,1);         %#3:-r*R 
 lmiterm([lmiPL2 2 1 0],-r);           %#3:-r*I 
 lmiterm([lmiPL2 2 2 S],-r,1);         %#3:-r*S 
% 
 lmiterm([lmiPL2 1 3 R],A,1);          %#3:A*R
 lmiterm([lmiPL2 1 3 Ck],B,1);         %#3:B*Ck 
 lmiterm([lmiPL2 2 3 Ak],1,1);         %#3:Ak 
 lmiterm([lmiPL2 1 4 0],A);            %#3:A 
 lmiterm([lmiPL2 1 4 Dk],B,C);         %#3:B*Dk*C 
 lmiterm([lmiPL2 2 4 S],1,A);          %#3:S*A 
 lmiterm([lmiPL2 2 4 Bk],1,C);         %#3:Bk*C 
% 
 lmiterm([lmiPL2 3 3 R],-r,1);         %#3:-r*R
 lmiterm([lmiPL2 4 3 0],-r);           %#3:-r*I 
 lmiterm([lmiPL2 4 4 S],-r,1);         %#3:-r*S 
%-----
 th=pi/2; sth=sin(th); cth=cos(th);
 lmiPL3=newlmi; 
 lmiterm([lmiPL3 1 1 R],sth*A,1,'s');  %#4:sth*(R*A'+A*R) 
 lmiterm([lmiPL3 1 1 Ck],sth*B,1,'s'); %#4:sth*(Ck'*B'+B*Ck) 
 lmiterm([lmiPL3 2 1 Ak],sth,1);       %#4:sth*(Ak) 
 lmiterm([lmiPL3 1 2 0],sth*A);        %#4:sth*(A) 
 lmiterm([lmiPL3 1 2 Dk],sth*B,C);     %#4:sth*(B*Dk*C) 
 lmiterm([lmiPL3 2 2 S],1,sth*A,'s');  %#4:sth*(A'*S+S*A) 
 lmiterm([lmiPL3 2 2 Bk],1,sth*C,'s'); %#4:sth*(C'*Bk'+Bk*C) 
% 
%lmiterm([lmiPL3 1 3 R],1,cth*A');     %#1:cth*(R*A')
%lmiterm([lmiPL3 1 3 R],-cth*A,1);     %#1:cth*(-A*R) 
%lmiterm([lmiPL3 1 3 -Ck],cth*B',1);   %#1:cth*(Ck'*B') 
%lmiterm([lmiPL3 1 3 Ck],-cth*B,1);    %#1:cth*(-B*Ck) 
 lmiterm([lmiPL3 1 3 R],cth*A,1);      %#1:cth*(A*R) 
 lmiterm([lmiPL3 1 3 R],1,-cth*A');    %#1:cth*(-R*A')
 lmiterm([lmiPL3 1 3 Ck],cth*B,1);     %#1:cth*(B*Ck) 
 lmiterm([lmiPL3 1 3 -Ck],-cth*B',1);  %#1:cth*(-Ck'*B')  
 lmiterm([lmiPL3 2 3 Ak],cth,1);       %#4:cth*(Ak) 
 lmiterm([lmiPL3 1 4 -Ak],-cth,1);     %#4:cth*(-Ak') 
 lmiterm([lmiPL3 1 4 0],A);            %#4:cth*(A) 
 lmiterm([lmiPL3 2 3 0],-A');          %#4:cth*(-A') 
 lmiterm([lmiPL3 1 4 Dk],cth*B,C);     %#4:cth*(B*Dk*C) 
 lmiterm([lmiPL3 2 3 -Dk],-cth*C',B'); %#4:cth*(-C'*Dk'*B') 
 lmiterm([lmiPL3 2 4 S],1,cth*A);      %#4:cth*(S*A) 
 lmiterm([lmiPL3 2 4 S],-cth*A',1);    %#4:cth*(-A'*S) 
 lmiterm([lmiPL3 2 4 Bk],1,cth*C);     %#4:cth*(Bk*C) 
 lmiterm([lmiPL3 2 4 -Bk],-cth*C',1);  %#4:cth*(-C'*Bk') 
% 
 lmiterm([lmiPL3 3 3 R],sth*A,1,'s');  %#4:sth*(R*A'+A*R)
 lmiterm([lmiPL3 3 3 Ck],sth*B,1,'s'); %#4:sth*(Ck'*B'+B*Ck) 
 lmiterm([lmiPL3 4 3 Ak],sth,1);       %#4:sth*(Ak) 
 lmiterm([lmiPL3 3 4 0],sth*A);        %#4:sth*(A) 
 lmiterm([lmiPL3 3 4 Dk],sth*B,C);     %#4:sth*(B*Dk*C) 
 lmiterm([lmiPL3 4 4 S],1,sth*A,'s');  %#4:sth*(A'*S+S*A) 
 lmiterm([lmiPL3 4 4 Bk],1,sth*C,'s'); %#4:sth*(C'*Bk'+Bk*C) 
%-----
 posX=-newlmi;
 lmiterm([posX 1 1 R],1,1);            %#5:R 
 lmiterm([posX 2 1 0],1);              %#5:I 
 lmiterm([posX 2 2 S],1,1);            %#5:S 
%-----
 LMIs=getlmis; 
 [tmin,xfeas]=feasp(LMIs);   
 R=dec2mat(LMIs,xfeas,R); 
 S=dec2mat(LMIs,xfeas,S); 
 ak=dec2mat(LMIs,xfeas,Ak); 
 bk=dec2mat(LMIs,xfeas,Bk); 
 ck=dec2mat(LMIs,xfeas,Ck); 
 dk=dec2mat(LMIs,xfeas,Dk); 
 [u,sd,v]=svd(eye(size(A,1)-S*R);  
 sd=diag(sqrt(1./diag(sd))); 
 Ni=sd*u'; Mti=v*sd; 
 AK=Ni*(ak-S*(A-B*dk*C)*R-bk*C*R-S*B*ck)*Mti; 
 BK=Ni*(bk-S*B*dk); 
 CK=(ck-dk*C*R)*Mti; 
 DK=dk; 
%-----
 pl=eig(A)
 ACL=[A+B*DK*C B*CK;
      BK*C AK];
 plCL=eig(ACL)
 figure(1)
 dregion(0,0,5,0.4*pi,5*[-1,1,-1,1])  
 plot(real(pl),imag(pl),'x',real(plCL),imag(plCL),'*')
%-----
%eof 

出力FB用変数変換

出力FB用変数変換…Homework

[1] n次系

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

に対する出力フィードバック

\displaystyle{(2)\quad \left\{\begin{array}{l} \dot{x}_K=A_Kx_K+B_Ky \\ u=C_Kx_K+D_Ky \end{array}\right. }

による閉ループ系

\displaystyle{(3)\quad \left[\begin{array}{c} \dot{x} \\ \dot{x}_K \end{array}\right] = \underbrace{ \left[\begin{array}{ccc} A+BD_KC & BC_K \\ B_KC & A_K \end{array}\right] }_{A_{CL}} \left[\begin{array}{c} x \\ x_K \end{array}\right] }

を考えます。

出力フィードバックに関する変数変換として、以下の議論が知られています。

\displaystyle{(4)\quad \begin{array}{l} \underbrace{ \left[\begin{array}{cc} S & N \\ N^T & S' \end{array}\right] }_{X_{CL}} \underbrace{ \left[\begin{array}{cc} R & M \\ M^T & R' \end{array}\right] }_{Y_{CL}=X^{-1}_{CL}} = \left[\begin{array}{cc} I & 0 \\ 0 & I \end{array}\right] \quad(SR+NM^T=I)\\ \underbrace{ \left[\begin{array}{cc} R & M \\ M^T & R' \end{array}\right] }_{Y_{CL}} \underbrace{ \left[\begin{array}{cc} S & N \\ N^T & S' \end{array}\right] }_{X_{CL}=Y^{-1}_{CL}} = \left[\begin{array}{cc} I & 0 \\ 0 & I \end{array}\right] \quad(RS+MN^T=I) \end{array} }

が与えられるとき、次の命題が成立します(Note B41参照)。

\displaystyle{(5)\quad X_{CL}>0 \Leftrightarrow Y_{CL}>0 \Leftrightarrow \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] >0 }

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

\displaystyle{(6)\quad X_{CL}= \underbrace{ \left[\begin{array}{cc} I & S \\ 0 & N^T \end{array}\right] }_{\Pi_2} \underbrace{ \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right]^{-1} }_{\Pi_1^{-1}} = \underbrace{ \left[\begin{array}{cc} R & M \\ I & 0 \end{array}\right]^{-1} }_{\Pi_1^{-T}} \underbrace{ \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] }_{\Pi_2^T} }

\displaystyle{(7)\quad Y_{CL}= \underbrace{ \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right] }_{\Pi_1} \underbrace{ \left[\begin{array}{cc} I & S \\ 0 & N^T \end{array}\right]^{-1} }_{\Pi_2^{-1}} = \underbrace{ \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right]^{-1} }_{\Pi_2^{-T}} \underbrace{ \left[\begin{array}{cc} R & M \\ I & 0 \end{array}\right] }_{\Pi_1^T} }

\displaystyle{(8)\quad \left[\begin{array}{cc} R & I \\ I & S \end{array}\right] = \underbrace{ \left[\begin{array}{cc} R & M \\ I & 0 \end{array}\right] }_{\Pi_1^T} \underbrace{ \left[\begin{array}{cc} I & S \\ 0 & N^T \end{array}\right] }_{\Pi_2} = \underbrace{ \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] }_{\Pi_2^T} \underbrace{ \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right] }_{\Pi_1} }

以下では、次の変換を用います。

\displaystyle{(9)\quad \begin{array}{l} \Pi_2^TA_{CL}\Pi_1= \left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} A+BD_KC & BC_K \\ B_KC & A_K \end{array}\right] \left[\begin{array}{cc} R & I \\ M^T & 0 \end{array}\right] \\ =\left[\begin{array}{cc} I & 0 \\ S & N \end{array}\right] \left[\begin{array}{ccc} (A+BD_KC)R+BC_KM^T & A+BD_KC \\ B_KCR+A_KM^T & B_KC \end{array}\right] \\ =\left[\begin{array}{ccc} (A+BD_KC)R+BC_KM^T &  \\ S(A+BD_KC)R+SBC_KM^T+NB_KCR+NA_KM^T & \end{array}\right. \\ \left.\begin{array}{ccc} & A+BD_KC \\ & S(A+BD_KC)+NB_KC \end{array}\right] \\ =\left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right] \end{array} }

ただし

\displaystyle{(10)\quad \begin{array}{lll} {\cal A}_K&=&NA_KM^T+NB_KCR+SBC_KM^T+S(A+BD_KC)R \nonumber\\ {\cal B}_K&=&NB_K+SBD_K \nonumber\\ {\cal C}_K&=&C_KM^T+D_KCR \nonumber \end{array} }

[2] \lambda(A)\subset{\rm\bf LHP}となるLMI条件は、次の通りでした。

\displaystyle{(11) \begin{array}{lll} &&\lambda(A)\subset {\rm\bf LHP}=\{s=x+jy\in{\rm\bf C}: s+s^*<0 \}\\ &\Leftrightarrow& \exists X>0:\ XA+A^TX<0\\ &\Leftrightarrow& \exists Y>0:\ AY+YA^T<0 \end{array} }

したがって、\lambda(A_{CL})\subset{\rm\bf LHP}となるLMI条件は、次のようになります。

\displaystyle{(12)\quad \exists Y_{CL}>0: A_{CL}Y_{CL}+Y_{CL}A_{CL}^T<0 }

Y_{CL}=\Pi_1\Pi_2^{-1}=\Pi_2^{-T}\Pi_1^Tを代入して

\displaystyle{(13)\quad \exists \Pi_1\Pi_2^{-1}>0: A_{CL}\Pi_1\Pi_2^{-1}+\Pi_2^{-T}\Pi_1^TA_{CL}^T<0 }

左から\Pi_2^T、右から\Pi_2をかけると、次のようなLMIとなります。

\displaystyle{(14)\quad \exists \Pi_2^T\Pi_1>0: \Pi_2^TA_{CL}\Pi_1+(\Pi_2^TA_{CL}\Pi_1)^T<0 }

すなわち

\displaystyle{(15)\quad \exists \left[\begin{array}{cc} R & I \\ I & S \end{array}\right]>0: }
\displaystyle{ \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right] + \left[\begin{array}{cc} AR+B{\cal C}_K & A+BD_KC \\ {\cal A}_K & SA+{\cal B}_KC \end{array}\right]^T <0 }

これを解いて R=R^T,S=S^T,{\cal A}_K,{\cal B}_K,{\cal C}_K,D_Kを求め、次式によって出力フィードバックのゲインを決定します。

\displaystyle{(16)\quad \begin{array}{lll} A_K=N^{-1}({\cal A}_K-S(A-BD_KC)R-{\cal B}_KCR-SB{\cal C}_K)M^{-T} \nonumber\\ B_K=N^{-1}({\cal B}_K-SBD_K) \nonumber\\ C_K=({\cal C}_K-D_KCR)M^{-T} \nonumberr \end{array} }

ただし、N^{-1}M^{-T}は次の分解を行って求めます。

\displaystyle{(17)\quad I-SR=U\Sigma V^T=\underbrace{U\Sigma^{1/2}}_{N}\underbrace{\Sigma^{1/2}V^T}_{M^T} \Rightarrow N^{-1}=\Sigma^{-1/2}U^T,\ M^{-T}=V\Sigma^{-1/2} }

または、I-SR=(I-RS)^T=NM^Tに注意して

\displaystyle{(18)\quad \begin{array}{l} I-RS=V\Sigma U^T=\underbrace{V\Sigma^{1/2}}_{M}\underbrace{\Sigma^{1/2}U^T}_{N^T}\\ \Rightarrow M^{-T}=(M^{-1})^T=(\Sigma^{-1/2}V^T)^T=V\Sigma^{-1/2},\\ N^{-1}=(N^{-T}))^T=(U\Sigma^{-1/2})^T=\Sigma^{-1/2}U^T \end{array} }

演習B41…Flipped Classroom
1^\circ 次のコードを参考にして、安定化出力FBを求める関数を作成せよ。

MATLAB
%of_syn_lmi0.m 
%-----
 clear all, close all
 A=[0 1;0 0]; B=[0;1]; C=[1 0];
%-----
 setlmis([]); 
 [R,xxx,Rdec]=lmivar(1,[2 1]); 
 [S,xxx,Sdec]=lmivar(1,[2 1]); 
 Ak=lmivar(2,[2 2]); 
 Bk=lmivar(2,[2 1]); 
 Ck=lmivar(2,[1 2]); 
 Dk=lmivar(2,[1 1]); 
%-----
 lmiPL=newlmi; 
 lmiterm([lmiPL 1 1 R],A,1,'s');      %#1:R*A'+AR 
 lmiterm([lmiPL 1 1 Ck],B,1,'s');     %#1:Ck'*B'+B*Ck 
 lmiterm([lmiPL 2 1 Ak],1,1);         %#1:Ak 
 lmiterm([lmiPL 1 2 0],A);            %#1:A 
 lmiterm([lmiPL 1 2 Dk],B,C);         %#1:B*Dk*C 
 lmiterm([lmiPL 2 2 S],1,A,'s');      %#1:A'*S+S*A 
 lmiterm([lmiPL 2 2 Bk],1,C,'s');     %#1:C'*Bk'+Bk*C 
%-----
 posX=-newlmi;
 lmiterm([posX 1 1 R],1,1);           %#2:R 
 lmiterm([posX 2 1 0],1);             %#2:I 
 lmiterm([posX 2 2 S],1,1);           %#2:S 
%-----
 LMIs=getlmis; 
 [tmin,xfeas]=feasp(LMIs);   
 R=dec2mat(LMIs,xfeas,R); 
 S=dec2mat(LMIs,xfeas,S); 
 ak=dec2mat(LMIs,xfeas,Ak); 
 bk=dec2mat(LMIs,xfeas,Bk); 
 ck=dec2mat(LMIs,xfeas,Ck); 
 dk=dec2mat(LMIs,xfeas,Dk); 
 [u,sd,v]=svd(eye(size(A,1)-S*R);  
 sd=diag(sqrt(1./diag(sd))); 
 Ni=sd*u'; Mti=v*sd; 
 AK=Ni*(ak-S*(A-B*dk*C)*R-bk*C*R-S*B*ck)*Mti; 
 BK=Ni*(bk-S*B*dk); 
 CK=(ck-dk*C*R)*Mti; 
 DK=dk; 
%-----        
 pl=eig(A)          
 ACL=[A+B*DK*C B*CK;          
      BK*C AK];          
 plCL=eig(ACL)          
 close all,figure(1)          
 dregion(0,0,5,pi/2,5*[-1,1,-1,1])            
 plot(real(pl),imag(pl),'x',real(plCL),imag(plCL),'*')          
%-----
%eof 

Note B41 補題

● {\bf Projection\ Lemma}

\displaystyle{(1)\quad \exists \Theta:\ \Psi+P^T\Theta^TQ+Q^T\Theta P < 0 \Leftrightarrow \left\{\begin{array}{l} W_P^T\Psi W_P<0 \quad (PW_P=0)\\ W_Q^T\Psi W_Q<0 \quad (QW_Q=0) \end{array}\right. }

実際

\displaystyle{(2)\quad \exists U_{PQ}:\ \left[\begin{array}{c} P \\ Q \end{array}\right]U_{PQ}=0 \quad\Rightarrow\quad \left\{\begin{array}{l} \exists U_{P}:\ P\underbrace{ \left[\begin{array}{cc} U_{PQ} & U_P \end{array}\right] }_{W_P}=0\\ \exists U_{Q}:\ Q\underbrace{ \left[\begin{array}{cc} U_{PQ} & U_Q \end{array}\right] }_{W_Q}=0\\ \end{array}\right. }

を満足するU_{PQ},U_P,U_Qを定めますと、次が成り立ちます。

\displaystyle{(3)\quad T= \left[\begin{array}{cccc} U_{PQ} & U_P & U_Q & V \end{array}\right] \quad\Rightarrow\quad \left\{\begin{array}{l} PT= \left[\begin{array}{cccc} 0 & 0 & P_3 & P_4 \end{array}\right]\\ QT= \left[\begin{array}{cccc} 0 & Q_2 & 0 & Q_4 \end{array}\right] \end{array}\right. }

このTを用いて次が成り立ちます。

\displaystyle{(4)\quad \Psi+P^T\Theta^TQ+Q^T\Theta P < 0 \ \Leftrightarrow\ T^T\Psi T+(PT)^T\Theta^T(QT)+(QT)^T\Theta (PT) < 0 }
\displaystyle{ \Leftrightarrow \left[\begin{array}{cccc} \Psi_{11}   & \Psi_{12} & \Psi_{13} & \Psi_{14} \\ \Psi_{12}^T & \Psi_{22} & \Psi_{23}& \Psi_{24}\\ \Psi_{13}^T & \Psi_{23}^T & \Psi_{33} & \Psi_{34}\\ \Psi_{14}^T & \Psi_{24}^T & \Psi_{34}^T & \Psi_{44} \end{array}\right] +\left[\begin{array}{cccc} 0 & 0 & 0 & 0 \\ 0 &  0 & 0 & 0 \\ 0 & \Theta_{11}^T & 0 & \Theta_{12}^T \\ 0 & \Theta_{21}^T & 0 & \Theta_{22}^T \end{array}\right] +\left[\begin{array}{cccc} 0 & 0 & 0 & 0 \\ 0 & 0 & \Theta_{11} & \Theta_{21} \\ 0 & 0 & 0 & 0 \\ 0 & 0 & \Theta_{12} & \Theta_{22} \end{array}\right] < 0 }
\displaystyle{ \Leftrightarrow \left[\begin{array}{ccc|c} \Psi_{11}   & \Psi_{12} & \Psi_{13} & \Psi_{14} \\ \Psi_{12}^T & \Psi_{22} & \Psi_{23}+\Theta_{11} & \Psi_{24}+\Theta_{21} \\ \Psi_{13}^T & \Psi_{23}^T+\Theta_{11}^T & \Psi_{33} & \Psi_{34}+\Theta_{12} \\ \hline \Psi_{14}^T & \Psi_{24}^T+\Theta_{21}^T & \Psi_{34}^T+\Theta_{12}^T & \Psi_{44}+\Theta_{22}+\Theta_{22}^T \end{array}\right]<0}
\displaystyle{\Leftrightarrow \left\{\begin{array}{l} \left[\begin{array}{cccc} \Psi_{11}   & \Psi_{12} & \Psi_{13} \\ \Psi_{12}^T & \Psi_{22} & \Psi_{23}+\Theta_{11} \\ \Psi_{13}^T & \Psi_{23}^T+\Theta_{11}^T & \Psi_{33} \end{array}\right] < 0 \\ \quad\\ \Psi_{44}+\Theta_{22}+\Theta_{22}^T-\\ \left[\begin{array}{c} \Psi_{14} \\ \Psi_{24}+\Theta_{21} \\ \Psi_{34}+\Theta_{12} \end{array}\right]^T \left[\begin{array}{cccc} \Psi_{11}   & \Psi_{12} & \Psi_{13} \\ \Psi_{12}^T & \Psi_{22} & \Psi_{23}+\Theta_{11} \\ \Psi_{13}^T & \Psi_{23}^T+\Theta_{11}^T & \Psi_{33} \end{array}\right]^{-1} \left[\begin{array}{c} \Psi_{14} \\ \Psi_{24}+\Theta_{21}^T \\ \Psi_{34}+\Theta_{12}^T \end{array}\right] < 0 \end{array}\right. }

この第2式は、与えられた\Theta_{11},\Theta_{12},\Theta_{21}に対して、\Theta_{22}=Q_4^T\Theta P_4を適当に選んで、常に満足させることができます。一方、第1式は

\displaystyle{(5)\quad \begin{array}{l} \left[\begin{array}{ccc} I & 0 & 0 \\ -\Psi_{12}^T\Psi_{11}^{-1} & I & 0 \\ -\Psi_{13}^T\Psi_{11}^{-1} & 0 & I \end{array}\right] \left[\begin{array}{cccc} \Psi_{11}   & \Psi_{12} & \Psi_{13} \\ \Psi_{12}^T & \Psi_{22} & \Psi_{23}+\Theta_{11} \\ \Psi_{13}^T & \Psi_{23}^T+\Theta_{11}^T & \Psi_{33} \end{array}\right]\\ \times \left[\begin{array}{ccc} I & -\Psi_{11}^{-1}\Psi_{12} & -\Psi_{11}^{-1}\Psi_{13} \\ 0 & I & 0 \\ 0 & 0 & I \end{array}\right]<0 \end{array} }
\displaystyle{ \Leftrightarrow \left[\begin{array}{ccc} \Psi_{11}   & 0 & 0 \\ 0 & \Psi_{22}-\Psi_{12}^T\Psi_{11}^{-1}\Psi_{12} & \Theta_{11}+\Psi_{23}-\Psi_{12}^T\Psi_{11}^{-1}\Psi_{13} \\ 0 & \Theta_{11}^T+\Psi_{23}^T-\Psi_{13}^T\Psi_{11}^{-1}\Psi_{12} & \Psi_{33}-\Psi_{13}^T\Psi_{11}^{-1}\Psi_{13} \end{array}\right] < 0 }

ここで、\Theta_{11}=Q_2^T\Theta P_3

\displaystyle{(6)\quad \Theta_{11}+\Psi_{23}-\Psi_{12}^T\Psi_{11}^{-1}\Psi_{13}=0 }

を満足するように選ぶと、次の条件を得ます。

\displaystyle{(7)\quad \underbrace{ \left[\begin{array}{cc} \Psi_{11}   & \Psi_{12} \\ \Psi_{12}^T & \Psi_{22} \end{array}\right] }_{W_P^T\Psi W_P} < 0,\ \underbrace{ \left[\begin{array}{cc} \Psi_{11}   & \Psi_{13} \\ \Psi_{13}^T & \Psi_{33} \end{array}\right] }_{W_Q^T\Psi W_Q}< 0 }

● {\bf Completion\ Lemma}

\displaystyle{(8)\quad \begin{array}{l} \underbrace{ \left[\begin{array}{cc} S & N \\ X & S' \end{array}\right] }_{W} \underbrace{ \left[\begin{array}{cc} R & M \\ Y & R' \end{array}\right] }_{V=W^{-1}} = \left[\begin{array}{cc} I & 0 \\ 0 & I \end{array}\right] \quad(I=SR+NY=SR-NS'^{-1}XR)\\ \underbrace{ \left[\begin{array}{cc} R & M \\ Y & R' \end{array}\right] }_{V} \underbrace{ \left[\begin{array}{cc} S & N \\ X & S' \end{array}\right] }_{W=V^{-1}} = \left[\begin{array}{cc} I & 0 \\ 0 & I \end{array}\right] \quad(I=RS+MX=RS-MR'^{-1}YS) \end{array} }

が与えられるとき、次が成り立ちます。

\displaystyle{(9)\quad W+W^T>0 \Leftrightarrow V+V^T>0 \Leftrightarrow \left\{\begin{array}{l} R+R^T>0\\ S+S^T>0 \end{array}\right. }

実際

\displaystyle{(10)\quad \left\{\begin{array}{l} I=SR-NS'^{-1}XR\\ I=RS-MR'^{-1}YS \end{array}\right. \Rightarrow \left\{\begin{array}{l} S-R^{-1}=NS'^{-1}X\\ R-S^{-1}=MR'^{-1}Y \end{array}\right. }

に注意して

\displaystyle{(11)\quad S-R^{-1}=L_{\ell}L_r }

のように分解し、N=L_{\ell}S', X=L_rと選ぶと

\displaystyle{(12)\quad 0< \underbrace{ \left[\begin{array}{cc} S & L_{\ell}S' \\ L_r & S' \end{array}\right] }_W + \underbrace{ \left[\begin{array}{cc} S^T & L_r^T \\ S'\,^TL_{\ell}^T & S'\,^T \end{array}\right] }_{W^T} }
\displaystyle{ = \underbrace{ \left[\begin{array}{cc} S+S^T & L_r^T \\ L_r & 0 \end{array}\right] }_{\Psi} + \underbrace{ \left[\begin{array}{c} 0  \\ I \end{array}\right] }_{P^T} \underbrace{ S'\,^T }_{\Theta^T} \underbrace{ \left[\begin{array}{cc} L_\ell^T & I \end{array}\right] }_{Q} + \underbrace{ \left[\begin{array}{c} L_{\ell}  \\ I \end{array}\right] }_{Q^T} \underbrace{ S' }_{\Theta} \underbrace{ \left[\begin{array}{cc} 0 & I \end{array}\right] }_{P}
\Leftrightarrow \left\{\begin{array}{l} \underbrace{ \left[\begin{array}{cc} I & 0 \end{array}\right] }_{W_P^T} \underbrace{ \left[\begin{array}{cc} S+S^T & L_r^T \\ L_r & 0 \end{array}\right] }_{\Psi} \underbrace{ \left[\begin{array}{c} I  \\ 0 \end{array}\right] }_{W_P}<0 \quad  (\underbrace{ \left[\begin{array}{cc} 0 & I \end{array}\right] }_{P} \underbrace{ \left[\begin{array}{c} I  \\ 0 \end{array}\right] }_{W_P}=0)\\ \underbrace{ \left[\begin{array}{cc} I & -L_\ell \end{array}\right] }_{W_Q^T} \underbrace{ \left[\begin{array}{cc} S+S^T & L_r^T \\ L_r & 0 \end{array}\right] }_{\Psi} \underbrace{ \left[\begin{array}{c} I  \\ -L_\ell^T \end{array}\right] }_{W_Q}<0 \quad  (\underbrace{ \left[\begin{array}{cc} L_\ell^T & I \end{array}\right] }_{Q} \underbrace{ \left[\begin{array}{c} I  \\ -L_\ell^T \end{array}\right] }_{W_Q}=0)\\ \end{array}\right. }
\Leftrightarrow \left\{\begin{array}{l} S+S^T<0 \\ \underbrace{S-L_\ell L_r}_{R^{-1}}+ \underbrace{S^T-L_r^TL_\ell^T}_{R^{-T}}<0 \Leftrightarrow R+R^T<0 \end{array}\right. }

一方、

\displaystyle{(13)\quad R-S^{-1}=L_{\ell}L_r }

のように分解し、M=L_{\ell}R', Y=L_rと選ぶと

\displaystyle{(14)\quad 0< \underbrace{ \left[\begin{array}{cc} R & L_{\ell}R' \\ L_r & R' \end{array}\right] }_V + \underbrace{ \left[\begin{array}{cc} R^T & L_r^T \\ R'\,^TL_{\ell}^T & R'\,^T \end{array}\right] }_{V^T} }
\displaystyle{ = \underbrace{ \left[\begin{array}{cc} R+R^T & L_r^T \\ L_r & 0 \end{array}\right] }_{\Psi} + \underbrace{ \left[\begin{array}{c} 0  \\ I \end{array}\right] }_{P^T} \underbrace{ R'\,^T }_{\Theta^T} \underbrace{ \left[\begin{array}{cc} L_\ell^T & I \end{array}\right] }_{Q} + \underbrace{ \left[\begin{array}{c} L_{\ell}  \\ I \end{array}\right] }_{Q^T} \underbrace{ R' }_{\Theta} \underbrace{ \left[\begin{array}{cc} 0 & I \end{array}\right] }_{P}
\Leftrightarrow \left\{\begin{array}{l} \underbrace{ \left[\begin{array}{cc} I & 0 \end{array}\right] }_{W_P^T} \underbrace{ \left[\begin{array}{cc} R+R^T & L_r^T \\ L_r & 0 \end{array}\right] }_{\Psi} \underbrace{ \left[\begin{array}{c} I  \\ 0 \end{array}\right] }_{W_P}<0 \quad  (\underbrace{ \left[\begin{array}{cc} 0 & I \end{array}\right] }_{P} \underbrace{ \left[\begin{array}{c} I  \\ 0 \end{array}\right] }_{W_P}=0)\\ \underbrace{ \left[\begin{array}{cc} I & -L_\ell \end{array}\right] }_{W_Q^T} \underbrace{ \left[\begin{array}{cc} R+R^T & L_r^T \\ L_r & 0 \end{array}\right] }_{\Psi} \underbrace{ \left[\begin{array}{c} I  \\ -L_\ell^T \end{array}\right] }_{W_Q}<0 \quad  (\underbrace{ \left[\begin{array}{cc} L_\ell^T & I \end{array}\right] }_{Q} \underbrace{ \left[\begin{array}{c} I  \\ -L_\ell^T \end{array}\right] }_{W_Q}=0)\\ \end{array}\right. }
\Leftrightarrow \left\{\begin{array}{l} R+R^T<0 \\ \underbrace{S-L_\ell L_r}_{S^{-1}}+ \underbrace{R^T-L_r^TL_\ell^T}_{S^{-T}}<0 \Leftrightarrow S+S^T<0 \end{array}\right. }

●特に、S=S^T,R=R^T,S'=S'\,^T,R'=R'\,^T かつ

\displaystyle{(15)\quad \begin{array}{l} \underbrace{ \left[\begin{array}{cc} S & N \\ N^T & S' \end{array}\right] }_W \underbrace{ \left[\begin{array}{cc} R & M \\ M^T & R' \end{array}\right] }_{V=W^{-1}} = \left[\begin{array}{cc} I & 0 \\ 0 & I \end{array}\right] \quad(SR+NM^T=I) \\ \underbrace{ \left[\begin{array}{cc} R & M \\ M^T & R' \end{array}\right] }_{V} \underbrace{ \left[\begin{array}{cc} S & N \\ N^T & S' \end{array}\right] }_{W=V^{-1}} = \left[\begin{array}{cc} I & 0 \\ 0 & I \end{array}\right] \quad(RS+MN^T=I) \end{array} }

のときは

\displaystyle{(16)\quad W>0 \quad\Leftrightarrow\quad V>0 \quad\Leftrightarrow\quad R>0,\ S>0 }

となりますが、RS

\displaystyle{(17)\quad \left\{\begin{array}{l} S-R^{-1}=NS'^{-1}N^T>0\\ R-S^{-1}=MR'^{-1}M^T>0 \end{array}\right. }

を考慮して、次の命題を得ます。

\displaystyle{(15)\quad W>0 \quad\Leftrightarrow\quad V>0 \quad\Leftrightarrow\quad \left[\begin{array}{cc} R & I \\ I & S \end{array}\right]>0 }

●以上では、次のシュール補元に関する公式を多用しました。

\displaystyle{\boxed{ \begin{array}{lll} && \left[\begin{array}{cc} P & M \\ M^T & Q \end{array}\right]<0\\ &\Leftrightarrow& P-MQ^{-1}M^T<0,\ Q<0\\ &\Leftrightarrow& P<0,\ Q-M^TP^{-1}M<0 \end{array} }} \displaystyle{\boxed{ \begin{array}{lll} && \left[\begin{array}{cc} P & M \\ M^T & Q \end{array}\right]>0\\ &\Leftrightarrow& MQ^{-1}M^T-P>0,\ Q>0\\ &\Leftrightarrow& P>0,\ M^TP^{-1}M-Q>0 \end{array} }}

状態FB用LMI(H2制御)

状態FB用LMI(H2制御)…Homework

[1] n次系\dot{x}=Ax+Bu,\ y=CxH_2ノルムが\gammaより小となるためのLMI条件は、次の通りでした。

\displaystyle{(1)\quad \begin{array}{l} \displaystyle{{\rm tr} (CW_cC^T)<\gamma^2\quad(W_c=\int_0^\infty \exp(At)BB^T\exp(A^Tt)dt)}\\\\ \displaystyle{\Leftrightarrow \exists X_c>0,\ Q_c>0:\\ \left[\begin{array}{cc} A^TX_c+X_cA & X_cB  \\ B^TX_c & -I  \end{array}\right]<0,\  \left[\begin{array}{cc} X_c & C^T  \\ C & Q_c  \end{array}\right]>0,\  {\rm tr}(Q_c)<\gamma^2}\\\\ \displaystyle{\Leftrightarrow \exists Y_c>0,\ Q_c>0:\\ \left[\begin{array}{cc} Y_cA^T+AY_c & B \\ B^T & -I \end{array}\right]<0,\  \left[\begin{array}{cc} Y_c & Y_cC^T  \\ CY_c & Q_c  \end{array}\right]>0,\  {\rm tr}(Q_c)<\gamma^2} \end{array}}

いま、次の2ポート表現されたn次系を考えます。

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

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

\displaystyle{(3)\quad K: u_2=-Fy_2 }

による閉ループ系

\displaystyle{(4)\quad P_{CL}: \left\{\begin{array}{l} \dot{x}=\underbrace{(A-B_2F)}_{A_{CL}}x+\underbrace{B_1}_{B_{CL}}u_1 \\ y_1= \underbrace{ \left[\begin{array}{c} C\\ -F \end{array}\right] }_{C_{CL}=C_1-D_{12}F} x \end{array}\right. }

において、そのH_2ノルムが\gammaより小、すなわち

\displaystyle{(5)\quad {\rm tr} (C_{CL}W_cC_{CL}^T)<\gamma^2\quad(W_c=\int_0^\infty \exp(A_{CL}t)B_{CL}B_{CL}^T\exp(A_{CL}^Tt)dt)} }

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

この問題のLMI条件は、次のようになります。

\displaystyle{(6)\quad \begin{array}{l} \exists Y_{CL}>0,\ Q>0:\\ \left[\begin{array}{cc} Y_{CL}A_{CL}^T+A_{CL}Y_{CL} & B_{CL} \\ B_{CL}^T & -I \end{array}\right]<0,\\  \left[\begin{array}{cc} Y_{CL} & Y_{CL}C_{CL}^T  \\ C_{CL}Y_{CL} & Q \end{array}\right]>0,\\  {\rm tr}(Q)<\gamma^2 \end{array} }

すなわち

\displaystyle{(7)\quad \begin{array}{l} \displaystyle{\exists Y>0,\ Q>0:\\ \left[\begin{array}{cc} Y(A-B_2F)^T+(A-B_2F)Y & B_1 \\ B_1^T & -I \end{array}\right]<0,\\  \left[\begin{array}{cc} Y & Y(C_1-D_{12}F)^T  \\ (C_1-D_{12}F)Y & Q  \end{array}\right]>0,\\  {\rm tr}(Q)<\gamma^2} \end{array}}

ここで、変数変換Z_c=FY_cを行うと、次のようなY_cZ_cに関するLMIとなります。

\displaystyle{(8)\quad \begin{array}{l} \displaystyle{\exists Y>0,\ Q>0:\\ \left[\begin{array}{cc} (AY-B_2Z)^T+AY-B_2Z & B_1 \\ B_1^T & -I \end{array}\right]<0,\\  \left[\begin{array}{cc} Y & (C_1Y-D_{12}Z)^T  \\ C_1Y-D_{12}Z & Q  \end{array}\right]>0,\\  {\rm tr}(Q)<\gamma^2} \end{array}}

これを解いてYZを求め、次式によって状態フィードバックゲインを決定します。

\displaystyle{(9)\quad F=ZY^{-1} }

演習B34…Flipped Classroom
1^\circ 次のコードを参考にして、H_2制御(状態FB)を求める関数を作成せよ。

MATLAB
%sf_syn_lmi7.m 
%----- 
%A=[0 1;-1 -2*0.01]; B1=[0;1]; B2=B1;
%C1=[1 0;0 0]; D11=[0;0]; D12=[0;1]; 
 A=1; B1=1; B2=B1; 
 C1=[1;0]; D11=[0;0]; D12=[0;1];
 [n,m]=size(B2);  p=1;
%----- 
 setlmis([]);
 gam=lmivar(1,[1 0]); 
 Q=lmivar(1,[p 1]); 
 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,0],-1);         %#1:-I 
%----- 
 lmi2=newlmi;
 lmiterm([-lmi2,1,1,Y],1,1);       %#2:Y 
 lmiterm([-lmi2,2,1,Y],C1,1);      %#2:C1*Y
 lmiterm([-lmi2,2,1,Z],-D12,1);    %#2:-D12*Z
 lmiterm([-lmi2,2,2,Q],1,1);       %#2:Q
%----- gam-tr(Q)>0
 CT=zeros(1,p*(p+1)/2); 
 for i=1:p, j=(i+1)*i/2; CT(j)=1; end
 lmi3=newlmi;   
 lmiterm([-lmi3 1 1 gam],1,1);     %#3:gam  
 lmiterm([-lmi3 1 1 Q],-CT,1);     %#3:-tr(Q)   
%----- 
 LMIs=getlmis; 
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
 gam=dec2mat(LMIs,xopt,gam)
 Q=dec2mat(LMIs,xopt,Q)   
 Y=dec2mat(LMIs,xopt,Y)  
 Z=dec2mat(LMIs,xopt,Z)  
 F=Z/Y
 [Fopt,plopt]=opt(A,B1,C1(1,:),1,1)
%----- 
 pl=eig(A-B2*F)
 close all,figure(1) 
 dregion(0,0,20,pi/4,20*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'*') 
 figure(2) 
 ol=ltisys(A,B1,C1,D11); 
 cl=ltisys(A-B2*F,B1,C1-D12*F,D11); 
 om=logspace(-2,2,200); 
 splot(ssub(cl,1,1),'sv',om),hold on 
 splot(ssub(ol,1,1),'sv',om),grid 
%----- 
%eof

状態FB用LMI(H∞制御)

状態FB用LMI(H∞制御)…Homework

[1] n次系\dot{x}=Ax+Bu,\ y=Cx+DuH_\inftyノルムが\gammaより小となるためのLMI条件は、次の通りでした。

\displaystyle{(15)\quad \begin{array}{lll} && \sup_{\omega\in{\rm\bf R}}||\hat{G}(j\omega)||_2<\gamma \nonumber\\ &\Leftrightarrow& \exists X>0:\ \left[\begin{array}{ccc} A^TX+XA & XB & C^T \\ B^TX & -\gamma I & D^T \\ C & D & -\gamma I \end{array}\right]<0 \nonumber\\ &\Leftrightarrow& \exists Y>0:\ \left[\begin{array}{ccc} YA^T+AY & B & YC^T \\ B^T & -\gamma I & D^T \\ CY & D & -\gamma I \end{array}\right]<0\nonumber \end{array} }

ただし

\displaystyle{(16)\quad \hat{G}(s)=C(sI-A)^{-1}B+D }


図1 2ポートシステム

いま、次の2ポート表現されたn次系を考えます。

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

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

\displaystyle{(18)\quad K: u_2=-Fy_2 }

による閉ループ系

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

において、そのH_\inftyノルムが\gammaより小、すなわち

\displaystyle{(19)\quad \sup_{\omega\in{\rm\bf R}} \underbrace{||\hat{P}_{CL}(j\omega)||_2}_{\sigma_1(\hat{P}_{CL}(j\omega))} <\gamma }

ただし

\displaystyle{(20)\quad \hat{P}_{CL}(s)= \left[\begin{array}{c} \hat{G}_y(s)\\ \hat{G}_u(s) \end{array}\right]= \left[\begin{array}{c} C(sI-A-B_2F)^{-1}B_1\\ -F(sI-A-B_2F)^{-1}B_1 \end{array}\right] }

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

この問題のLMI条件は、次のようになります。

\displaystyle{(21)\quad \exists Y>0:\ }
\displaystyle{ \left[\begin{array}{ccc} Y(A-B_2F)^T+(A-B_2F)Y & B_1 & Y(C_1-D_{12}F)^T \\ B_1^T & -\gamma I & D_{11}^T \\ (C_1-D_{12}F)Y & D_{11} & -\gamma I \end{array}\right]<0 }

ここで、変数変換Z=FYを行うと、次のようなYZに関するLMIとなります。

\displaystyle{(22)\quad \exists Y>0:\ }
\displaystyle{ \left[\begin{array}{ccc} (AY-B_2Z)^T+AY-B_2Z & B_1 & (C_1Y-D_{12}Z)^T \\ B_1^T & -\gamma I & D_{11}^T \\ C_1Y-D_{12}Z & D_{11} & -\gamma I \end{array}\right]<0 }

これを解いてYZを求め、次式によって状態フィードバックゲインを決定します。

\displaystyle{(23)\quad F=ZY^{-1} }

演習B33…Flipped Classroom
1^\circ 次のコードを参考にして、H_\infty制御(状態FB)を求める関数を作成せよ。

MATLAB
%sf_syn_lmi5.m 
%----- 
 A=[0 1;-1 -2*0.01]; B1=[0;1]; B2=B1;
 C1=[1 0;0 0]; D11=[0;0]; D12=[0;1]; 
 [n,m]=size(B2);  
%----- 
 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],1,1);         %#2:Y   
%----- 
 lmi3=newlmi;
 lmiterm([lmi3,1,1,gam],1,1);        %#3:gam 
 lmiterm([-lmi3,1,1,0],1e3);         %#3:1000    
%----- 
 LMIs=getlmis; 
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
 Y=dec2mat(LMIs,xopt,Y);  
 Z=dec2mat(LMIs,xopt,Z);  
 F=Z/Y;  
%----- 
 pl=eig(A-B2*F)
 close all,figure(1) 
 dregion(0,0,20,pi/4,20*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'*') 
 figure(2) 
 ol=ltisys(A,B1,C1,D11); 
 cl=ltisys(A-B2*F,B1,C1-D12*F,D11); 
 om=logspace(-2,2,200); 
 splot(ssub(cl,1,1),'sv',om),hold on 
 splot(ssub(ol,1,1),'sv',om),grid 
%----- 
%eof

2^\circ 上の2次振動系のH_\infty制御について、閉ループ系の固有値に制約を付けた場合の効果を確かめよ。

MATLAB

%sf_syn_lmi6.m 
%----- 
 clear all, close all
 A=[0 1;-1 -2*0.01]; B1=[0;1]; B2=B1;
 C1=[1 0;0 0]; D11=[0;0]; D12=[0;1]; 
 [n,m]=size(B2);  
%----- 
 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 
%----- 
 alpha=0.1;
 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   
%----- 
 r=2;
 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  
%----- 
 theta=pi/4; sth=sin(theta); cth=cos(theta);
 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; 
 cobj=zeros(1,decnbr(LMIs)); 
 cobj(1)=1; 
 [cost,xopt]=mincx(LMIs,cobj); 
 gopt=dec2mat(LMIs,xopt,gam);  
 Y=dec2mat(LMIs,xopt,Y);  
 Z=dec2mat(LMIs,xopt,Z);  
 F=Z/Y;  
%----- 
 pl=eig(A-B2*F)
 close all,figure(1) 
 dregion(alpha,0,r,theta,r*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'*') 
 figure(2) 
 ol=ltisys(A,B1,C1,D11); 
 cl=ltisys(A-B2*F,B1,C1-D12*F,D11); 
 om=logspace(-2,2,200); 
 splot(ssub(cl,1,1),'sv',om),hold on 
 splot(ssub(ol,1,1),'sv',om),grid 
%----- 
%eof

状態FB用LMI(固有値制約)

状態FB用LMI(固有値制約)…Homework

[0] n次系\dot{x}=Ax+Buに対する状態フィードバックu=-Fxによる閉ループ系\dot{x}=(A-BF)xにおいて、

\displaystyle{(1)\quad \lambda(A-BF)\subset{\cal D}_i\quad(i=1,2,3)}

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


図1 領域{\cal D}={\cal D}_1\cup{\cal D}_2\cup{\cal D}_3

[1] \lambda(A)\subset{\cal D}_1となるLMI条件は、次の通りでした。

\displaystyle{(2) \begin{array}{lll} &&\lambda(A)\subset {\cal D}_1=\{s=x+jy\in{\rm\bf C}: 2\alpha+s+s^*<0 \}\\ &\Leftrightarrow& \exists X>0:\ 2\alpha X+XA+A^TX<0\\ &\Leftrightarrow& \exists Y>0:\ 2\alpha Y+AY+YA^T<0 \end{array} }

したがって、\lambda(A-BF)\subset{\cal D}_1となるLMI条件は、次のようになります。

\displaystyle{(3)\quad \exists Y>0:\ 2\alpha Y+(A-BF)Y+Y(A-BF)^T<0 }

これは、未知行列FYの積FYをもつので、LMIではなく、lmisolverを用いて解くことができません。しかしながら、変数変換Z=FYを行うと、次のようなYZに関するLMIとなります。

\displaystyle{(4)\quad \exists Y>0:\ 2\alpha Y+AY-BZ+(AY-BZ)^T<0 }

これを解いてYZを求め、次式によって状態フィードバックゲインを決定します。

\displaystyle{(5)\quad F=ZY^{-1} }

[2] \lambda(A)\subset{\cal D}_2となるLMI条件は、次の通りでした。

\displaystyle{(6)\quad \begin{array}{lll} &&\lambda(A)\subset {\cal D}_2=\{s=x+jy\in{\rm\bf C}: \left[\begin{array}{cc} -r & s \\ s^* & -r \end{array}\right] <0 \}\nonumber\\ &\Leftrightarrow& \exists X>0:\ \left[\begin{array}{cc} -rX & XA \\ A^TX & -rX \end{array}\right]<0 \nonumber\\ &\Leftrightarrow& \exists Y>0:\ \left[\begin{array}{cc} -rY & AY \\ YA^T & -rY \end{array}\right]<0\nonumber \end{array} }

したがって、\lambda(A-BF)\subset{\cal D}_2となるLMI条件は、次のようになります。

\displaystyle{(7)\quad \exists Y>0:\ \left[\begin{array}{cc} -rY & (A-BF)Y \\ Y(A-BF)^T & -rY \end{array}\right]<0 }

ここで、変数変換Z=FYを行うと、次のようなYZに関するLMIとなります。

\displaystyle{(8)\quad \exists Y>0:\ \left[\begin{array}{cc} -rY & AY-BZ \\ (AY-BZ)^T & -rY \end{array}\right]<0 }

これを解いてYZを求め、次式によって状態フィードバックゲインを決定します。

\displaystyle{(9)\quad F=ZY^{-1} }

[3] \lambda(A)\subset{\cal D}_3となるLMI条件は、次の通りでした。

\displaystyle{(10) \begin{array}{lll} &&\lambda(A)\subset {\cal D}_3=\{s=x+jy\in{\rm\bf C}:\\ && \left[\begin{array}{cc} \sin\theta & \cos\theta \\ -\cos\theta & \sin\theta \end{array}\right]s + \left[\begin{array}{cc} \sin\theta & \cos\theta \\ -\cos\theta & \sin\theta \end{array}\right]^Ts^* <0 \}\nonumber\\ &&\Leftrightarrow \exists X>0:\ \left[\begin{array}{cc} \sin\theta(XA+A^TX) & \cos\theta(XA-A^TX) \\ -\cos\theta(XA-A^TX) & \sin\theta(XA+A^TX) \end{array}\right] <0 \nonumber\\ &&\Leftrightarrow \exists Y>0:\ \left[\begin{array}{cc} \sin\theta(AY+YA^T) & \cos\theta(AY-YA^T) \\ -\cos\theta(AY-YA^T) & \sin\theta(AY+YA^T) \end{array}\right] <0\nonumber \end{array} }

したがって、\lambda(A-BF)\subset{\cal D}_3となるLMI条件は、次のようになります。

\displaystyle{(11)\quad \exists Y>0:\ }
\displaystyle{ \left[\begin{array}{cc} \sin\theta((A-BF)Y+Y(A-BF)^T) & \cos\theta((A-BF)Y-Y(A-BF)^T) \\ -\cos\theta((A-BF)Y-Y(A-BF)^T) & \sin\theta((A-BF)Y+Y(A-BF)^T) \end{array}\right] <0 }

ここで、変数変換Z=FYを行うと、次のようなYZに関するLMIとなります。

\displaystyle{(12)\quad \exists Y>0:\ }
\displaystyle{ \left[\begin{array}{cc} \sin\theta(AY-BZ+(AY-BZ)^T) & \cos\theta(AY-BZ-(AY-BZ)^T) \\ -\cos\theta(AY-BZ-(AY-BZ)^T) & \sin\theta(AY-BZ+(AY-BZ)^T) \end{array}\right]<0 }

これを解いてYZを求め、次式によって状態フィードバックゲインを決定します。

\displaystyle{(13)\quad F=ZY^{-1} }

演習B32…Flipped Classroom

1^\circ 次のコードを参考にして、\lambda(A-BF)\subset{\cal D}を達成する状態FBを求める関数を作成せよ。

MATLAB
%sf_syn_lmi4.m
%----- 
 clear all, close all
 A=[0 1;0 0]; B=[0;1];
 [n,m]=size(B);  
%----- 
 setlmis([]); 
 Y=lmivar(1,[n 1]);  
 Z=lmivar(2,[m n]);  
%----- 
 alpha=1;
 lmi1=newlmi;  
 lmiterm([lmi1,1,1,Y],A,1,'s');     %#1:A*Y+Y*A'   
 lmiterm([lmi1,1,1,Z],-B,1,'s');    %#1:-(B*Z+Z'*B')   
 lmiterm([lmi1,1,1,Y],2*alpha,1);   %#1:2*alpha*Y   
%----- 
 r=5;
 lmi2=newlmi;  
 lmiterm([lmi2,1,1,Y],-r,1);        %#2:-r*Y  
 lmiterm([lmi2,1,2,Y],A,1);         %#2:A*Y   
 lmiterm([lmi2,1,2,Z],-B,1);        %#2:-B*Z  
 lmiterm([lmi2,2,2,Y],-r,1);        %#2:-r*Y  
%----- 
 theta=pi/6; sth=sin(theta); cth=cos(theta);
 lmi3=newlmi;  
 lmiterm([lmi3 1 1 Y],sth*A,1,'s'); %#3:sth*(A*Y+Y*A')  
 lmiterm([lmi3 1 1 Z],-sth*B,1,'s');%#3:-sth*(B*Z+Z'*B')  
 lmiterm([lmi3 1 2 Y],cth*A,1);     %#3:cth*A*Y  
 lmiterm([lmi3 1 2 Y],1,-cth*A');   %#3:-cth*Y*A'  
 lmiterm([lmi3 1 2 Z],-cth*B,1);    %#3:-cth*B*Z  
 lmiterm([lmi3 1 2 -Z],1,cth*B');   %#3:cth*Z'*B'  
 lmiterm([lmi3 2 2 Y],sth*A,1,'s'); %#3:sth*(A*Y+Y*A')  
 lmiterm([lmi3 2 2 Z],-sth*B,1,'s');%#3:-sth*(B*Z+Z'*B')  
%----- 
 lmi4=newlmi;
 lmiterm([-lmi4 1 1 Y],1,1);        %#4:Y  
%----- 
 LMIs=getlmis; 
 [tmin,xfeas]=feasp(LMIs);   
 Y=dec2mat(LMIs,xfeas,Y);  
 Z=dec2mat(LMIs,xfeas,Z);  
 F=Z/Y;  
%----- 
 pl=eig(A-B*F)
 close all,figure(1)  
 dregion(alpha,0,r,theta,r*[-1,1,-1,1]) 
 plot(real(pl),imag(pl),'*') 
%----- 
%eof

状態FB用LMI(変数変換)

状態FB用LMI(変数変換)…Homework

[0] n次系\dot{x}=Ax+Buに対する状態フィードバックu=-Fxによる閉ループ系\dot{x}=(A-BF)xを安定化するように状態フィードバックゲインFを求める手順を復習しておきます。

いま、A_F=A-BFのジョルダン分解V\Lambda V^{-1}を仮定して

\displaystyle{(1)\quad A-BF=\underbrace{V\Lambda V^{-1}}_{A_F} \Rightarrow AV-V\Lambda=B\underbrace{FV}_{G} }

ここで、\Lambdaが対角行列の場合、A_Fの固有値\lambda_1',\cdots,\lambda_n'に対応する固有ベクトルをv_1,\cdots,v_nとして

\displaystyle{(2)\quad A \underbrace{ \left[\begin{array}{ccc} v_1&\cdots&v_n \end{array}\right] }_{V} - \underbrace{ \left[\begin{array}{ccc} v_1&\cdots&v_n \end{array}\right] }_{V} \underbrace{ {\rm diag}\{\lambda_1',\cdots,\lambda_m'\} }_{\Lambda}}

\displaystyle{= \left[\begin{array}{ccc} (A-\lambda_1'I_n)v_1&\cdots&(A-\lambda_n'I_n)v_n \end{array}\right] =B \underbrace{ \left[\begin{array}{ccc} g_1&\cdots&g_n \end{array}\right] }_{G} }

これより、もし\lambda_1',\cdots,\lambda_n'Aの固有値と一致しないならば、固有ベクトルの表現式として次式を得ます。

\displaystyle{(3)\quad \underbrace{ \left[\begin{array}{ccc} v_1&\cdots&v_n \end{array}\right] }_{V}= \left[\begin{array}{ccc} (A-\lambda_1'I_n)^{-1}Bg_1&\cdots&(A-\lambda_n'I_n)^{-1}Bg_n \end{array}\right] }

したがって、状態フィードバックゲイン行列Fを求める次の手順が考えられます。

1) A_Fの固有値\lambda_1',\cdots,\lambda_n'Aの固有値とは異なるように指定する。

2) A_Fの固有ベクトルv_1,\cdots,v_nを決める自由度g_1,\cdots,g_nを、(3)のVが正則になるように与える。

3) 次式で Fを求める。

\displaystyle{(4)\quad \boxed{F=GV^{-1}} }

以上の方法は、複素左半平面{\rm\bf LHP}内にある望ましい固有値

\displaystyle{(5)\quad \{\lambda_1',\cdots,\lambda_n'\}\subset{\rm\bf LHP} }

をピンポイントで指定しています。これに対して、以下では、複素左半平面内に望ましい領域を指定して、状態フィードバックを設計する方法について述べます。

[1] n次系\dot{x}=Ax+Buに対する状態フィードバックu=-Fxによる閉ループ系\dot{x}=(A-BF)xにおいて、

\displaystyle{(6)\quad \lambda(A-BF)\subset{\rm\bf LHP}}

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

\lambda(A)\subset{\rm\bf LHP}となるLMI条件(Y-LMIによる)は、次の通りでした。

\displaystyle{(7) \begin{array}{lll} &&\lambda(A)\subset{\rm\bf LHP}=\{s=x+jy\in{\rm\bf C}: s+s^*<0 \}\\ &\Leftrightarrow& \exists Y>0:\ AY+YA^T<0 \end{array} }

したがって、\lambda(A-BF)\subset{\rm\bf LHP}となるLMI条件は、次のようになります。

\displaystyle{(8)\quad \exists Y>0:\ (A-BF)Y+Y(A-BF)^T<0 }

これは、未知行列FYの積FYをもつので、LMIではなく、lmisolverを用いて解くことができません。しかしながら、変数変換Z=FYを行うと、次のようなYZに関するLMIとなります。

\displaystyle{(9)\quad \exists Y>0:\ AY-BZ+(AY-BZ)^T<0 }

これを解いてYZを求め、次式によって状態フィードバックゲインを決定します。

\displaystyle{(10)\quad F=ZY^{-1} }

●ちなみに、次のLMI条件(X-LMIによる)

\displaystyle{(11) \begin{array}{lll} &&\lambda(A)\subset{\rm\bf LHP}=\{s=x+jy\in{\rm\bf C}: s+s^*<0 \}\\ &\Leftrightarrow& \exists X>0:\ XA+A^TX<0 \end{array} }

を用いて、次式を得ます。

\displaystyle{(12)\quad \exists X>0:\ 2\alpha X+X(A-BF)+(A-BF)^TX<0\\ }

ここで、未知行列FXの積はXBFの形で表され、変数変換の手法を適用することができないことに注意してください。

演習B31…Flipped Classroom
1^\circ 次のコードを参考にして、安定化状態FBを求める関数を作成せよ。

MATLAB

%sf_syn_lmi0.m 
%----- 
 A=[0 1;0 0]; B=[0;1];
 [n,m]=size(B);  
%----- 
 setlmis([]); 
 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],-B,1,'s');    %#1:-(B*Z+Z'*B')   
%----- 
 lmi2=newlmi; 
 lmiterm([-lmi2 1 1 Y],1,1);        %#2:Y  
%----- 
 LMIs=getlmis;
 [tmin,xfeas]=feasp(LMIs);  
 Y=dec2mat(LMIs,xfeas,Y);  
 Z=dec2mat(LMIs,xfeas,Z);  
 F=Z/Y;  
%----- 
 pl=eig(A-B*F)
 close all,figure(1)  
 dregion(0,0,5,pi/2,5*[-1,1,-1,1])  
 plot(real(pl),imag(pl),'*')  
%----- 
%eof 

性能解析LMI(H2ノルム)

性能解析LMI(H2ノルム)…Homework

[1] 直達項をもたないn次系のH_2ノルムが\gammaより小である条件は{\rm\bf LMI}を用いて、次のように表されます。


図1 直達項をもたないn次系

\displaystyle{ \begin{array}{l} \displaystyle{{\rm tr} (CW_cC^T)<\gamma^2}\\\\ \displaystyle{\Leftrightarrow \exists X_c>0,\ Q_c>0:\\ (1a)\quad\left[\begin{array}{cc} A^TX_c+X_cA & X_cB  \\ B^TX_c & -I  \end{array}\right]<0,\  \left[\begin{array}{cc} X_c & C^T  \\ C & Q_c  \end{array}\right]>0,\  {\rm tr}(Q_c)<\gamma^2}\\\\ \displaystyle{\Leftrightarrow \exists Y_c>0,\ Q_c>0:\\ (1b)\quad \left[\begin{array}{cc} Y_cA^T+AY_c & Y_cB \\ B^TY_c & -I \end{array}\right]<0,\  \left[\begin{array}{cc} Y_c & Y_cC^T  \\ CY_c & Q_c  \end{array}\right]>0,\  {\rm tr}(Q_c)<\gamma^2} \end{array}}
\displaystyle{ \begin{array}{l} \displaystyle{{\rm tr} (B^TW_oB)<\gamma^2}\\\\ \displaystyle{\Leftrightarrow \exists X_o>0,\ Q_o>0:\\ (2a)\quad\left[\begin{array}{cc} AX_o+X_oA^T & X_oC^T  \\ CX_o & -I  \end{array}\right]<0,\  \left[\begin{array}{cc} X_o & B  \\ B^T & Q_o  \end{array}\right]>0,\  {\rm tr}(Q_o)<\gamma^2}\\\\ \displaystyle{\Leftrightarrow \exists Y_o>0,\ Q_o>0:\\ (2b)\quad\left[\begin{array}{cc} Y_oA+A^TY_o & Y_oC^T \\ CY_o & -I \end{array}\right]<0,\  \left[\begin{array}{cc} Y_o & Y_oB  \\ B^TY_o & Q_o  \end{array}\right]>0,\  {\rm tr}(Q_o)<\gamma^2} \end{array}}

ここで、W_cW_oはそれぞれ

(3)\quad \begin{array}{l} \displaystyle{W_c=\int_0^\infty \exp(At)BB^T\exp(A^Tt)dt}\\ \displaystyle{W_o=\int_0^\infty \exp(A^Tt)C^TC\exp(At)dt} \end{array} }

で与えられ、次式が成り立つことに注意します。

(4)\quad \begin{array}{l} {\rm tr} (CW_cC^T)={\rm tr} (B^TW_oB) \end{array} }

さて、W_cW_oはそれぞれリャプノフ方程式

\displaystyle{(5)\quad \begin{array}{l} W_cA^T+AW_c+BB^T=0\\ W_oA+A^TW_o+C^TC=0 \end{array} }

の解であることから

\displaystyle{(6)\quad \begin{array}{l} V_cA^T+AV_c+BB^T<0\\ V_oA+A^TV_o+C^TC<0 \end{array} }

を満たすV_cV_oに対して、X_c=V_c^{-1}X_o=V_o^{-1}とおくと

\displaystyle{(7)\quad \begin{array}{l} A^TX_c+X_cA+X_cBB^TX_c<0 \Leftrightarrow\  \left[\begin{array}{cc} A^TX_c+X_cA & X_cB \\ B^TX_c & -I \end{array}\right]<0 \\ AX_o+X_oA^T+X_oC^TCX_o<0 \Leftrightarrow\  \left[\begin{array}{cc} AX_o+X_oA^T & X_oC^T \\ CX_o & -I \end{array}\right]<0 \end{array} }

が成り立ちます。一方、(6)と(5)から

\displaystyle{(8)\quad \begin{array}{l} V_cA^T+AV_c+BB^T=(V_c-W_c)A^T+A(V_c-W_c)<0\\ V_oA+A^TV_o+C^T=(V_o-W_o)A+A^T(V_o-W_o)<0 \end{array} }

となって、次を得ます。

\displaystyle{(9)\quad \begin{array}{l} V_c-W_c=X_c^{-1}-W_c>0\\ V_o-W_o=X_o^{-1}-W_o>0 \end{array} }

以上の準備の下で、次を示します。

\displaystyle{(10)\quad \begin{array}{l} {\rm tr} (CW_cC^T)<\gamma^2 \Leftrightarrow\ \left[\begin{array}{cc} X_c & C^T \\ C & Q_c \end{array}\right]>0,\ {\rm tr} (Q_c)<\gamma^2\\ {\rm tr} (B^TW_oB)<\gamma^2 \Leftrightarrow\ \left[\begin{array}{cc} X_o & B \\ B^T & Q_o \end{array}\right]>0,\ {\rm tr} (Q_o)<\gamma^2 \end{array} }

まず必要性については、(9)から、十分小さな\epsilon>0を選んで

\displaystyle{(11)\quad \begin{array}{l} CX_c^{-1}C^T-(CW_cC^T+\epsilon I)>0 \Leftrightarrow\  \left[\begin{array}{cc} X_c & C^T \\ C & CW_cC^T+\epsilon I \end{array}\right]>0\\ B^TX_o^{-1}B-(B^TW_oB+\epsilon I)>0 \Leftrightarrow\  \left[\begin{array}{cc} X_o & B \\ B^T & B^TW_oB+\epsilon I \end{array}\right]>0 \end{array} }

および

(12)\quad \begin{array}{l} {\rm tr} (CW_cC^T+\epsilon I)<\gamma^2\\ {\rm tr} (B^TW_oB+\epsilon I)<\gamma^2 \end{array} }

を満足させることができます。ここで、Q_c=CW_cC^T+\epsilon IQ_o=B^TW_oB+\epsilon Iとおきます。次に十分性については、Q_c=CW_cC^TQ_o=B^TW_oBの場合を考えれば自明です。

●以上では、次のシュール補元に関する公式を多用しました。

\displaystyle{\boxed{ \begin{array}{lll} && \left[\begin{array}{cc} P & M \\ M^T & Q \end{array}\right]<0\\ &\Leftrightarrow& P-MQ^{-1}M^T<0,\ Q<0\\ &\Leftrightarrow& P<0,\ Q-M^TP^{-1}M<0 \end{array} }} \displaystyle{\boxed{ \begin{array}{lll} && \left[\begin{array}{cc} P & M \\ M^T & Q \end{array}\right]>0\\ &\Leftrightarrow& MQ^{-1}M^T-P>0,\ Q>0\\ &\Leftrightarrow& P>0,\ M^TP^{-1}M-Q>0 \end{array} }}

演習B23…Flipped Classroom

1^\circ 1次遅れ系に対して、適当な\gammaを設定し、H_2ノルムとの大小関係をチェックするプログラムを作成せよ。

MATLAB
%ana_lmi6.m
%------
 clear all, close all
 T=1; K=1;
 A=-1/T; B=K/T; 
 C=1; D=0; 
 n=1; m=1; p=1; 
 CT=1;
 gam=1 %input('gamma =  '); 
%------
 setlmis([]);
 X=lmivar(1,[n 1]);
 Q=lmivar(1,[n 1]);
%------
 lmi1=newlmi;   
 lmiterm([lmi1 1 1 X],1,A,'s'); %#1:X*A+A'*X 
 lmiterm([lmi1 1 2 X],1,B);     %#1:X*B 
 lmiterm([lmi1 2 2 0],-1);      %#1:-I
%------
 lmi2=newlmi;  
 lmiterm([-lmi2 1 1 X],1,1);    %#2:X 
 lmiterm([-lmi2 1 2 0],C');     %#2:C' 
 lmiterm([-lmi2 2 2 Q],1,1);    %#2:Q
%------ 
 lmi3=newlmi;   
 lmiterm([-lmi3 1 1 X],1,1);    %#3:X>0
%------ 
 lmi4=newlmi;   
 lmiterm([-lmi4 1 1 Q],1,1);    %#4:Q>0 
%------ 
 lmi5=newlmi;   
 lmiterm([lmi5 1 1 Q],CT,1);    %#5:tr(Q)=CT*Q
 lmiterm([lmi5 1 1 0],-gam^2);  %#5:-gam^2
%------ 
 LMIs=getlmis; 
 [tmin,xfeas]=feasp(LMIs);
 X=dec2mat(LMIs,xfeas,X) 
 Q=dec2mat(LMIs,xfeas,Q) 
%------
%eof