function FourierSeries N=50; Resolution = 1e-6; TimeDomain = 2*pi; SaveName = 'try'; GlobalError=zeros(N,1); for k=0:N a0 = quad(@(x) f(x).* Cos0(x), 0,TimeDomain, 1e-8) / TimeDomain; for i=1:k a(i) = quad(@(x) f(x).* CosN(x,i), 0,TimeDomain, 1e-8) / TimeDomain * 2; b(i) = quad(@(x) f(x).* SinN(x,i), 0,TimeDomain, 1e-8) / TimeDomain * 2; end MeshX = 0:Resolution:2*pi; FV = f(MeshX); FT = a0*Cos0(MeshX); for i=1:k FT = FT + a(i)*CosN(MeshX,i); FT = FT + b(i)*SinN(MeshX,i); end Frequencies = 0:1:k; Amplitudes = zeros(size(Frequencies)); Amplitudes(1) = a0; for i=1:k Amplitudes(i+1)=sqrt( a(i)^2 + b(i)^2 ); end fig = figure(1); set(fig,'Position',[680 560 1120 420]); subplot(1,2,1); hold on; set(gca,'NextPlot','replace'); pFV = plot(MeshX,FV); set(gca,'NextPlot','add'); pFT = plot(MeshX,FT); set(gca,'Box','on','XGrid','on','YGrid','on','XLim',[0 TimeDomain]); set(gca,'FontSize',12,'FontName','Times','FontWeight','bold'); xlabel('t(s)','FontSize',16,'FontName','Times'); ylabel('f(t)','FontSize',16,'FontName','Times'); set(pFV,'LineWidth',2,'Color',[0 0 0]); set(pFT,'LineWidth',2,'Color',[1 0 0]); hold off; subplot(1,2,2); spectra = bar(Frequencies,Amplitudes); set(gca,'Box','on','XGrid','on','YGrid','on','XLim',[0 10],'YLim',[0 1.4]); set(gca,'FontSize',12,'FontName','Times','FontWeight','bold'); xlabel('\omega_i(rad/s)','FontSize',16,'FontName','Times'); ylabel('A(\omega)','FontSize',16,'FontName','Times'); set(spectra,'BarWidth',0.2,'FaceColor',[0 0 0]); pause(0.1) % saveas(fig, strcat(SaveName,num2str(k)), 'png'); ErrorFunction = abs( FV - FT ); GlobalError(k+1) = max(ErrorFunction); end ListOfN=0:1:N; figure(3); err=plot(ListOfN,GlobalError); set(gca,'Box','on','XGrid','on','YGrid','on','XLim',[0 N],'YScale','log'); set(gca,'FontSize',12,'FontName','Times','FontWeight','bold'); xlabel('N','FontSize',16,'FontName','Times'); ylabel('E','FontSize',16,'FontName','Times'); set(err,'LineWidth',2,'Color',[0 0 0]); % saveas(fig, strcat(SaveName,num2str(N)), 'png'); function y=f(x) % y = 3./(5-4*cos(x)); % y = abs(-x + pi); y = sign(x - pi); % y = 3*cos(x) + 5*sin(5*x); function y=Cos0(x) y=1 + 0*x; function y=CosN(x,N) y=cos(N*x); function y=SinN(x,N) y=sin(N*x);