Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ordqz

QZ 分解で固有値の並べ替え

説明

[AAS,BBS,QS,ZS] = ordqz(AA,BB,Q,Z,select) は、[AA,BB,Q,Z] = qz(A,B) により生成される QZ 分解 Q*A*Z = AA および Q*B*Z = BB を並べ替え、並べ替えられた行列のペア (AAS,BBS) を直交行列 (QS,ZS) に沿って返して QS*A*ZS = AAS および QS*B*ZS = BBS が成立するようにします。

この並べ替えで、選択された固有値のクラスターは、疑似三角行列の組 (AAS,BBS) の最初の (左上の) 対角ブロックに現れます。ZS の最初の列は、対応する不変部分空間にまたがります。logical ベクトル select は、選択したクラスターを e(select) として指定します。ここで e = ordeig(AA,BB) です。

[AAS,BBS,QS,ZS] = ordqz(AA,BB,Q,Z,keyword) は、keyword で指定された領域のすべての固有値を含めるために、選択されるクラスターを設定します。

[AAS,BBS,QS,ZS] = ordqz(AA,BB,Q,Z,clusters) は複数のクラスターを同時に並べ替えます。ordqz は指定したクラスターを (AAS,BBS) の対角に沿って降順で並べ替え、その結果、最大のインデックスをもつクラスターが左上隅に現れます。

すべて折りたたむ

行列の組の QZ 分解を計算し、指定した固有値の順序に従って要素を並べ替えます。

行列 AB の組の QZ 分解 (一般化 Schur 分解) を求めます。この分解の結果、因子 AA=QAZ および BB=QBZ が得られます。

A = magic(5);
B = hilb(5);
[AA,BB,Q,Z] = qz(A,B)
AA = 5×5

   14.5272   -2.3517    8.5757   -0.2350   -1.4432
         0  -19.7471    2.1824    4.5417    7.2059
         0         0  -17.9538    8.9292   -9.6961
         0         0         0   30.3449  -47.9191
         0         0         0         0   32.4399

BB = 5×5

    0.0000    0.0005    0.0018    0.0465    0.2304
         0    0.0008    0.0199    0.1662    0.7320
         0         0    0.0210    0.1006   -0.1341
         0         0         0    0.0623   -1.1380
         0         0         0         0    0.7434

Q = 5×5

   -0.1743   -0.1099   -0.0789   -0.4690    0.8552
   -0.7567   -0.1151   -0.0846    0.6172    0.1617
   -0.4010    0.6782    0.5478   -0.2664   -0.0901
    0.4178   -0.0297    0.6473    0.4883    0.4089
   -0.2484   -0.7168    0.5173   -0.2995   -0.2593

Z = 5×5

    0.0057   -0.0424   -0.2914   -0.5860   -0.7549
   -0.1125    0.4109    0.7635    0.1734   -0.4533
    0.4995   -0.6746    0.1486    0.4053   -0.3303
   -0.7694   -0.2140   -0.2614    0.4749   -0.2616
    0.3818    0.5731   -0.4917    0.4866   -0.2173

AA および BB は三角行列なので、ordeig を使用して AA および BB の対角ブロックから固有値を抽出します。

e = ordeig(AA,BB)
e = 5×1
106 ×

    2.8871
   -0.0257
   -0.0009
    0.0005
    0.0000

固有値をクラスターに分離し、正の実数固有値 (e>0) で先頭クラスターを形成します。行列 AABBQ および Z を、この固有値の順序に従って並べ替えます。

[AAS,BBS,QS,ZS] = ordqz(AA,BB,Q,Z,'rhp')
AAS = 5×5

   14.5272   -1.2849    1.0391   -7.6821    4.4119
         0   21.7128  -19.1784   -1.8380    9.1187
         0         0   60.3083    8.4452   -6.4304
         0         0         0  -18.2081    3.3783
         0         0         0         0  -14.6375

BBS = 5×5

    0.0000    0.0114    0.1908    0.1119    0.0788
         0    0.0446    0.0377    0.1107    0.1978
         0         0    1.3820    0.6325    0.2807
         0         0         0    0.0007   -0.0137
         0         0         0         0    0.0171

QS = 5×5

   -0.1743   -0.1099   -0.0789   -0.4690    0.8552
   -0.6353    0.1853    0.4099    0.5765    0.2483
   -0.7034   -0.4518   -0.3456   -0.2295   -0.3591
    0.1415   -0.2036   -0.7054    0.6065    0.2703
   -0.2263    0.8414   -0.4568   -0.1647   -0.0705

ZS = 5×5

    0.0057   -0.0088   -0.5288   -0.3591   -0.7690
   -0.1125   -0.6095   -0.3858   -0.4737    0.4926
    0.4995    0.6478   -0.2711   -0.3644    0.3529
   -0.7694    0.4176   -0.4090    0.1750    0.1890
    0.3818   -0.1855   -0.5752    0.6952    0.0758

新しい固有値の順序を確認します。

E2 = ordeig(AAS,BBS)
E2 = 5×1
106 ×

    2.8871
    0.0005
    0.0000
   -0.0257
   -0.0009

入力引数

すべて折りたたむ

行列の因子。[AA,BB,Q,Z] = qz(A,B) が返す行列として指定します。これらの行列は Q*A*Z = AA および Q*B*Z = BB を満たします。複素数行列の場合、AABB は三角行列です。

AABB が有効な QZ 分解を生成しない場合、ordqz はエラーを生成せず、誤った結果を返します。

データ型: single | double
複素数のサポート: あり

ユニタリ行列。[AA,BB,Q,Z] = qz(A,B) が返す行列として指定します。これらの行列は Q*A*Z = AA および Q*B*Z = BB を満たします。

データ型: single | double
複素数のサポート: あり

クラスター セレクター。一般化固有値の数と等しい長さの logical ベクトルとして指定します。一般化固有値は AA-λ*BB の対角に沿って表示されます。

データ型: logical

固有値領域キーワード。次の表のオプションのいずれかとして指定します。

オプション

選択領域

(e = ordeig(AA,BB))

'lhp'

左半平面 (real(e) < 0)

'rhp'

右半平面 (real(e) >= 0)

'udi'

単位円板の内側 (abs(e) < 1)

'udo'

単位円板の外側 (abs(e) >= 1)

クラスター インデックス。固有値の数と等しい長さの正の整数のベクトルとして指定します。clusterse = ordeig(AA,BB) によって返される各固有値をそれぞれ異なるクラスターに割り当てます。clusters でインデックス値が同じであるすべての固有値が 1 つのクラスターを形成します。

例: ordqz(AA,BB,Q,Z,[1 1 2 3 3]) は 5 つの固有値を 3 つのクラスターにグループ化します。

データ型: single | double

出力引数

すべて折りたたむ

並べ替え後の行列。QS*A*ZS = AAS および QS*B*ZS = BBS を満たす行列として返されます。

QSZS はユニタリ行列、AAS疑似三角行列BBS は三角行列です。

詳細

すべて折りたたむ

疑似三角行列

疑似上三角行列は、実数行列の Schur 分解または一般化 Schur (QZ) 分解の結果得られます。これらの行列はブロックの上三角行列で、対角上に 1 行 1 列および 2 行 2 列のブロックがあります。

6-by-6 matrix with 1-by-1 and 2-by-2 blocks of nonzeros along the diagonal

これらの対角ブロックの固有値は、この行列の固有値でもあります。1 行 1 列のブロックは実数固有値に対応し、2 行 2 列のブロックは複素共役固有値の組に対応します。

ヒント

  • AA に複素共役対 (下対角上にある非ゼロの要素) がある場合、この組を同じクラスターに移動する必要があります。それ以外の場合、ordqz はこの組を維持しようとします。

    • select が共役対の 2 つの固有値で同じでない場合、ordqz は両方が選択されているものとして扱います。

    • clusters が共役対の 2 つの固有値で同じでない場合、ordqz は両方が大きなインデックスをもつクラスターの一部であるものとして扱います。

参照

[1] Kressner, Daniel. “Block Algorithms for Reordering Standard and Generalized Schur Forms.” ACM Transactions on Mathematical Software 32, no. 4 (December 2006): 521–532. https://doi.org/10.1145/1186785.1186787.

拡張機能

バージョン履歴

R2006a より前に導入

参考

| |