/* -*- MaTX -*- * * 【名前】 * schur() - シュア分解 * * 【形式】 * {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 * * 【関連項目】 * hess(), qr(), qz() */