clear all
t=[0 1 2 3 4 5]';
y=[1 2.7 5.8 6.6 7.5 9.9]';

m=length(y);
c=ones(m,1);

A=[c t];
mn=size(A);
n=mn(2);

if (n > m)
    disp('m tem ser maior que n!');
    return
end

b=A'*y;                    % termo independente
D=A'*A;                    % matriz dos coeficientes

R=chol(D);                 % factorizaçao de Cholesky
z=R'\b;                    % resoluçao de R'z=b
x=R\z;                     % resoluçao de Rx=z

% grafico 
close all                    % fecha graficos existentes
tt=0:0.1:5;                  % variavel independente   
order=[n:-1:1]';             % indices por ordem inversa
xp=x(order);                 % permutaçao inversa de x
Pt=polyval(xp,tt);           % valores do polinomio
plot(tt,Pt,'-'); hold on;    % grafico de Pt
plot(t,y,'ro');  hold on;    % grafico de y

% residuo final
r=y-A*x;
resnorm=norm(r,2)