dare
(非推奨) 離散時間代数リカッチ方程式 (DARE) を解く
dare
は推奨されません。代わりに idare
を使用してください。詳細については、互換性についての考慮事項を参照してください。
構文
[X,L,G] = dare(A,B,Q,R)
[X,L,G] = dare(A,B,Q,R,S,E)
[X,L,G,report] = dare(A,B,Q,...)
[X1,X2,L,report] = dare(A,B,Q,...,'factor')
説明
[X,L,G] = dare(A,B,Q,R)
は、離散時間代数リカッチ (Riccati) 方程式の固有な安定解 X
を計算します。
関数 dare
はまた、ゲイン行列 と閉ループ固有値のベクトル L
を返します。ただし、
L=eig(A-B*G,E)
[X,L,G] = dare(A,B,Q,R,S,E)
は、次のようなより一般的な離散時間代数リカッチ (Riccati) 方程式を解きます。
または、R
が正則の場合、下記と等価です。
ここで、 です。R
、S
、および E
が省略されると、既定値 R=I
、S=0
、および E=I
が設定されます。
関数 dare
は、対応するゲイン行列
および閉ループ固有値のベクトル L
を返します。ただし、
L= eig(A-B*G,E)
[X,L,G,report] = dare(A,B,Q,...)
は、以下の値をもつ診断 report
を返します。
-
1
関連付けられたシンプレクティック ペンシルが、単位円上またはその近傍に固有値をもつ場合-
2
有限の安定化解X
が存在しない場合X
が存在しかつ有限である場合には、フロベニウス ノルム
[X1,X2,L,report] = dare(A,B,Q,...,'factor')
は、2 つの行列 X1
、X2
と、X = D*(X2/X1)*D
であるような対角のスケーリング行列 D を返します。ベクトル L は、閉ループ固有値を含みます。関連するシンプレクティック行列が単位円上に固有値をもつ場合、すべての出力は空です。
制限
(A, B) 組は可安定でなければなりません (つまり、単位円板外にある A の固有値はすべて可制御でなければなりません)。さらに、関連付けられたシンプレクティック ペンシルは、単位円上に固有値をもつことはできません。この状態を有効にするための十分条件は、S = 0 and R > 0 のときに (Q, A) が可検出であるか、または
アルゴリズム
関数 dare
は、[1] に記述されているアルゴリズムを実装しています。QZ アルゴリズムを使用して、拡張されたシンプレクティック ペンシルを縮小し、その安定した不変部分空間を計算します。
参考文献
[1] Arnold, W.F., III and A.J. Laub, "Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations," Proc. IEEE®, 72 (1984), pp. 1746-1754.