Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ordschur

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

説明

[US,TS] = ordschur(U,T,select) は、[U,T] = schur(X) が生成した Schur 分解 X = U*T*U' を並べ替え、X = US*TS*US' となる、並べ替えた Schur 行列 TS と直交行列 US を返します。

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

[US,TS] = ordschur(U,T,keyword) は、keyword で指定された領域のすべての固有値を含めるために、選択されるクラスターを設定します。

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

すべて折りたたむ

行列の Schur 係数を計算し、指定した固有値の順序に従ってこれらの係数を並べ替えます。

行列 X の Schur 分解を求めます。この Schur 分解は、X=UTU* となるように疑似上三角行列 T とユニタリ行列 U を生成します。

X = magic(6);
[U,T] = schur(X)
U = 6×6

    0.4082   -0.2887    0.4082    0.5749    0.5000   -0.0530
    0.4082    0.5774    0.4082   -0.3333   -0.0000   -0.4714
    0.4082   -0.2887    0.4082   -0.2416   -0.5000    0.5244
    0.4082    0.2887   -0.4082    0.5749   -0.5000   -0.0530
    0.4082   -0.5774   -0.4082   -0.3333   -0.0000   -0.4714
    0.4082    0.2887   -0.4082   -0.2416    0.5000    0.5244

T = 6×6

  111.0000    0.0000   -0.0000    0.0000    0.0000   -0.0000
         0   27.0000   -0.0000  -28.3164  -15.5885  -13.0454
         0         0  -27.0000   18.0000   22.0454  -12.7279
         0         0         0    9.7980    0.0000    6.9282
         0         0         0         0   -0.0000    0.0000
         0         0         0         0         0   -9.7980

T は三角行列なので、T の対角には元の行列 X の固有値が含まれています。

Schur 分解を並べ替えることにより、固有値が 2 つのクラスターに存在するようにし、さらに負の固有値のクラスターが TS の対角上で最初に現れるようにします。

[US,TS] = ordschur(U,T,'lhp')
US = 6×6

    0.4082    0.2887    0.2746   -0.4082   -0.4826    0.5244
    0.4082    0.2887    0.2990   -0.4082    0.5213   -0.4714
    0.4082   -0.5774   -0.5736   -0.4082   -0.0386   -0.0530
   -0.4082   -0.2887    0.2075   -0.4082    0.5151    0.5244
   -0.4082   -0.2887    0.3662   -0.4082   -0.4765   -0.4714
   -0.4082    0.5774   -0.5736   -0.4082   -0.0386   -0.0530

TS = 6×6

  -27.0000   19.0919   18.6997   -0.0000   -9.7888   12.7279
         0   -0.0000    0.3800    0.0000   15.6493  -15.5227
         0         0   -9.7980    0.0000   -2.4773    8.7185
         0         0         0  111.0000   -0.0000   -0.0000
         0         0         0         0   27.0000  -26.3600
         0         0         0         0         0    9.7980

入力引数

すべて折りたたむ

ユニタリ行列。[U,T] = schur(X) により返される行列 U として指定します。行列 U はプロパティ X = U*T*U' および U'*U = eye(size(X)) を満たします。

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

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

Schur 行列。[U,T] = schur(X) により返される疑似三角行列 T として指定します。行列 TX = U*T*U' を満たします。

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

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

クラスター セレクター。固有値の数と等しい長さの logical ベクトルとして指定します。固有値は [U,T] = schur(X) により生成された行列 T の対角上に現れます。

データ型: logical

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

オプション

選択領域

(e = ordeig(T))

'lhp'

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

'rhp'

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

'udi'

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

'udo'

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

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

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

データ型: single | double

出力引数

すべて折りたたむ

並べ替え後の行列。X = US*TS*US' を満たす行列として返されます。

US はユニタリ行列で、TS疑似三角行列です。

詳細

すべて折りたたむ

疑似三角行列

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

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

ヒント

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

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

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

参考

| |

R2006a より前に導入