% programita para la serie de cosenos de f(x)
% 0 \le x \le L

L = 1;

%f = inline('(1-x).*(x+1)','x');
%f = inline('1-abs(x)','x');
%f = inline('5*(1-x).*(x).^5','x');
%f = inline('cos(pi*x)','x');
f = inline('sin(pi*x)');



margen = 0.1;
x = [0:0.001:L];
ff = f(x);

for N = [1 3 5 15 25]
  [a0 a] = fouriercoeff_cosine(f,L,N);

  n=[1:N];

  npix = pi*(n'*x);
  fap = a0/2 + a * cos(npix);

  M = max([ff fap]);
  m = min([ff fap]);
  plot(x,ff,'r',x,fap,'m',[-L-margen L+margen],[0 0],'b',[0 0],[-m-margen M+margen],'b');
  title(sprintf('N = %d   error = %.8f',N,max(abs(ff-fap))))
  axis([-L-margen L+margen m-margen M+margen])
  pause
end
pause

nada = fliplr(ff);
nada(end)=[];
fff = [nada ff];
x = [-3*L:0.001:3*L];
ff = f(x);

for N = [1 3 5 15 25]
  [a0 a] = fouriercoeff_cosine(f,L,N);

  n=[1:N];

  npix = pi*(n'*x);
  fap = a0/2 + a * cos(npix);

%  M = max(2*fap);
%  m = min([ff fap]);
  M = max(abs([M m]));
  m = -M;
  plot(x,ff,'r',x,fap,'m',[-3*L 3*L],[0 0],'b',[0 0],[m M],'b');
  axis([-3*L-margen 3*L+margen m-margen M+margen])
  title(sprintf('N = %d',N))
  pause
end
pause

fff(end) = [];
fff = [fff fff fff 0];
plot(x,fff,'r',x,fap,'m',[-3*L 3*L],[0 0],'b',[0 0],[m M],'b');
axis([-3*L-margen 3*L+margen m-margen M+margen])
pause
plot(x,fff,'r',[-3*L 3*L],[0 0],'b',[0 0],[m M],'b');
axis([-3*L-margen 3*L+margen m-margen M+margen])