qr(x [,pivot:T, ronly:T]), x a REAL matrix |

qr(x) computes the elements of a QR decomposition of matrix x The value returned is structure(qr:Qr, qraux:Qraux), where Qr is a REAL vector of length P and Qraux is a REAL n by p matrix, as computed by Linpack subroutine dqrdc. The elements of Qr on and above the diagonal constitute the upper triangular matrix R of the QR decomposition, and the remaining elements, together with the elements of Qraux contain enough information to compute Q. No pivoting is performed with this usage of qr(). qr(x,pivot:T) or simply qr(x,T) does the same computation, with possible reordering of columns. The result is a structure(qr:Qr,qraux:Qraux, pivot:Pivot), where Pivot is a vector of length p containing the column numbers in x corresponding to the successive columns of q and r. qr(x,ronly:T) returns a p by p upper triangular matrix consisting of the R matrix in the QR decomposition, computed without pivoting. For example, both parts of the QR decomposition can be computed by Cmd> R <- qr(x,ronly:T) ; Q <- x %/% R # x %*% solve(R) The columns of Q are orthogonal and x - Q %*% R will be zero except for rounding error. An alternative way to get the full QR decomposition is by macro qrdcomp() in macro file math.mac which uses the information in Qraux. Type help(qrdcomp) for details. See also cholesky().

Gary Oehlert 2003-01-15