### 6.59.2 Décomposition QR : qr

qr a comme argument une matrice carrée numérique A d’ordre n.
qr factorise numériquement cette matrice sous la forme Q*R où Q est une matrice orthogonale (tQ*Q=I) et R est une matrice triangulaire supérieure.
qr(A) renvoie Q,R et on a Q=A*inv(R).
On tape :

qr([[3,5],[4,5]])

On obtient les matrices Q, R :

[[3/5,4/5],[4/5,-3/5]],[[5,7],[0,1]]

On tape :

qr([[1,2],[3,4]])

On obtient les matrices Q, R :

[[1/(sqrt(10)),3/((sqrt(10))/5*5)],[3/(sqrt(10)),-1/((sqrt(10))/5*5)]], [[sqrt(10),7*sqrt(10)/5],[0,(sqrt(10))/5]]

Lorsque la matrice est à coefficients réels, on peut ajouter un deuxième argument optionnel -1, -2 ou -3 ou -4 à qr pour forcer l’algorithme de Householder ou Givens (coefficients approchés), ou Gram-Schmidt (coefficients exacts)

- -1 : renvoie une 3ème matrice identité (compatibilité avec certaines implémentations)
- -3 : renvoie seulement Q et R
- -2 et -4 : si Gram-Schmidt est utilisé, les colonnes de Q ne sont pas de norme 1, elles sont simplement orthogonales entre elles (ceci évite d’avoir des racines carrées).

On tape :

Q1,R1,Id1:=qr([[3,5],[4,5]],-1)

On obtient les matrices Q1, R1, Id :

[[3/5,4/5],[4/5,-3/5]],[[5,7],[0,1]],[[1,0],[0,1]]

On tape :

Q2,R2,Id2:=qr([[3,5],[4,5]],-2)

On obtient la matrice Q2, R2, Id :

[[3,4/5],[4,-3/5]],[[1,7/5],[0,1]],[[1,0],[0,1]]

On tape :

Q3,R3:=qr([[3,5],[4,5]],-3)

On obtient la matrice Q3, R3 :

[[3/5,4/5],[4/5,-3/5]],[[5,7],[0,1]]

On tape :

Q4,R4:=qr([[3,5],[4,5]],-4)

On obtient la matrice Q4, R4 :

[[3,4/5],[4,-3/5]],[[1,7/5],[0,1]]

Si on pose : A:=[[3,5],[4,5]] on a bien :
A*inv(R1)=Q1, A*inv(R2)=Q2, A*inv(R3)=Q3, A*inv(R4)=Q4