{U,T} = schur(A)
Matrix U,T;
Matrix A;
【詳細】
schur()は,行列 A のSchur型を求める。行列の複素Schur型は,対角成分
に行列の固有値をもつ上三角行列であり,実Schur型は,対角成分に行列
の実固有値と複素固有値をもつ 2 x 2 のブロックをもつブロック上三角
行列である。
{U,T} = schur(A)は,Schur行列 T と直交行列(ユニタリ行列) U
を求める。これらの行列の間には,A = U * T * U#,U# * U = I(A) の
関係がある。shcur(A)は,A が実行列なら,実Schur型を,A が複素行列
なら,複素Schur型を求める。
【算法】
schur(A) は,実行列に対してEispackのルーチンの ortran, orthes,
hqr2 を使う。orthes は直交相似変換を使って実行列をヘッセンベルグ型
に変換。hqr2 は,QR法でヘッセンベルグ行列の固有値を求める。
schur(A)は,複素行列に対してEispackのqzhes, qzit, qzval, qzvec を
使って,QZ法で計算する。
【例題】
>> {U,T} = schur([[1 2 3][4 5 6][7 8 9]]);
>> print U,T;
=== [U] : ( 3, 3) ===
( 1) ( 2) ( 3)
( 1) 2.31970687E-01 8.82905960E-01 4.08248290E-01
( 2) 5.25322093E-01 2.39520420E-01 -8.16496581E-01
( 3) 8.18673499E-01 -4.03865120E-01 4.08248290E-01
=== [T] : ( 3, 3) ===
( 1) ( 2) ( 3)
( 1) 1.61168440E+01 4.89897949E+00 5.68558108E-16
( 2) -4.99901156E-27 -1.11684397E+00 2.27776519E-16
( 3) 0.00000000E+00 -3.06646861E-20 -1.28803904E-16
【参照】