FACTORISATION QR AVEC L'ALGORITHME DE HOUSEHOLDER
Contents
Exercice 1
Ecrivez une fonction [W,R] = householder(A) qui prend en entree une matrice A mxn et qui donne en sortie la matrice triangulaire superieure R de la factorisation QR et la matrice triangulaire inf?rieure W dont les colonnes sont les reflections Householder successives.
Testez votre fonction avec la matrice suivante:
rng('default')
A = rand(5,3)-0.5
A = 0.3147 -0.4025 -0.3424 0.4058 -0.2215 0.4706 -0.3730 0.0469 0.4572 0.4134 0.4575 -0.0146 0.1324 0.4649 0.3003
Le resultat de householder(A) devrait etre:
[W,R]=householder(A)
W = 0.8394 0 0 0.3143 -0.7412 0 -0.2889 -0.0711 0.8265 0.3202 0.5090 0.3257 0.1025 0.4318 0.4592 R = -0.7689 -0.0216 0.0697 0 0.7989 0.2371 -0.0000 0 -0.7596 0 -0.0000 0 0 0 0
Exercice 2
Ecrivez une fonction Q = formQ(W) qui calcule et renvoie la matrice mxm unitaire Q de la factorisation QR.
Testez votre fonction sur W,
Q = formQ(W)
Q = -0.4093 -0.5149 0.2525 -0.6386 -0.3096 -0.5277 -0.2915 -0.7590 0.2206 0.1086 0.4851 0.0718 -0.5349 -0.2744 -0.6309 -0.5376 0.5581 0.1441 0.2285 -0.5714 -0.1721 0.5773 -0.2309 -0.6450 0.4096
Verifiez que Q est unitaire:
Q*Q'
ans = 1.0000 -0.0000 -0.0000 0 0 -0.0000 1.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 -0.0000 0 -0.0000 -0.0000 1.0000 0.0000 0 -0.0000 -0.0000 0.0000 1.0000
Exercice 3
Calculer trois factorisations QR de la matrice Z a l'aide de householder et formQ, mgs, et la fonction MATLAB [Q,R]=qr(Z,0). Quelle difference voyez-vous?