Di seguito presentiamo l'implementazione del metodo di
fattorizzazione
.
function A=fattQR(A)
%FATTQR Fattorizza la matrice A come QR con Q matrice ortogonale
% ed R triangolare superiore
%
% A=FATTQR(A)
%
% I parametri della funzione sono:
% A -> la matrice quadrata da fattorizzare
%
% I valori di ritorno sono:
% A -> la matrice modificata contenente nella parte
% strettamente triangolare inferiore gli elementi
% significativi dei vettori di Householder nella
% parte superiore R
%
% See Also SOLVEQR, FATTLU, FATTPALU, FATTLDLT
[m,n]=size(A);
for i=1:n
(1) alpha=norm(A(i:m,i));
if alpha==0
disp('No rango MAX!!');
return
end
v1=A(i,i);
if v1>=0
v1=v1+alpha;
s=1;
A(i,i)=-alpha;
else
v1=v1-alpha;
s=-1;
A(i,i)=alpha;
end
(2) A(i+1:m,i)=A(i+1:m,i)/v1;
vt=[1;A(i+1:m,i)];
beta=s*v1/alpha;
(3) A(i:m,i+1:n)=A(i:m,i+1:n)-(beta*[1;A(i+1:m,i)])*
([1 A(i+1:m,i)']*A(i:m,i+1:n));
end