/* -*- MaTX -*- * * 【名前】 * qr() - QR分解 * * 【形式】 * {Q,R} = qr(A) * Matrix Q,R; * Matrix A; * * 【機能説明】 * qr()は,行列 A のQR分解を求める。この分解は,正方行列にも非正方 * 行列にも行える。実行列の場合,直交行列 Q と上三角行列 R の積に, * 複素行列の場合,ユニタリ行列 Q と上三角行列 R の積に分解する。 * * {Q,R} = qr(A)は,A と同じ大きさの上三角行列 R と直交行列 * (ユニタリ行列) Q を求める。これらの行列の間には,A = Q * R, * Q# * Q = I の関係がある。 * * 【アルゴリズム】 * 文献 1 のアルゴリズムを使う。 * * 【例題】 * 4 * 3 の行列 A の QR 分解を求める。R(3,3) はゼロに近いので R と * A はフルランクでない。このことは,行列 A の第 2 列が第 1 列と * 第 3 列の平均となっていることからも分かる。 * * >> A = [[1 2 3][4 5 6][7 8 9][10 11 12]]; * >> {Q,R} = qr(A); * >> print Q,R; * === [Q] : ( 4, 4) === * ( 1) ( 2) ( 3) ( 4) * ( 1) -7.761505E-02 -8.330521E-01 5.007372E-01 2.219508E-01 * ( 2) -3.104602E-01 -4.512365E-01 -8.330820E-01 7.729306E-02 * ( 3) -5.433053E-01 -6.942101E-02 1.639523E-01 -8.204386E-01 * ( 4) -7.761505E-01 3.123945E-01 1.683924E-01 5.211947E-01 * === [R] : ( 4, 3) === * ( 1) ( 2) ( 3) * ( 1) -1.288409E+01 -1.459162E+01 -1.629916E+01 * ( 2) 0.000000E+00 -1.041315E+00 -2.082630E+00 * ( 3) 0.000000E+00 0.000000E+00 1.195746E-15 * ( 4) 0.000000E+00 0.000000E+00 0.000000E+00 * * 【関連項目】 * hess(), qr_p(), qz() * * 【参考文献】 * [1] Gene H. Golub and Charles F. Van Loan. Matrix Computations. * The Johns Hopkins University Press, 1989 */