Scilab Function

qr - factorisation QR

Calling Sequence

[Q,R]=qr(X [,"e"])
[Q,R,E]=qr(X [,"e"])
[Q,R,rk,E]=qr(X [,tol])

Parameters

Description

[Q,R] = qr(X) renvoie une matrice triangulaire supérieure R de même dimensions que X et une matrice carrée othogonale (unitaire dans le cas complexe) Q telles que X = Q*R . [Q,R] = qr(X,"e") renvoie une decomposition de taille réduite: si X est une matrice m x n avec m > n alors seulement les n premières colonnes de Q sont calculées ainsi que les n premières lignes de R .

Il découle de Q*R = X que la k ième colonne de X peut s'exprimer comme une combinaison linéaire des k premieres colonnes de Q (avec les coefficients R(1,k), ..., R(k,k) . Les k premieres colonnes de Q forment une base orthogonale du sous espace généré par les Les k premieres colonnes de X . Si la colonne k de X est une combinaison linéaire des p premiéres colonnes de X alors les éléments R(p+1,k), ..., R(k,k) sont nuls. Dans cette situation R est une matrice trapézoidale supérieure. Si X est de rang rk alors les lignes R(rk+1,:), R(rk+2,:), ... sont nulles.

[Q,R,E] = qr(X) renvoie une matrice de permutations (de colonnes) E , une matrice triangulaire supérieure R dont les éléments diagonaux sont classés par ordre décroissant et une matrice unitaire Q telles que X*E = Q*R . si rk est le rang de X les rk premiers éléménts diagonaux de R sont tous non nuls. [Q,R,E] = qr(X,"e") renvoie une decomposition de taille réduite: si X est une matrice m x n avec m > n alors seulement les n premières colonnes de Q sont calculées ainsi que les n premières lignes de R .

[Q,R,rk,E] = qr(X [,tol]) renvoie de plus rk =rang estimé de X . Plus précisément, rk est le nombre d'éléments diagonaux de R supérieurs à tol . La valeur par défaut de tol est R(1,1)*%eps*max(size(R))

renvoie rk = rang estimé de X . Ici, rk est le nombre d'éléments diagonaux de R supérieurs à R(1,1)*%eps*max(size(R) .

Examples

    // QR factorization, generic case
    // X is tall (full rank)
    X=rand(5,2);[Q,R]=qr(X); [Q'*X R]
    //X is fat (full rank)
    X=rand(2,3);[Q,R]=qr(X); [Q'*X R]
    //Column 4 of X is a linear combination of columns 1 and 2:
    X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4)
    //X has rank 2, rows 3 to $ of R are zero:
    X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R
    //Evaluating the rank rk: column pivoting ==> rk first
    //diagonal entries of R are non zero :
    A=rand(5,2)*rand(2,5);
    [Q,R,rk,E] = qr(A,1.d-10);
    norm(Q'*A-R)
    svd([A,Q(:,1:rk)])    //span(A) =span(Q(:,1:rk))
    

See Also

rank ,   svd ,   rowcomp ,   colcomp ,  

Used Function

La décomposition QR est basée sur les routines Lapack DGEQRF, DGEQPF, DORGQR pour les matrices réelles et ZGEQRF, ZGEQPF, ZORGQR pour le cas complexe.