# fourier(y,x,n) is fourier expansion of y with x for n degree; fourier(y_,x_,n_):=if(isodd(y),integrate(y,x,-pi,pi)/2/pi+sum(integrate(y*sin(k*x),x,-pi,pi)*sin(k*x)/pi,k,1,n), if(iseven(y),integrate(y,x,-pi,pi)/2/pi+sum(integrate(y*cos(k*x),x,-pi,pi)*cos(k*x)/pi,k,1,n), integrate(y,x,-pi,pi)/2/pi+sum(integrate(y*cos(k*x),x,-pi,pi)*cos(k*x)/pi,k,1,n)+sum(integrate(y*sin(k*x),x,-pi,pi)*sin(k*x)/pi,k,1,n) )); fourier(y_,x_):=fourier(y_,x_,3); fourier(a_+b_,x_):=fourier(a,x,3)+fourier(b,x,3); fourier(a_*b_,x_):=if(hasnot(a,x),a*fourier(b,x)); fourier(e^(x_),x_):=(sinh(pi)* sin(x))/pi - (4 sinh(pi)* sin(2 x))/(5 pi) + (3 sinh(pi)* sin(3 x))/(5 pi) - (sinh(pi)* cos(x))/pi + (2 sinh(pi)* cos(2 x))/(5 pi) - (sinh(pi)* cos(3 x))/(5 pi) + e^pi/(2 pi) - e^(-pi)/(2 pi); fourier(sin(x_),x_):= sin(x); fourier(cos(x_),x_):= cos(x); fourier(y_):=fourier(y,x);