Come sempre verifichiamo che il nostro algoritmo funzioni, e per
fare questo prendiamo una matrice ortogonale (nel nostro esempio
la matrice identità con le colonne invertite, che
sappiamo essere ortogonale) ed una matrice triangolare superiore,
le moltiplichiamo tra loro ed applichiamo la fattorizzazione
al risultato:
» q=[0 1;1 0] q = 0 1 1 0 » r=[5 6; 0 7] r = 5 6 0 7 » a=q*r a = 0 7 5 6 » a1=fattqr(a) a1 = -5 -6 1 7 » r1=triu(a1) r1 = -5 -6 0 7 » v1=[1;1] v1 = 1 1 » p1=eye(2)-2*(v1*v1')/(v1'*v1) p1 = 0 -1 -1 0 » v2=[1] v2 = 1 » p2=eye(1)-2*(v2*v2')/(v2'*v2) p2 = -1 » p2=[eye(1) 0; 0 p2] p2 = 1 0 0 -1 » q1=p1*p2 q1 = 0 1 -1 0 » q1*r1 ans = 0 7 5 6 »
come risultato abbiamo ottenuto la matrice di partenza. Possiamo allora passare ad un esempio con una matrice casuale:
» a=round(10*rand(4)) a = 4 4 5 2 3 6 9 9 3 1 9 2 4 0 3 6 » fattqr(a) ans = -7.07106781186548 -5.23259018078045 -12.16223663640862 -9.19238815542512 0.27097657163519 -5.06162029393751 -3.82486217371702 -3.14128659928206 0.27097657163519 -0.17544975548535 -5.78363461432936 -0.55069379758375 0.36130209551359 -0.38969980181225 -0.00131662244093 -5.50718211451862 »
che contiene nella parte triangolare superiore la matrice .