X: A numeric matrix whose QR decomposition is to be computed.
tol: The tolerance for detecting linear dependencies in the columns of X.
Returns
A list with the following components:
qr: A matrix with the same dimensions as X. The upper triangle contains the R of the decomposition and the lower triangle contains Householder vectors (stored in compact form).
rank: The rank of X as computed by the decomposition.
pivot: The column permutation for the pivoting strategy used during the decomposition.
Q: The complete m-by-m orthogonal matrix Q.
R: The complete m-by-n upper triangular matrix R.
Details
This function performs Householder QR with column pivoting: Given an m-by-n matrix A with m≥n, the following algorithm computes r=rank(A) and the factorization QTAP equal to
|
R11
R12
|
r
|
0
0
|
m−r
r
n−r
with Q=H1⋯Hr and P=P1⋯Pr. The upper triangular part of A
is overwritten by the upper triangular part of R and components (j+1):m of the jth Householder vector are stored in A((j+1):m,j). The permutation P is encoded in an integer vector pivot.
Examples
hilbert <-function(n){ i <-1:n;1/ outer(i -1, i, `+`)}h9 <- hilbert(9)qrcpp(h9)
References
Gene N. Golub and Charles F. Van Loan. Matrix Computations, second edition. Baltimore, Maryland: The John Hopkins University Press, 1989, p.235.