% programita para la serie de senos y cosenos de f(x) % -L \le x \le L %f = inline('(1-x).*(x+1)','x'); %f = inline('1-abs(x)','x'); %f = inline('(x-1).^2.*(x+1).^2','x'); f = inline('(x>0)-(x<0)','x'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% L = 1; margen = 0.1; x = [-L:0.001:L]; ff = f(x); for N = [1 3 5 15 25] [a0 a b] = fouriercoeff(f,L,N); n=[1:N]; npix = pi*(n'*x); fap = a0/2 + a * cos(npix) + b * sin(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 fff = ff; x = [-3*L:0.001:3*L]; ff = f(x); for N = [1 3 5 15 25] [a0 a b] = fouriercoeff(f,L,N); n=[1:N]; npix = pi*(n'*x); fap = a0/2 + a * cos(npix) + b * sin(npix); M = max(2*fap); m = min([ff fap]); 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])