function demo_minimiquadrati

a=0; b=2*pi;
h=0.01; x=a:h:b;  % ascisse equispaziate
y=sin(2*x)+(10^(-1))*rand(size(x)); % ordinate

for n=0:8
    % valutazione coeff. dell'approssimante ai minimi quadrati 
    % "p_n" di "f" di grado "n"
    coeff=polyfit(x,y,n);
    
    % valore "p_n" nelle ascisse "x"
    z=polyval(coeff,x);   
    
    % errore ||f-p_n||_2
    err2=norm(z-y,2);
    fprintf('\n \t n: %2.0f norma2: %1.2e',n,err2);
    
    % grafico del polinomio ai minimi quadrati di grado "n"
    ht=1/10000; u=a:ht:b;      
    v=polyval(coeff,u);  
    
    clf;
    plot(x,y,'r.');
    hold on;
    plot(u,v,'k-','LineWidth',2);
    titlestr=strcat('Minimi quadrati di grado:',num2str(n));
    title(titlestr);
    legend('Dati','Approssimante Minimi quadrati')
    legend();
    hold off;
    
    % pausa di 3 secondi tra un grafico e il successivo
    pause(3);
end
fprintf('\n \n');