
function demo_spline_cubica_naturale

% Oggetto:
% Interpolazione della funzione "sin" in [0,2*pi],
% mediante splines lineari

a=0; b=2*pi;
f=@(x) sin(x);

% numero subintervalli
N=7;

% punti equispaziati in cui interpolare "f".
hx=(b-a)/N;  x=a:hx:b;  
y=feval(f,x); % valore funzione in "x"   

% punti test in cui valutare gli errori forniti tra
% funzione e interpolante
ht=1/10000; t=a:ht:b; 

% valori assunti dall'interpolante spline cubica (naturale) 
%  nei punti test "tx"
pp=csape(x,y,'variational'); z=ppval(pp,t); 

% valore della funzione "f" nei nodi test
ftx=feval(f,t); 

% valutazione errore di interpolazione nei nodi test
maxerr=max(abs(ftx-z));

% stampa risultati a video
fprintf('\n \t massimo errore di interpolazione: %1.2e',...
    maxerr);
fprintf('\n \n');

% ------------- plot -------------
clf;       
plot(t,ftx,t,z,'LineWidth',2); 
hold on; 
% grafico delle coppie da interpolare
plot(x,y,'ko','LineWidth',1,'MarkerFaceColor','c','MarkerSize',8);
% legenda e titolo
title('Esempio interpolante spline cubica naturale');
legend('sin(x)','intp. spline cubica nat.','coppie da intp.');
hold off
