% Interpolazione trigonometrica
% Quarteroni-Saleri, Esempio 3.6, pagg. 90-91

f=inline('x.*(x-2*pi).*exp(-x)');
x=2*pi/10*[0:9]
y=f(x)
Y=fft(y);
ifft(Y)  % da confrontare con y
C=fftshift(Y)/10
z=interpft(y,100);
xx=2*pi/100*[0:99];

% plottiamo il grafico di f (blu) e il 
% grafico dell'interpolatore trigonometrico (rosso)
plot(xx,f(xx),xx,z,'r');


% Effetto dell'aliasing
% Quarteroni-Saleri, Esempio 3.7, pagg. 91-92

f=inline('sin(x)+sin(5*x)')
g=inline('sin(x)-sin(3*x)')
x=0:0.01:2*pi;
xnodi=2*pi/8*[0:7];
plot(x,f(x),x,g(x),'g',xnodi,f(xnodi),'o')
hold on
z=interpft(f(xnodi),200);
plot(2*pi/200*[0:199],z,'r')
% La curva rossa (l'interpolatore trigonometrico)
% copre perfettamente la curva verde (grafico della funzione g)


% Interpolazione trigonometrica di un "onda quadra",
% cioe' di una funzione periodica col periodo primitivo 2*pi
% che e 1 in [0,pi] e -1 in [pi,2*pi]
% Si noti "la fatica" a simulare la discontinuita' nel 
% punto x = pi (picco di Gibbs).

z=interpft([ones(1,10),-ones(1,10)],100);
plot(xx,z,'r');
z=interpft([ones(1,100),-ones(1,100)],1000);
xx=2*pi/1000*[0:999];
plot(xx,z,'r');
quit;
