LinearAlgebra
QRDecomposition
compute QR factorization of a Matrix
Calling Sequence
Parameters
Description
Examples
QRDecomposition(A, fs, out, c, options, outopts)
A
-
Matrix
fs
(optional) equation of the form fullspan=true or false; selects whether a full QR factorization is performed
out
(optional) equation of the form output = obj where obj is one of 'Q', R', 'NAG', or 'rank', or a list containing one or more of these names; selects result objects to compute
c
(optional) equation of the form conjugate=true or false; selects whether conjugations are performed in the Gram-Schmidt process
options
(optional); constructor options for the result object(s)
outopts
(optional) equation of the form outputoptions[o] = list where o is one of 'Q', 'R', or 'NAG'; constructor options for the specified result object
The QRDecomposition function computes the QR decomposition of the Matrix A.
If A contains symbolic entries, a Gram-Schmidt process is used to generate the factorization of A. If the fullspan option (fs) is omitted or entered as fullspan=false, and A does not have full rank or has more rows than columns, a Q1R1 factorization is performed. The columns of the Q1 factor span the column space of A.
If the fullspan option is specified as just the symbol fullspan or as fullspan=true, or A has full rank, then a full QR factorization is performed.
If the QR decomposition is successful, then the Matrix is full rank. Otherwise, at some point a 0 column (on and below the diagonal) will be encountered. Thus the rank is an optional output object.
By default, elements are conjugated during the Gram-Schmidt process. If conjugate=false is specified in the calling sequence, no conjugations are performed.
If A contains floating-point entries, Householder transformations are used to compute the factorization.
Depending on what is included in the output option (out), an expression sequence containing Q, R, rank or an expression sequence containing NAG, rank, can be returned. The objects are returned in the same order as specified in the output list.
If rank is included in the output option along with R or NAG and A contains floating-point entries, then the rank is computed by counting the number of diagonal entries in the R (or NAG) factor which exceed a certain tolerance, equal to the product of e and c, where c is equal to the maximum absolute diagonal element of R. If R contains hardware floating-point entries, then e is taken to be 10^(1-evalhf(Digits)), else e is taken to be 10^(1-Digits) in the case of software floating-point entries.
The output object NAG may only be requested if the input Matrix contains floating-point data. It may not be requested with either of the other Matrix output objects, Q or R. The NAG object is an expression sequence whose first item is a Matrix and whose second item is a Vector. The Matrix component of the NAG output object contains R in the upper triangle if m >= n, and in the lower triangle if m < n. The remaining portion of the Matrix component, and the Vector component of the NAG output object contain details of the reflectors that make up the factors of Q.
The fullspan option is incompatible with the output=[NAG] option for a nonsquare Matrix A.
If the output option is not included in the calling sequence, the returned expression sequence contains the objects Q and R.
The constructor options provide additional information (readonly, shape, storage, order, datatype, and attributes) to the Matrix or Vector constructor that builds the result(s). These options may also be provided in the form outputoptions[o]=[...], where [...] represents a Maple list. If a constructor option is provided in both the calling sequence directly and in an outputoptions[o] option, the latter takes precedence (regardless of the order).
The following list indicates permissible values for index [o] of outputoptions with their corresponding meaning.
Q
orthonormal (unitary) factor
R
upper triangular factor
NAG
compact (NAG-style) form
The QR decomposition of a Matrix can be used as input for the LinearSolve command. For more details on how to do this, see that help page.
This function is part of the LinearAlgebra package, and so it can be used in the form QRDecomposition(..) only after executing the command with(LinearAlgebra). However, it can always be accessed through the long form of the command by using LinearAlgebra[QRDecomposition](..).
with⁡LinearAlgebra:
A≔2,3,1|4,6,−1|−1,−32,−2
A≔24−136−321−1−2
Q1,R1≔QRDecomposition⁡A
Q1,R1≔147182913⁢14143⁢1821821414−18214,1425⁢1414−17⁢142803⁢182143⁢18228
Q,R≔QRDecomposition⁡A,fullspan
Q,R≔147182913⁢13133⁢14143⁢182182−2⁢13131414−182140,1425⁢1414−17⁢142803⁢182143⁢18228000
Equal⁡Q1·R1,A
true
Equal⁡Q·R,A
B≔RandomMatrix⁡5,3,datatype=float
B≔−55.−58.21.−67.−94.−25.77.−7.40.−70.12.97.13.−53.43.
q,rank≔QRDecomposition⁡B,output=Q,rank
q,rank≔−0.404236959526025−0.325148151236784−0.133500424154767−0.492434114331703−0.6072080514448820.2597227701274060.565931743336435−0.342406118362327−0.459567316295425−0.5144834030331230.362249263307967−0.7269322784504820.0955469177061514−0.526412939951793−0.418436451289387,3
map⁡fnormal,Transpose⁡q·q
1.−0.0.−0.1.0.0.0.1.000000000
See Also
LinearAlgebra[GramSchmidt]
QR algorithm
Vector
Download Help Document