Main Content

schur

    説明

    T = schur(A) は、A の Schur 行列を返します。

    T = schur(A,mode) は、A が実数行列である場合、mode"real" であれば実疑似三角 Schur 行列を返し、mode"complex" であれば複素三角 Schur 行列を返します。A が複素行列の場合は、schurmode の値に関係なく複素 Schur 型を返します。

    [U,T] = schur(___) は、A = U*T*U' となるユニタリ行列 U も返します。

    すべて折りたたむ

    3 行 3 列の行列を作成し、その Schur 型を計算します。結果は、対角上に A の固有値 (12、および 3) をもつ行列になります。

    A = [-149 -50 -154; 537 180 546; -27 -9 -25];
    T = schur(A)
    T = 3×3
    
        1.0000   -7.1119  815.8706
             0    2.0000   55.0236
             0         0    3.0000
    
    

    非対角要素が大きく、この行列の固有値が悪条件であることを示しています。これは、関数 condeig を使用して条件数を調べると確認できます。

    condeig(A)
    ans = 3×1
    
      603.6390
      395.2366
      219.2920
    
    

    3 行 3 列の複素固有値をもつ行列を作成します。

    A = [3 1 1; 0 2 0; -2 1 1]
    A = 3×3
    
         3     1     1
         0     2     0
        -2     1     1
    
    

    A の実 Schur 型を計算します。対角上にある 2 行 2 列のブロック行列が共役複素固有値のペアを表します。

    T1 = schur(A)
    T1 = 3×3
    
        2.0000    0.3820    1.3764
       -2.6180    2.0000    0.3249
             0         0    2.0000
    
    

    関数 ordeig を使用して、実 Schur 型の固有値を求めます。

    ordeig(T1)
    ans = 3×1 complex
    
       2.0000 + 1.0000i
       2.0000 - 1.0000i
       2.0000 + 0.0000i
    
    

    mode"complex" と指定して、A の複素 Schur 型を計算します。T2 の対角値が A の Schur 型の固有値です。これは、ordeig の出力と同じになります。

    T2 = schur(A,"complex")
    T2 = 3×3 complex
    
       2.0000 + 1.0000i   2.2361 + 0.0000i  -0.3035 - 0.4911i
       0.0000 + 0.0000i   2.0000 - 1.0000i   1.2858 + 0.1159i
       0.0000 + 0.0000i   0.0000 + 0.0000i   2.0000 + 0.0000i
    
    

    3 行 3 列の魔方陣行列を作成し、その Schur 分解因子を計算します。

    A = magic(3);
    [U,T] = schur(A)
    U = 3×3
    
       -0.5774   -0.8131   -0.0749
       -0.5774    0.4714   -0.6667
       -0.5774    0.3416    0.7416
    
    
    T = 3×3
    
       15.0000    0.0000   -0.0000
             0    4.8990   -3.4641
             0         0   -4.8990
    
    

    A-U*T*U' および U'*U - eye(size(U)) のノルムがマシンの精度内で 0 であることを検証します。

    norm(A-U*T*U')
    ans = 6.7711e-15
    
    norm(U'*U - eye(size(U)))
    ans = 5.0471e-16
    

    入力引数

    すべて折りたたむ

    入力行列。実正方行列または複素正方行列として指定します。A は密でなければなりません。

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

    Schur 型システム。"real" または "complex" として指定します。

    • A が実数の場合、mode"real" または "complex" のいずれかになります。mode"real" の場合は、schur は実疑似三角行列 T を返します。mode"complex" の場合は、schur は複素三角行列 T を返します。

    • A が複素数の場合、schurmode を無視して複素 Schur 型を返します。これは、対角上に A の固有値をもつ上三角行列です。

    出力引数

    すべて折りたたむ

    Schur ベクトル。A = U*T*U' を満たすユニタリ行列として返されます。U の各列が Schur ベクトルに対応します。Schur 行列 T が三角行列の場合は、U の最初の列が T の最初の要素に対応する A の固有ベクトルになります。

    Schur 行列。実正方行列または複素正方行列として返されます。mode"complex" の場合、T は三角行列になります。mode"real" の場合、T は疑似三角行列になります。

    詳細

    すべて折りたたむ

    疑似三角行列

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

    6-by-6 upper quasitriangular matrix with 1-by-1 and 2-by-2 blocks of nonzero values along the diagonal

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

    ユニタリ行列

    可逆の複素正方行列 U は、その共役転置もその逆である場合、つまり U*U=UU*=I であればユニタリです。

    ヒント

    • 関数 rsf2csf を使用すると、行列の実 Schur 型を複素 Schur 型に変換できます。[U,T] = rsf2csf(A)[U,T] = schur(A,"complex") と同じ出力を返します。

    拡張機能

    バージョン履歴

    R2006a より前に導入

    参考

    | | | | |