Décomposition QR

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Certaines informations figurant dans cet article ou cette section devraient être mieux reliées aux sources mentionnées dans les sections « Bibliographie », « Sources » ou « Liens externes » ().

Vous pouvez améliorer la vérifiabilité en associant ces informations à des références à l'aide d'appels de notes.

Cet article est une ébauche concernant l’algèbre.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

En algèbre linéaire, la décomposition QR (appelée aussi, factorisation QR ou décomposition QU) d'une matrice A est une décomposition de la forme

A = Q R   {\displaystyle A=QR~}

Q est une matrice orthogonale (QTQ=I), et R une matrice triangulaire supérieure.

Ce type de décomposition est souvent utilisé pour le calcul de solutions de systèmes linéaires non carrés, notamment pour déterminer la pseudo-inverse d'une matrice.

En effet, les systèmes linéaires AX = Y peuvent alors s'écrire : QRX = Y ou RX = QTY.

Ceci permettra une résolution rapide du système sans avoir à calculer la matrice inverse de A.

Extensions

Il est possible de calculer une décomposition RQ d'une matrice, ou même des décompositions QL et LQ, où la matrice L est triangulaire inférieure.

Méthodes

Il existe plusieurs méthodes pour réaliser cette décomposition :

  • la méthode de HouseholderQ est obtenue par produits successifs de matrices orthogonales élémentaires
  • la méthode de Givens (en)Q est obtenue par produits successifs de matrices de rotation plane
  • la méthode de Gram-Schmidt

Chacune d'entre elles a ses avantages et ses inconvénients. La décomposition QR n'étant pas unique, les différentes méthodes produiront des résultats différents.

Méthode de Householder

Soient x un vecteur colonne arbitraire de dimension m et α = ± ||x||, où || || désigne la norme euclidienne. Pour des raisons de stabilité du calcul, lors de la première itération (uniquement), α doit de plus être du signe opposé au premier élément de x.

Soit e1 le vecteur (1, 0, ..., 0)T, et définissons, si x n'est pas colinéaire à e1 :

u = x α e 1 , {\displaystyle \mathbf {u} =\mathbf {x} -\alpha \mathbf {e} _{1},}
v = u | | u | | , {\displaystyle \mathbf {v} ={\mathbf {u} \over ||\mathbf {u} ||},}
Q 1 = I 2 v v T . {\displaystyle Q_{1}=I-2\mathbf {v} \mathbf {v} ^{T}.}
Q1 est la matrice de Householder ou matrice orthogonale élémentaire et
Q 1 x = ( α   , 0 , , 0 ) T . {\displaystyle Q_{1}x=(\alpha \ ,0,\cdots ,0)^{T}.}

(Si x est colinéaire à e1, on a le même résultat en prenant pour Q la matrice identité.)

On peut utiliser ces propriétés pour transformer une matrice A de dimension m×n en une matrice triangulaire supérieure. Tout d'abord, on multiplie A par la matrice de Householder Q1 en ayant pris le soin de choisir pour x la première colonne de A. Le résultat est une matrice QA avec des zéros dans la première colonne excepté du premier élément qui vaudra α.

Q 1 A = ( α 1 0 A 0 ) {\displaystyle Q_{1}A={\begin{pmatrix}\alpha _{1}&\star &\dots &\star \\0&&&\\\vdots &&A'&\\0&&&\end{pmatrix}}}

Ceci doit être réitéré pour A' qui va être multipliée par Q’2 (Q’2 est plus petite que Q1). Si toutefois, on souhaite utiliser Q1A plutôt que A', il faut remplir la matrice de Householder avec des 1 dans le coin supérieur gauche :

Q k = ( I k 1 0 0 Q k ) {\displaystyle Q_{k}={\begin{pmatrix}I_{k-1}&0\\0&Q_{k}'\end{pmatrix}}}

Après t itérations, t = min(m – 1, n),

R = Q t Q 2 Q 1 A {\displaystyle R=Q_{t}\cdots Q_{2}Q_{1}A}

est une matrice triangulaire supérieure. Si Q = QT
1
QT
2
... QT
t
alors A = QR est la décomposition QR de A. De plus, par construction les matrices Qk sont non seulement orthogonales mais aussi symétriques, donc Q = Q1 Q2 ... Qt.

Exemple

Calculons la décomposition QR de

A = ( 12 51 4 6 167 68 4 24 41 ) {\displaystyle A={\begin{pmatrix}12&-51&4\\6&167&-68\\-4&24&-41\end{pmatrix}}}

On choisit donc le vecteur a1 = (12, 6, -4)T. On a donc ||a1|| = 122 + 62 + (–4)2 = 14. Ce qui conduit à écrire ||a1|| e1 = (14, 0, 0)T.

Le calcul amène à u = 2(–1, 3, –2)T et v = 1 14 1 2 ( 1 , 3 , 2 ) T {\displaystyle v={1 \over 14^{1 \over 2}}(-1,3,-2)^{T}} . La première matrice de Householder vaut

Q 1 = I 2 14 ( 1 3 2 ) ( 1 3 2 ) = I 1 7 ( 1 3 2 3 9 6 2 6 4 ) = ( 6 / 7 3 / 7 2 / 7 3 / 7 2 / 7 6 / 7 2 / 7 6 / 7 3 / 7 ) . {\displaystyle {\begin{aligned}Q_{1}&=I-{2 \over 14}{\begin{pmatrix}-1\\3\\-2\end{pmatrix}}{\begin{pmatrix}-1&3&-2\end{pmatrix}}\\&=I-{1 \over 7}{\begin{pmatrix}1&-3&2\\-3&9&-6\\2&-6&4\end{pmatrix}}={\begin{pmatrix}6/7&3/7&-2/7\\3/7&-2/7&6/7\\-2/7&6/7&3/7\\\end{pmatrix}}.\end{aligned}}}

On observe alors que

Q 1 A = ( 14 21 14 0 49 14 0 168 77 ) . {\displaystyle Q_{1}A={\begin{pmatrix}14&21&-14\\0&-49&-14\\0&168&-77\end{pmatrix}}.}

ce qui était l'objectif désiré : on a bien maintenant sous la diagonale uniquement des zéros dans la 1re colonne.

Pour réitérer le processus, on prend la sous-matrice principale

A = M 11 = ( 49 14 168 77 ) {\displaystyle A'=M_{11}={\begin{pmatrix}-49&-14\\168&-77\end{pmatrix}}}

Par la même méthode, on obtient

α 2 = ( 49 ) 2 + 168 2 = 175 , u 2 = ( 224 , 168 ) T , v 2 = ( 4 / 5 , 3 / 5 ) T , Q 2 = ( 7 / 25 24 / 25 24 / 25 7 / 25 ) . {\displaystyle \alpha _{2}={\sqrt {(-49)^{2}+168^{2}}}=175,\quad u_{2}=(-224,168)^{T},\quad v_{2}=(-4/5,3/5)^{T},\quad Q'_{2}={\begin{pmatrix}-7/25&24/25\\24/25&7/25\end{pmatrix}}.}

La 2e matrice de Householder est donc

Q 2 = ( 1 0 0 0 7 / 25 24 / 25 0 24 / 25 7 / 25 ) . {\displaystyle Q_{2}={\begin{pmatrix}1&0&0\\0&-7/25&24/25\\0&24/25&7/25\end{pmatrix}}.}

Finalement, on obtient

Q = Q 1 Q 2 = ( 6 / 7 69 / 175 58 / 175 3 / 7 158 / 175 6 / 175 2 / 7 6 / 35 33 / 35 ) {\displaystyle Q=Q_{1}Q_{2}={\begin{pmatrix}6/7&-69/175&58/175\\3/7&158/175&-6/175\\-2/7&6/35&33/35\end{pmatrix}}}
R = Q 2 Q 1 A = Q T A = ( 14 21 14 0 175 70 0 0 35 ) . {\displaystyle R=Q_{2}Q_{1}A=Q^{T}A={\begin{pmatrix}14&21&-14\\0&175&-70\\0&0&-35\end{pmatrix}}.}

La matrice Q est orthogonale et R est triangulaire supérieure, par conséquent, on obtient la décomposition A = QR.

Coût et avantages

Le coût de cette méthode pour une matrice n×n est en : 4/3n3 Ce coût est relativement élevé (la méthode de Cholesky, pour les matrices symétriques définies positives est en 1/3n3). Cependant, la méthode de Householder présente l'avantage considérable d'être beaucoup plus stable numériquement, en limitant les divisions par des nombres petits. La méthode de Givens, malgré un coût encore supérieur à celui-ci, offrira encore davantage de stabilité.

Méthode de Schmidt

On considère le procédé de Gram-Schmidt appliqué aux colonnes de la matrice A = [ a 1 , , a n ] {\displaystyle A=[\mathbf {a} _{1},\cdots ,\mathbf {a} _{n}]} , muni du produit scalaire v , w = v w {\displaystyle \langle \mathbf {v} ,\mathbf {w} \rangle =\mathbf {v} ^{\top }\mathbf {w} } (ou v , w = v w {\displaystyle \langle \mathbf {v} ,\mathbf {w} \rangle =\mathbf {v} ^{\dagger }\mathbf {w} } pour le cas complexe). L'algorithme présenté ci-dessous convient à une matrice de rang n {\displaystyle n} . Pour des matrices de rang inférieur, il est à adapter à chaque fois que le vecteur u i {\displaystyle \mathbf {u} _{i}} obtenu est nul.

On définit la projection :

Π e a = e , a e , e e {\displaystyle \Pi _{\mathbf {e} }\mathbf {a} ={\frac {\langle \mathbf {e} ,\mathbf {a} \rangle }{\langle \mathbf {e} ,\mathbf {e} \rangle }}\mathbf {e} }

puis les vecteurs :

u 1 = a 1 , e 1 = u 1 u 1 u 2 = a 2 Π e 1 a 2 , e 2 = u 2 u 2 u 3 = a 3 Π e 1 a 3 Π e 2 a 3 , e 3 = u 3 u 3 u k = a k j = 1 k 1 Π e j a k , e k = u k u k . {\displaystyle {\begin{aligned}\mathbf {u} _{1}&=\mathbf {a} _{1},&\mathbf {e} _{1}&={\mathbf {u} _{1} \over \|\mathbf {u} _{1}\|}\\\mathbf {u} _{2}&=\mathbf {a} _{2}-\Pi _{\mathbf {e} _{1}}\,\mathbf {a} _{2},&\mathbf {e} _{2}&={\mathbf {u} _{2} \over \|\mathbf {u} _{2}\|}\\\mathbf {u} _{3}&=\mathbf {a} _{3}-\Pi _{\mathbf {e} _{1}}\,\mathbf {a} _{3}-\Pi _{\mathbf {e} _{2}}\,\mathbf {a} _{3},&\mathbf {e} _{3}&={\mathbf {u} _{3} \over \|\mathbf {u} _{3}\|}\\&\vdots &&\vdots \\\mathbf {u} _{k}&=\mathbf {a} _{k}-\sum _{j=1}^{k-1}\Pi _{\mathbf {e} _{j}}\,\mathbf {a} _{k},&\mathbf {e} _{k}&={\mathbf {u} _{k} \over \|\mathbf {u} _{k}\|}.\end{aligned}}}

On réarrange ensuite les équations de sorte que les ai soient à gauche, en utilisant le fait que les ei sont des vecteurs unitaires :

a 1 = e 1 , a 1 e 1 a 2 = e 1 , a 2 e 1 + e 2 , a 2 e 2 a 3 = e 1 , a 3 e 1 + e 2 , a 3 e 2 + e 3 , a 3 e 3 a k = j = 1 k e j , a k e j {\displaystyle {\begin{aligned}\mathbf {a} _{1}&=\langle \mathbf {e} _{1},\mathbf {a} _{1}\rangle \mathbf {e} _{1}\\\mathbf {a} _{2}&=\langle \mathbf {e} _{1},\mathbf {a} _{2}\rangle \mathbf {e} _{1}+\langle \mathbf {e} _{2},\mathbf {a} _{2}\rangle \mathbf {e} _{2}\\\mathbf {a} _{3}&=\langle \mathbf {e} _{1},\mathbf {a} _{3}\rangle \mathbf {e} _{1}+\langle \mathbf {e} _{2},\mathbf {a} _{3}\rangle \mathbf {e} _{2}+\langle \mathbf {e} _{3},\mathbf {a} _{3}\rangle \mathbf {e} _{3}\\&\vdots \\\mathbf {a} _{k}&=\sum _{j=1}^{k}\langle \mathbf {e} _{j},\mathbf {a} _{k}\rangle \mathbf {e} _{j}\end{aligned}}}

e i , a i = u i {\displaystyle \langle \mathbf {e} _{i},\mathbf {a} _{i}\rangle =\|\mathbf {u} _{i}\|} . Ceci s'écrit matriciellement :

A = Q R {\displaystyle A=QR}

avec

Q = [ e 1 , , e n ] et R = ( e 1 , a 1 e 1 , a 2 e 1 , a 3 0 e 2 , a 2 e 2 , a 3 0 0 e 3 , a 3 ) . {\displaystyle Q=\left[\mathbf {e} _{1},\cdots ,\mathbf {e} _{n}\right]\qquad {\text{et}}\qquad R={\begin{pmatrix}\langle \mathbf {e} _{1},\mathbf {a} _{1}\rangle &\langle \mathbf {e} _{1},\mathbf {a} _{2}\rangle &\langle \mathbf {e} _{1},\mathbf {a} _{3}\rangle &\ldots \\0&\langle \mathbf {e} _{2},\mathbf {a} _{2}\rangle &\langle \mathbf {e} _{2},\mathbf {a} _{3}\rangle &\ldots \\0&0&\langle \mathbf {e} _{3},\mathbf {a} _{3}\rangle &\ldots \\\vdots &\vdots &\vdots &\ddots \end{pmatrix}}.}

Exemple

On reprend la matrice de l'exemple

A = ( 12 51 4 6 167 68 4 24 41 ) . {\displaystyle A={\begin{pmatrix}12&-51&4\\6&167&-68\\-4&24&-41\end{pmatrix}}.}

Rappelons qu'une matrice orthogonale Q vérifie

Q T Q = I . {\displaystyle {\begin{matrix}Q^{T}\,Q=I.\end{matrix}}}

On peut alors calculer Q par les moyens de Gram-Schmidt comme suit :

U = ( u 1 u 2 u 3 ) = ( 12 69 58 / 5 6 158 6 / 5 4 30 33 ) ; {\displaystyle U={\begin{pmatrix}\mathbf {u} _{1}&\mathbf {u} _{2}&\mathbf {u} _{3}\end{pmatrix}}={\begin{pmatrix}12&-69&-58/5\\6&158&6/5\\-4&30&-33\end{pmatrix}};}
Q = ( u 1 u 1 u 2 u 2 u 3 u 3 ) = ( 6 / 7 69 / 175 58 / 175 3 / 7 158 / 175 6 / 175 2 / 7 6 / 35 33 / 35 ) . {\displaystyle Q={\begin{pmatrix}{\frac {\mathbf {u} _{1}}{\|\mathbf {u} _{1}\|}}&{\frac {\mathbf {u} _{2}}{\|\mathbf {u} _{2}\|}}&{\frac {\mathbf {u} _{3}}{\|\mathbf {u} _{3}\|}}\end{pmatrix}}={\begin{pmatrix}6/7&-69/175&-58/175\\3/7&158/175&6/175\\-2/7&6/35&-33/35\end{pmatrix}}.}

Dans ce cas, on a :

Q T A = Q T Q R = R ; {\displaystyle {\begin{matrix}Q^{T}A=Q^{T}Q\,R=R;\end{matrix}}}
R = Q T A = ( 14 21 14 0 175 70 0 0 35 ) . {\textstyle {\begin{matrix}R=Q^{T}A=\end{matrix}}{\begin{pmatrix}14&21&-14\\0&175&-70\\0&0&35\end{pmatrix}}.}

Relation avec la décomposition RQ

La décomposition RQ transforme une matrice A en produit d'une matrice triangulaire supérieure R et une matrice orthogonale Q. La seule différence avec la décomposition QR est l'ordre de ces matrices.

La décomposition QR est l'application du procédé de Gram-Schmidt sur les colonnes de A, en partant de la première colonne ; la décomposition RQ est l'application du procédé de Gram-Schmidt sur les lignes de A, en partant de la dernière ligne.

Méthode de Givens

Dans cette méthode, la matrice Q utilise des rotations de Givens (en). Chaque rotation annule un élément de la partie triangulaire inférieure stricte de la matrice, construisant la matrice R, tandis que la concaténation des rotations engendre la matrice Q.

Dans la pratique, les rotations de Givens ne sont pas effectivement assurées par la construction d'une matrice pleine et une multiplication matricielle. Une procédure de rotation de Givens est utilisé à la place qui est l'équivalent de la multiplication par une matrice de Givens creuse, sans efforts supplémentaires de la manipulation des éléments non nuls. La procédure de rotation de Givens est utile dans des situations où seul un nombre relativement restreint hors éléments diagonaux doivent être remis à zéro, et est plus facilement parallélisée que les transformations de Householder.

Exemple

Reprenons le même exemple

A = ( 12 51 4 6 167 68 4 24 41 ) . {\displaystyle A={\begin{pmatrix}12&-51&4\\6&167&-68\\-4&24&-41\end{pmatrix}}.}

On doit d'abord construire une matrice de rotation qui annulera l'élément le plus bas de la colonne de gauche, a31 = –4, qu'on construit par une méthode de rotation de Givens. On appelle cette matrice G1. On va d'abord faire une rotation du vecteur (6,-4), pour le ramener sur l'axe X. Ce vecteur forme un angle θ = arctan –(–4)/6. La matrice G1 est donc donnée par :

G 1 = ( 1 0 0 0 cos ( θ ) sin ( θ ) 0 sin ( θ ) cos ( θ ) ) {\displaystyle G_{1}={\begin{pmatrix}1&0&0\\0&\cos(\theta )&-\sin(\theta )\\0&\sin(\theta )&\cos(\theta )\end{pmatrix}}}
( 1 0 0 0 0,832 05 0,554 70 0 0,554 70 0,832 05 ) . {\displaystyle \approx {\begin{pmatrix}1&0&0\\0&0{,}83205&-0{,}55470\\0&0{,}55470&0{,}83205\end{pmatrix}}.}

Le produit G1A annule le coefficient a31 :

G 1 A ( 12 51 4 7,211 10 125,639 6 33,836 71 0 112,604 1 71,833 68 ) . {\displaystyle G_{1}A\approx {\begin{pmatrix}12&-51&4\\7{,}21110&125{,}6396&-33{,}83671\\0&112{,}6041&-71{,}83368\end{pmatrix}}.}

Par suite, on construit des matrices de Givens G2 et G3, qui vont respectivement annuler a21 et a32, engendrant la matrice R. La matrice orthogonale QT est formée de la concaténation de toutes les matrices de Givens créées QT = G3G2G1.

Applications

Résolution d'un système d'équations linéaires

Cette factorisation matricielle permet de résoudre des systèmes d'équations linéaires où les coefficients des inconnues sont les mêmes, mais avec plusieurs seconds membres différents. Soit à déterminer le vecteur x d'inconnues associé au second membre b :

A x = b {\displaystyle Ax=b} .

Ce problème est donc équivalent à la résolution de

Q R x = b . {\displaystyle QRx=b.}

que l'on peut mettre sous la forme :

R x = Q 1 b = Q T b {\displaystyle Rx=Q^{-1}b=Q^{T}b} .

On retrouve ainsi une résolution similaire à celle de la décomposition LU, où l'étape de résolution par descente est remplacée par une opération de transposition, et seule reste l'étape de remontée.

Décomposition en valeurs singulières d'une matrice

La décomposition QR est une méthode de calcul de la décomposition en valeurs singulières d'une matrice, en l'appliquant deux fois : une première fois sur A pour obtenir la matrice unitaire des vecteurs de sortie (A = UA1), puis une deuxième fois sur AT
1
pour la matrice unitaire des vecteurs d'entrée (AT
1
= VΣ
).

Calcul d'un déterminant

Si A est sous forme QR, son déterminant se calcule facilement :

det ( A ) = det ( Q ) det ( R ) = ( ± 1 ) × r i i . {\displaystyle \det(A)=\det(Q)\det(R)=(\pm 1)\times \prod r_{ii}.}

Le déterminant de Q vaut ±1 selon que la base de ses vecteurs colonne est directe ou non, et le déterminant de R est égale au produit de ses coefficients diagonaux.

Voir aussi

Sur les autres projets Wikimedia :

  • Décomposition QR, sur Wikiversity

Articles connexes

Bibliographie

Patrick Lascaux et Raymond Théodor, Analyse numérique matricielle appliquée à l'art de l'ingénieur, t. 1 : Méthodes directes [détail des éditions]

Crédit d'auteurs

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « QR decomposition » (voir la liste des auteurs).
v · m
Matrices
Forme
Transformée
Relation
Propriété
Famille
Associée
Résultats
Décompositions
Articles liés
v · m
Recherche de zéro
Transformations de matrice
Résolutions de systèmes
Intégration numérique
Équations différentielles
Interpolation numérique
  • icône décorative Portail de l’algèbre