% Musterlösung
%
% Numerische Mathematik, SS 2013
%
% QR-Zerlegung mit Gram-Schmidt Q*R = A
%
% Ingolf Busch, Juni 2013

% Input: A Matrix

% Output: Q  orthonormale Matrix
%         R  obere Dreiecksmatrix

function [Q,R]=my_gs(A)

Q=zeros(size(A));
R=zeros(size(A,2));

for j=1:size(A,2)
    
    qs=A(:,j);
    
    for k=1:j-1;
        R(k,j)=Q(:,k)'*A(:,j);
        qs=qs-R(k,j)*Q(:,k);
    end
    
    R(j,j)=norm(qs);
    Q(:,j)=qs/R(j,j);
end