qr(x, tol=1e-07) qr.coef(qr, y) qr.qy(qr, y) qr.qty(qr, y) qr.resid(qr, y) qr.fitted(qr, y, k = qr$rank) qr.solve(a, b, tol = 1e-7) is.qr(x) as.qr(x)
x
| a matrix whose QR decomposition is to be computed. |
tol
|
the tolerance for detecting linear dependencies in the
columns of x .
|
qr
|
a QR decomposition of the type computed by qr .
|
y, b
| a vector or matrix of right-hand sides of equations. |
a
| A matrix or QR decomposition. |
qr
computes the QR decomposition of a matrix. It provides an
interface to the techniques used in the LINPACK routine DQRDC.
The functions qr.coef
, qr.resid
, and qr.fitted
return the coefficients, residuals and fitted values obtained when
fitting y
to the matrix with QR decomposition qr
.
qr.qy
and qr.qty
return Q %*% y
and
t(Q) %*% y
, where Q
is the Q matrix.
qr.solve
solves systems of equations via the QR decomposition.
is.qr
returns TRUE
if x
is a list with a
component named qr
and FALSE
otherwise.
It is not possible to coerce objects to mode "qr"
. Objects
either are QR decompositions or they are not.
qr
|
a matrix with the same dimensions as x .
The upper triangle contains the R of the decomposition
and the lower triangle contains information on the Q of
the decomposition (stored in compact form).
|
qraux
|
a vector of length ncol(x) which contains
additional information on Q.
|
rank
|
the rank of x as computed by the decomposition.
|
pivot
| information on the pivoting strategy used during the decomposition. |
eigen
). See det2
in the examples below.qr.Q
, qr.R
, qr.X
for
reconstruction of the matrices.
solve.qr
, lsfit
,
eigen
, svd
.## The determinant of a matrix -- if you really must have it det2 <- function(x) prod(diag(qr(x)$qr))*(-1)^(ncol(x)-1) det2(print(cbind(1,1:3,c(2,0,1)))) hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") } h9 <- hilbert(9); h9 qr(h9)$rank #--> only 7 qrh9 <- qr(h9, tol = 1e-10) qrh9$rank #--> 9 ##-- Solve linear equation system H %*% x = y : y <- 1:9/10 x <- qr.solve(h9, y, tol = 1e-10) # or equivalently : x <- qr.coef(qrh9, y) #-- is == but much better than #-- solve(h9) %*% y h9 %*% x # = y