
function esercizio_regressione_lineare

% esercizio sulla regressione lineare

% vettori riga dei dati da approssimare
dati=[ 1.0000e+00  -1.9450e+00
       1.2000e+00  -1.2530e+00
       1.4000e+00  -1.1400e+00
       1.6000e+00  -1.0870e+00
       1.8000e+00  -7.6000e-01
       2.0000e+00  -6.8200e-01
       2.2000e+00  -4.2400e-01
       2.4000e+00  -1.2000e-02
       2.6000e+00  -1.9000e-01
       2.8000e+00   4.5200e-01
       3.0000e+00   3.3700e-01
       3.2000e+00   7.6400e-01
       3.4000e+00   5.3200e-01
       3.6000e+00   1.0730e+00
       3.8000e+00   1.2860e+00
       4.0000e+00   1.5020e+00
       4.2000e+00   1.5820e+00
       4.4000e+00   1.9930e+00
       4.6000e+00   2.4730e+00
       4.8000e+00   2.5030e+00
       5.0000e+00   2.3220e+00];

x=dati(:,1); y=dati(:,2);   
   
% coeff. retta regressione "P(1)*x+P(2)".
P=polyfit(x,y,1);

% stampa retta regressione
fprintf('\n \t (%1.15e)*x+(%1.15e)',P(1),P(2));

% ------ calcolo errore regressione ------

% valore "p_1" nelle ascisse "x"
z=polyval(P,x);

% errore ||f-p_1||_2
err2=norm(z-y,2);
fprintf('\n \t Errore regressione norma2: %1.2e',err2);

% ------ grafico esperimento regressione ------

clf;
% plot punti
plot(x,y,'go','LineWidth',1,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor','g',...
    'MarkerSize',10);
hold on;
% plot retta regressione
plot(x,z,'k-','LineWidth',2);
% titoli e legenda
title('Regressione lineare');
legend('Dati','Retta di regressione')
hold off;

fprintf('\n \n');