qr — factorisation QR
[Q,R]=qr(X [,"e"]) [Q,R,E]=qr(X [,"e"]) [Q,R,rk,E]=qr(X [,tol])
matrice réelle ou complexe
nombre réel positif
matrice carrée unitaire
matrice de même dimensions que X
matrice de permutation
entier (rang de X
)
[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)
.
// 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))