Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
qr
QR 分解
呼び出し手順
[Q,R]=qr(X [,"e"]) [Q,R,E]=qr(X [,"e"]) [Q,R,rk,E]=qr(X [,tol])
引数
- X
- 実数または複素数の行列 
- tol
- 非負の実数 
- Q
- 正方直交またはユニタリ行列 
- R
- Xと同じ次元の行列
- E
- 置換行列 
- rk
- 整数 ( - XのQRランク)
説明
- [Q,R] = qr(X)
- X= Q*Rとなるような- Xと同じ次元の 上三角行列- Rおよび直交(複素数の場合はユニタリ)行列- Qを出力します.- [Q,R] = qr(X,"e")は次にように "エコノミーサイズ"で出力します:- Xが m行n列 (m > n)の場合,- Qの最初のn列のみが- Rの最初のn行と同時に計算されます.- Q*R = Xから, 行列- Xのk番目の列は, (係数- R(1,k), ..., R(k,k)を用いて)- Qの最初のk列の線形結合で表されます.- Qの最初のk列は,- Xの最初のk列 に広がる部分空間の直交基底を作成します.- Xの列- k(すなわち,- X(:,k)) が- Xの最初の- p列の線形結合の場合, エントリ- R(p+1,k), ..., R(k,k)は 0 となります. この場合,- Rは上台形となります.- Xがランク- rkを有する場合, 行- R(rk+1,:), R(rk+2,:), ...は 0 となります.
- [Q,R,E] = qr(X)
- X*E = Q*Rとなるような (列)置換行列- E, 降順の対角要素を有する上三角行列- R, 直交(またはユニタリ)- Qを出力します.- rkが- Xのランクの場合,- Rの主対角項に沿った 最初の- rk個のエントリ, すなわち,- R(1,1), R(2,2), ..., R(rk,rk)は 全て0以外となります.- [Q,R,E] = qr(X,"e")は "エコノミーサイズ"で出力します:- Xが m行n列 (m > n)の場合,- Qの最初のn列のみが- Rの最初のn行と同時に計算されます.
- [Q,R,rk,E] = qr(X ,tol)
- rk=- Xのランクの推定値 を返します. すなわち,- rkは, 指定した閾値- tolより大きな- Rの対角要素の数となります.
- [Q,R,rk,E] = qr(X)
- rk=- Xのランクの推定値 を返します. すなわち,- rkは- tol=R(1,1)*%eps*max(size(R))より大きな- Rの対角要素の数となります.- Rの条件数を用いる ランク計算型のQR分解については,- rankqrを 参照してください.
例
// QR factorization, generic case // X is tall (full rank) X=rand(5,2);[Q,R]=qr(X); [Q'*X R] //X is fat (full rank) X=rand(2,3);[Q,R]=qr(X); [Q'*X R] //Column 4 of X is a linear combination of columns 1 and 2: X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4) //X has rank 2, rows 3 to $ of R are zero: X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R //Evaluating the rank rk: column pivoting ==> rk first //diagonal entries of R are non zero : A=rand(5,2)*rand(2,5); [Q,R,rk,E] = qr(A,1.d-10); norm(Q'*A-R) svd([A,Q(:,1:rk)]) //span(A) =span(Q(:,1:rk))
使用する関数
qr 分解はLapack ルーチン DGEQRF, DGEQPF, DORGQR (実数行列)および ZGEQRF, ZGEQPF, ZORGQR (複素数の場合) に基づいています.
| Report an issue | ||
| << pinv | Linear Equations | rankqr >> |