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

% Input: A Matrix

% Output: Q  orthonormale Matrix
%         R  obere Dreiecksmatrix

function [Q,R]=my_mgs(A)

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

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