Implementazione in Matlab

Di seguito presentiamo l'implementazione del metodo di fattorizzazione $QR$.

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



Morpheus 2004-01-04