qrdelete
QR 分解から列または行を削除
構文
[Q1,R1] = qrdelete(Q,R,j)
[Q1,R1] = qrdelete(Q,R,j,'col')
[Q1,R1] = qrdelete(Q,R,j,'row')
説明
[Q1,R1] = qrdelete(Q,R,j) は、行列 A1 の QR 分解を返します。ここで、A1 は、列 A(:,j) が削除された A で、[Q,R] = qr(A) は A の QR 分解です。
[Q1,R1] = qrdelete(Q,R,j,'col') は、qrdelete(Q,R,j) と同じです。
[Q1,R1] = qrdelete(Q,R,j,'row') は、行列 A1 の QR 分解を返します。ここで、A1 は、行 A(j,:) が削除された A で、[Q,R] = qr(A) は A の QR 分解です。
例
A = magic(5);
[Q,R] = qr(A);
j = 3;
[Q1,R1] = qrdelete(Q,R,j,'row');
Q1 =
0.5274 -0.5197 -0.6697 -0.0578
0.7135 0.6911 0.0158 0.1142
0.3102 -0.1982 0.4675 -0.8037
0.3413 -0.4616 0.5768 0.5811
R1 =
32.2335 26.0908 19.9482 21.4063 23.3297
0 -19.7045 -10.9891 0.4318 -1.4873
0 0 22.7444 5.8357 -3.1977
0 0 0 -14.5784 3.7796は、有効な QR 分解を返しますが、以下とは異なります。
A2 = A;
A2(j,:) = [];
[Q2,R2] = qr(A2)
Q2 =
-0.5274 0.5197 0.6697 -0.0578
-0.7135 -0.6911 -0.0158 0.1142
-0.3102 0.1982 -0.4675 -0.8037
-0.3413 0.4616 -0.5768 0.5811
R2 =
-32.2335 -26.0908 -19.9482 -21.4063 -23.3297
0 19.7045 10.9891 -0.4318 1.4873
0 0 -22.7444 -5.8357 3.1977
0 0 0 -14.5784 3.7796アルゴリズム
関数 qrdelete は、一連のギブンス回転を使用して、分解の適切な要素をゼロにします。[1]
参照
[1] Golub, Gene H., and Charles F. Van Loan. Matrix Computations. 4th ed. Baltimore, MD: Johns Hopkins University Press, 2013, Sections 6.5.2–6.5.3, pp. 335–338.
拡張機能
バージョン履歴
R2006a より前に導入