% Script che 
% 1. calcola il polinomio di interpolazione
% nei punti x_i=0, pigreco, 3*pigreco/2, i=1, 2, 3
% per la funzione cos(x).
% 2. fa il grafico nell'intervallo [0, 3*pigreco/2]
% 3. stima l'errore di interpolazione in [0, 3*pigreco/2]
% 4. calcola l'errore di interpolazione in pigreco/2

% 1. e  2.

clear
close all
nodi=[0 pi 3*pi/2] ;
P=polyfit(nodi,cos(nodi),2) ;
x=0:0.01:3*pi/2 ;
y=polyval(P,x) ;
subplot(2,1,1)
plot(x,y)
hold on
plot(nodi,cos(nodi),'rx')
grid
plot(x,cos(x),'--')
plot(pi/2,0,'o')

% 3. stima ERRORE INTERPOLAZIONE
% |cos(x)-P2(x)|<=C * (|x(x-pigreco)(x-3*pigreco/2)|)/6
% C: costante che maggiora la derivata terza di cos(x)
% C=1
 
err=max(abs(cos(x)-y)) ;
disp(['Errore massimo: ' num2str(err)])
err1=abs(x.*(x-pi).*(x-3*pi/2)/6) ;
subplot(2,1,2)
plot(x,err1)
ylabel('Stima errore')
grid
k=find(x<pi/2-0.01) ;
disp(['Stima errore in ' num2str(pi/2) ' (pigreco/2): ' num2str(err1(k(end)))])

% 4.
err1=abs(cos(pi/2)-polyval(P,pi/2)) ;
