% Esempio di interpolazione

% Interpolazione della funzione a campana di Gauss 
% su nodi equidistanti

n = 13;
N = 100;
a = -4; b=4; 
pause

% Ascisse ed ordinate dei punti di interpolazione
X = linspace(-4,4,n);
Y = exp(-X.^2);
pause

% Calcola i coefficienti del polinomio di interpolazione
% di grado n-1
p = polyfit(X,Y,n-1);
pause

% Calcola la funzione e il polinomio su una griglia più fitta
x = linspace(a,b,N);
y = exp(-x.^2);
yp = polyval(p,x);
pause

% Effettua il grafico della funzione, del polinomio di 
% interpolazione e dei punti di interpolazione
plot(X,Y,'o',x,y,x,yp)
title(['Funzione a campana ed interpolazione polinomiale ', ...
       'su nodi equispaziati'])
legend('nodi','gaussiana','polinomio')
pause

% Utilizza adesso i nodi di Chebychev 
% come punti di interpolazione
theta = ((1:n)-0.5)*pi/n;
XC = -4*cos(theta);
YC = exp(-XC.^2);
pause

p = polyfit(XC,YC,n-1);
yp = polyval(p,x);
plot(XC,YC,'o',x,y,x,yp)
title(['Funzione a campana ed interpolazione polinomiale ', ...
       'su nodi di Chebychev'])
legend('nodi','gaussiana','polinomio')

pause
% Infine utilizziamo le funzioni splines per l'interpolazione

ys = spline(X,Y,x);
plot(X,Y,'o',x,y,x,ys)
title(['Funzione a campana ed interpolazione mediante spline cubiche ', ...
       'su nodi equispaziati'])
legend('nodi','gaussiana','spline')

