{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 x 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
【参照】
【文献】
- 1.
- Gene H. Golub and Charles F. Van Loan. Matrix Computations.
The Johns Hopkins University Press, 1989