Main Content

idare

離散時間の代数リカッチ方程式に対する陰的ソルバー

説明

[X,K,L] = idare(A,B,Q,R,S,E) は、次の離散時間代数リカッチ方程式の一意の安定化解 X、状態フィードバック ゲイン K、および閉ループ固有値 L を計算します。

ATXAETXE(ATXB+S)(BTXB+R)1(ATXB+S)T+Q = 0

安定化解 X は、すべての固有値 L を単位円板内に配置します。

代数リカッチ方程式は、LQR/LQG 制御、H2∞ および H∞ 制御、カルマン フィルター処理、およびスペクトル分解や既約分解において重要な役割を果たします。

[X,K,L,info] = idare(___) は、離散時間の代数リカッチ方程式の解に関する追加情報を含む構造体 info も返します。

[___] = idare(___,'noscaling') は、組み込みのスケーリングをオフにしてスケーリング ベクトル info.Sx および info.Sr のすべての要素を 1 に設定します。スケーリングをオフにすると計算は高速化されますが、A,B,Q,R,S,E のスケーリングが不適切だと精度に悪影響が及ぶことがあります。

[___] = idare(___,'anti') は、すべての固有値 L を単位円板の外に配置する反安定化解 X を計算します。

すべて折りたたむ

この例では、次の行列のセットを考慮して離散時間の代数リカッチ方程式を解きます。

A=[-0.9-30.70.1]B=[11]Q=[1003]R=0.1.

idare を使用して安定解を求め、SE を既定値として上記の行列について解きます。

A = [-0.9,-0.3;0.7,0.1];
B = [1;1];
Q = [1,0;0,3];
R = 0.1;
[X,K,L,info] = idare(A,B,Q,R,[],[])
X = 2×2

    4.7687    0.9438
    0.9438    3.2369

K = 1×2

   -0.2216   -0.1297

L = 2×1

   -0.4460
   -0.0027

info = struct with fields:
        Sx: [2x1 double]
        Sr: 1
         U: [2x2 double]
         V: [2x2 double]
         W: [0.0232 0.0428]
    Report: 0

ここで、X は一意の安定化解であり、K には状態フィードバック ゲインが含まれ、L には閉ループ固有値をが含まれます。また、info には解に関する追加情報が記載されています。

この例では、次の行列のセットを考慮して離散時間の代数リカッチ方程式を解きます。

A=[-0.9-30.70.1]B=[11]Q=[1003]R=0.1.

'anti' オプションを使用して反安定化解を求め、SE を既定値として上記の行列について解きます。

A = [-0.9,-0.3;0.7,0.1];
B = [1;1];
Q = [1,0;0,3];
R = 0.1;
[X,K,L] = idare(A,B,Q,R,[],[],'anti')
X = 2×2

   -0.5423    0.4996
    0.4996   -0.5569

K = 1×2

 -118.0177  490.9023

L = 2×1

 -371.4426
   -2.2420

ここで、X は一意の反安定化解であり、K には状態フィードバック ゲインが含まれ、L には閉ループ固有値を含まれます。

入力引数

すべて折りたたむ

入力行列。行列として指定します。

行列 Q および R はエルミート行列でなければなりません。正方行列がその複素共役転置と等しい場合、つまり ai,j=a¯j,i である場合、これはエルミート行列です。

エルミート行列の詳細については、ishermitian を参照してください。

行列 E は非特異でなければなりません。

行列 RS、および E が省略されたり、[] に設定された場合、idare は次の既定値を使用します。

  • R = I

  • S = 0

  • E = I

入力 QR がスカラー値の場合、idare はこれらを単位行列の倍数として解釈します。

組み込みのスケーリングをオフにするオプション。'noscaling' として指定します。組み込みのスケーリングをオフにした場合、idare はスケーリングベクトル info.Sx および info.Sr のすべての要素を 1 に設定します。スケーリングをオフにすると計算は高速化されますが、A,B,Q,R,S,E のスケーリングが不適切だと精度に悪影響が及ぶことがあります。

反安定化解を計算するオプション。'anti' として指定します。このオプションを有効にすると、idare(A-B*K,E) のすべての固有値を単位円板の外に配置する反安定化解 X を計算します。

リカッチ微分方程式の完全な位相図を把握するには、一意の安定化と反安定化の両方が必要です。

出力引数

すべて折りたたむ

離散時間代数リカッチ方程式の一意の解。行列として返されます。

既定では、X は離散時間の代数リカッチ方程式の安定化解です。'anti' オプションが使用される場合、X は反安定化解になります。

有限の安定化解が存在しない場合、idareX[] を返します。

ペンシルが特異である場合、つまり [B;S;R] がランク落ちの場合、idare[] を返します。 (R2024a 以降)

状態フィードバック ゲイン。行列として返されます。

状態フィードバック ゲイン K は次のように計算されます。

K = (BTXB+R)1(BTXA+ST).

有限の安定化解が存在しない場合、idareK[] を返します。

ペンシルが特異である場合、つまり [B;S;R] がランク落ちの場合、idare[] を返します。 (R2024a 以降)

閉ループ固有値。行列として返されます。

閉ループ固有値 L は次のように計算されます。

L = eig(ABK,E).

有限の安定化解がない場合、idareXK[] を返します。XK が空の行列であっても、L は空ではありません。

ペンシルが特異である場合、つまり [B;S;R] がランク落ちの場合、idareL = NaN(n,1) を返します。 (R2024a 以降)

一意の解に関する情報。次のフィールドをもつ構造体として返されます。

  • Sx — 状態のスケーリングに使用される値のベクトル。

  • Sr — 行列 R のスケーリングに使用される値のベクトル。

  • UV、および W — 関連するスケーリングされた行列ペンシルの安定した不変部分空間の基底を表す値のベクトル。詳細については、アルゴリズムを参照してください。

  • Report — 以下のいずれかの値をもつスカラー。

    • 0 — 一意の解は正確です。

    • 1 — 解があまり正確でありません。

    • 2 — 解が有限でありません。

    • 3[L;1./L] で表されるシンプレクティック スペクトルが単位円上に固有値をもつため、解が見つかりません。

    • 4 — ペンシルが特異 ([B;S;R] がランク落ち) です。 (R2024a 以降)

制限

  • 有限安定化解 X が存在し有限であるためには、(A-zE,B) が可安定で、ER が可逆であり、[B;S;R] の列はフル ランクでなければなりません。一般的にはこれらの条件では不十分ですが、以下の条件が満たされる場合は十分となります。

    • [QSTSR]  0

    • [ABR1STQSR1ST] が検出可能

アルゴリズム

不変部分空間の基底

idare は次のペンシルで機能し、このペンシルの安定または反安定の有限固有値に関連付けられた不変部分空間の基底 [U;V;W] を計算します。

MzN = [A0BQETSST0R]z[E000AT00BT0]

データは、単位円の近傍にある固有値の感度を減らし、安定な不変部分空間と反安定の不変部分空間の間隔を大きくするために、自動的にスケーリングされます。

解、状態フィードバック ゲイン、およびスケーリング ベクトル間の関係

X と状態フィードバック ゲイン K は、次の一連の方程式によってスケーリング ベクトルと U,V,W に関係付けられています。

X = Dx VU1 Dx E1,K = Dr WU1 Dx,

ここで、

Dx = diag(Sx),Dr = diag(Sr).

バージョン履歴

R2019a で導入

すべて展開する

参考

| | | | | | (Robust Control Toolbox) | (Robust Control Toolbox) | | (Robust Control Toolbox) | (Robust Control Toolbox)