// Scilab用 2006/05/23 // Hinf制御の状態フィードバックゲインを求める. // システムの定義 A=[ 0 1; -1 0]; B1=[ 0 1 ]; B2=[ 0 1 ]; C1=[1 0]; D12 = [1]; //重みの定義 gg = 1; //可制御性の確認 disp(' '); if( rank( spec(cont_mat(A,B2)) ) > 0) disp('controllability is OK'); else disp('No controllability'); end //rankの確認 if rank(D12) < size(B2,2) disp('rank(D12) < input order') end // XA + A'X - X(B2(D12*D12')^(-1)B2'-gg^(-2)*B1*B1')X + C1'*C1 = 0の解 X を求める. //X = ricc(A,(B2*inv(D12*D12')*B2'-inv(gg^2)*B1*B1'),C1'*C1,'cont','schr'); X = ricc(A,(B2*inv(D12*D12')*B2'-inv(gg^2)*B1*B1'),C1'*C1,'cont'); // u = -B2Fx の F( = inv(D12*D12')*B2'X ) を求める. disp(' u = -B2Fx'); disp(' '); F = inv(D12*D12')*B2'*X