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

% Input: A Matrix

% Output: Q  orthonormale Matrix
%         R  obere Dreiecksmatrix

function [Q,R]=my_hqr(A)

Q=eye(size(A,1));
R=A;

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

Q=Q';