Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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 より前に導入

参考

| |