%fattorizzazione QR
clear all
clc

A=[0 -1 0 1 -3; -2 -1 0 -2 1; -2 0 0 0 4; 0 0 10 4 0;0 0 4 0 1];
b=sum(A,2);

[Q,R]=FATT_QR(A);
y=Q'*b;
x=R\y;

function [Q,R] = FATT_QR(A)
n=length(A);
Q=eye(n);

for k=1:n-1
    v=A(k:n, k);
    u=zeros(n,1);
    if round(abs(v(1)),4)==0
        v(1)=0;
        u(k:n,1)= v +norm(v)*eye(n-k+1,1);
    else
        u(k:n,1)= v +sign(v(1))*norm(v)*eye(n-k+1,1);
    end

    Qi=eye(n)- 2*(u*u')/(u'*u);
    Q=Qi*Q;
    A=Qi*A;
    
end

R=A;
end
