MATLAB Function Reference    
qr

Orthogonal-triangular decomposition

Syntax

Description

The qr function performs the orthogonal-triangular decomposition of a matrix. This factorization is useful for both square and rectangular matrices. It expresses the matrix as the product of a real orthonormal or complex unitary matrix and an upper triangular matrix.

[Q,R] = qr(A) produces an upper triangular matrix R of the same dimension as A and a unitary matrix Q so that A = Q*R. For sparse matrices, Q is often nearly full.

[Q,R,E] = qr(A) produces a permutation matrix E, an upper triangular matrix R with decreasing diagonal elements, and a unitary matrix Q so that A*E = Q*R. The column permutation E is chosen so that abs(diag(R)) is decreasing.

[Q,R] = qr(A,0) and [Q,R,E] = qr(A,0) produce "economy-size" decompositions in which E is a permutation vector, so that Q*R = A(:,E). The column permutation E is chosen so that abs(diag(R)) is decreasing.

R = qr(A) for sparse matrices, produces only an upper triangular matrix, R. The matrix R provides a Cholesky factorization for the matrix associated with the normal equations,

This approach avoids the loss of numerical information inherent in the computation of A'*A.

[C,R] = qr(A,B) for sparse matrices, applies the orthogonal transformations to B, producing C = Q'*B without computing Q.

R = qr(A,0) and [C,R] = qr(A,B,0) for sparse matrices, produce "economy-size" results.

For sparse matrices, the Q-less QR factorization allows the solution of sparse least squares problems

with two steps

If A is sparse but not square, MATLAB uses the two steps above for the linear equation solving backslash operator, i.e., x = A\b.

X = qr(A) returns the output of the LAPACK subroutine DGEQRF or ZGEQRF. triu(qr(A)) is R.

Examples

Start with

This is a rank-deficient matrix; the middle column is the average of the other two columns. The rank deficiency is revealed by the factorization:

The triangular structure of R gives it zeros below the diagonal; the zero on the diagonal in R(3,3) implies that R, and consequently A, does not have full rank.

The QR factorization is used to solve linear systems with more equations than unknowns. For example

The linear system Ax = b represents four equations in only three unknowns. The best solution in a least squares sense is computed by

which produces

The quantity tol is a tolerance used to decide if a diagonal element of R is negligible. If [Q,R,E] = qr(A), then

The solution x was computed using the factorization and the two steps

The computed solution can be checked by forming Ax. This equals b to within roundoff error, which indicates that even though the simultaneous equations Ax = b are overdetermined and rank deficient, they happen to be consistent. There are infinitely many solution vectors x; the QR factorization has found just one of them.

Algorithm

The qr function uses LAPACK routines to compute the QR decomposition:

Syntax
Real
Complex
R = qr(A)
R = qr(A,0)

DGEQRF
ZGEQRF
[Q,R] = qr(A)
[Q,R] = qr(A,0)

DGEQRF, DORGQR
ZGEQRF, ZUNGQR
[Q,R,e] = qr(A)
[Q,R,e] = qr(A,0)
DGEQPF, DORGQR
ZGEQPF, ZUNGQR

See Also

lu, null, orth, qrdelete, qrinsert

The arithmetic operators \ and /

References

[1]  Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide, Third Edition, SIAM, Philadelphia, 1999.


 qmr qrdelete