Application Center - Maplesoft

App Preview:

Approximations to Piecewise Continuous Functions

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Image 

 

 

 

 

 

Approximations to Piecewise Continuous Functions 

 

Univ.-Prof. Dr.-Ing. habil. Josef  BETTEN 

RWTH Aachen University 

Templergraben 55 

D-52056  A a c h e n ,  Germany 

betten@mmw.rwth-aachen.de 

 

 

Abstract 

 

This worksheet is concerned with approximations to piecewise continuous functions. It has been illustrated that Maplesoft furnishes powerful tools in finding best approximations to several functions. Some examples are discussed in more detail.  

 

Keywords:  step functions;  HEAVISIDE functions; FOURIER approximation; L-two norm  

 

                   

FOURIER Approximation 

 

 

> restart:

 

 

> FOURIER_series(x):=          a[0]/2+sum(a[k]*cos(k*x)+b[k]*sin(k*x),k=1..infinity);

 

 

`:=`(FOURIER_series(x), `+`(`*`(`/`(1, 2), `*`(a[0])), sum(`+`(`*`(a[k], `*`(cos(`*`(k, `*`(x))))), `*`(b[k], `*`(sin(`*`(k, `*`(x)))))), k = 1 .. infinity))) (1)

 

 

 

> a[k]:=(1/Pi)*Int(f(x)*cos(k*x),x=0..2*Pi);

 

 

`:=`(a[k], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(f(x), `*`(cos(`*`(k, `*`(x))))), x = 0 .. `+`(`*`(2, `*`(Pi)))))))) (2)

 

 

> a[0]:=simplify(subs(k=0,%));

 

 

`:=`(a[0], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(f(x), x = 0 .. `+`(`*`(2, `*`(Pi)))))))) (3)

 

 

> b[k]:=(1/Pi)*Int(f(x)*sin(k*x),x=0..2*Pi);

 

 

`:=`(b[k], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(f(x), `*`(sin(`*`(k, `*`(x))))), x = 0 .. `+`(`*`(2, `*`(Pi)))))))) (4)

 

 

>  

 

 

Unit Step Function or HEAVISIDE Unit Function 

 

 

> F(x):=piecewise(x>0 and x<Pi,1,x>Pi and x<2*Pi,-1,x>2*Pi,1);

 

 

`:=`(F, proc (x) options operator, arrow; piecewise(`and`(`<`(0, x), `<`(x, Pi)), 1, `and`(`<`(Pi, x), `<`(x, `+`(`*`(2, `*`(Pi))))), -1, `<`(`+`(`*`(2, `*`(Pi))), x), 1) end proc) (5)

 

 

> plot(%,x=0..2.1*Pi,labels=[x,F],color=black);

 

 

Plot_2d  

 

 

Alternatively, the piecewise continuous function F(x) can be represented as a HEAVISIDE  

function: 

 

> alias(H=Heaviside):

 

 

> HEAVISIDE[F]:=convert(F(x),H);

 

 

`:=`(HEAVISIDE[F], `+`(H(x), `-`(`*`(2, `*`(H(`+`(x, `-`(Pi)))))), `*`(2, `*`(H(`+`(`-`(`*`(2, `*`(Pi))), x)))))) (6)

 

 

> plot(%,x=0..2.1*Pi,color=black,                                  title="HEAVISIDE unit step function");

 

 

Plot_2d  

 

 

> A[0]:=value(subs(f(x)=F(x),a[0]));

 

 

`:=`(A[0], 0) (7)

 

 

> A[k]:=simplify(value(subs(f(x)=F(x),a[k])));

 

 

`:=`(A[k], `+`(`-`(`/`(`*`(2, `*`(sin(`*`(k, `*`(Pi))), `*`(`+`(`-`(1), cos(`*`(k, `*`(Pi))))))), `*`(k, `*`(Pi)))))) (8)

 

 

> A[k]:=subs(sin(k*Pi)=0,%);

 

 

`:=`(A[k], 0) (9)

 

 

> B[k]:=simplify(value(subs(f(x)=F(x),b[k])));

 

 

`:=`(B[k], `+`(`/`(`*`(2, `*`(cos(`*`(k, `*`(Pi))), `*`(`+`(`-`(1), cos(`*`(k, `*`(Pi))))))), `*`(k, `*`(Pi))))) (10)

 

 

> B[k]:=simplify(subs(cos(k*Pi)=(-1)^k,%));

 

 

`:=`(B[k], `+`(`/`(`*`(2, `*`(`+`(`^`(-1, `+`(1, k)), `^`(-1, `+`(`*`(2, `*`(k))))))), `*`(k, `*`(Pi))))) (11)

 

 

> for i in [1,3,5] do y(x,n=i):=sum(B[k]*sin(k*x),k=1..i) od;

 

 

`:=`(y(x, n = 1), `+`(`/`(`*`(4, `*`(sin(x))), `*`(Pi)))) (12)

 

 

`:=`(y(x, n = 3), `+`(`/`(`*`(4, `*`(sin(x))), `*`(Pi)), `*`(`/`(4, 3), `*`(`/`(`*`(sin(`+`(`*`(3, `*`(x))))), `*`(Pi)))))) (12)

 

 

`:=`(y(x, n = 5), `+`(`/`(`*`(4, `*`(sin(x))), `*`(Pi)), `*`(`/`(4, 3), `*`(`/`(`*`(sin(`+`(`*`(3, `*`(x))))), `*`(Pi)))), `*`(`/`(4, 5), `*`(`/`(`*`(sin(`+`(`*`(5, `*`(x))))), `*`(Pi)))))) (12)

 

 

>  

 

 

> plot({y(x,n=1),y(x,n=3),y(x,n=5)},x=0..3.5*Pi,          labels=[x,y],color=black,                                    title="Approximations with n = [1, 3, 5]");

 

 

Plot_2d  

 

 

> for i in [1,3,99] do y(x,n=i):=sum(B[k]*sin(k*x),k=1..i) od:

 

 

> plot({y(x,n=1),y(x,n=3),y(x,n=99)},x=0..3.5*Pi,         labels=[x,y],color=black,                                   title="Approximations with n = [1, 3, 99]");

 

 

Plot_2d  

 

 

> L_zwei[n]:=sqrt((1/Pi)*Int((F(x_)-y(x,n))^2,x=0..Pi));

 

 

`:=`(L_zwei[n], `*`(`^`(`+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(`^`(`+`(F(x_), `-`(y(x, n))), 2)), x = 0 .. Pi)))), `/`(1, 2)))) (13)

 

 

> for i in [1,3,5,99] do     L_zwei[n=i]:=            evalf(sqrt((1/Pi)*int((F(x)-y(x,n=i))^2,x=0.05..0.95*Pi)),4) od;

 

 

`:=`(L_zwei[n = 1], .3658) (14)

 

 

`:=`(L_zwei[n = 3], .2293) (14)

 

 

`:=`(L_zwei[n = 5], .1658) (14)

 

 

`:=`(L_zwei[n = 99], 0.1289e-1) (14)

 

 

 

>  

 

Example:  h(x) 

 

 

> h(x):=piecewise(x>0 and x<Pi,Pi,x>Pi and x<2*Pi,x-Pi,                      x>2*Pi and x<3*Pi,Pi);

 

 

`:=`(h, proc (x) options operator, arrow; piecewise(`and`(`<`(0, x), `<`(x, Pi)), Pi, `and`(`<`(Pi, x), `<`(x, `+`(`*`(2, `*`(Pi))))), `+`(x, `-`(Pi)), `and`(`<`(`+`(`*`(2, `*`(Pi))), x), `<`(x, `+`(`... (15)

 

 

   

 

 

 

> plot(%,x=0..3*Pi,color=black,labels=[x,h]);

 

 

Plot_2d  

 

 

> alias(H=Heaviside):

 

 

> HEAVISIDE[h]:=convert(h(x),H);

 

 

`:=`(HEAVISIDE[h], `+`(`*`(Pi, `*`(H(x))), `-`(`*`(2, `*`(Pi, `*`(H(`+`(x, `-`(Pi))))))), `*`(x, `*`(H(`+`(x, `-`(Pi))))), `-`(`*`(x, `*`(H(`+`(`-`(`*`(2, `*`(Pi))), x))))), `*`(2, `*`(Pi, `*`(H(`+`(`... (16)

 

 

> plot(%,x=0..3*Pi,color=black,                                       title="HEAVISIDE  Function for  h(x)");

 

 

Plot_2d  

 

 

> A[0]:=value(subs(f(x)=h(x),a[0]));

 

 

`:=`(A[0], `+`(`/`(`*`(3, `*`(Pi)), `*`(2)))) (17)

 

 

> A[k]:=simplify(value(subs(f(x)=h(x),a[k]))):

 

 

> A[k]:=subs({sin(k*Pi)=0,cos(k*Pi)=(-1)^k,(cos(k*Pi))^2=1},%);

 

 

`:=`(A[k], `/`(`*`(`+`(1, `-`(`^`(-1, k)))), `*`(Pi, `*`(`^`(k, 2))))) (18)

 

 

> B[k]:=simplify(value(subs(f(x)=h(x),b[k]))):

 

 

> B[k]:=subs({sin(k*Pi)=0,cos(k*Pi)=(-1)^k,(cos(k*Pi))^2=1},%);

 

 

`:=`(B[k], `+`(`-`(`/`(`*`(`^`(-1, k)), `*`(k))))) (19)

 

 

> y(x,n):=A[0]/2+sum(A[k]*cos(k*x)+B[k]*sin(k*x),k=1..n);

 

 

`:=`(y(x, n), `+`(`/`(`*`(3, `*`(Pi)), `*`(4)), sum(`+`(`/`(`*`(`+`(1, `-`(`^`(-1, k))), `*`(cos(`*`(k, `*`(x))))), `*`(Pi, `*`(`^`(k, 2)))), `-`(`/`(`*`(`^`(-1, k), `*`(sin(`*`(k, `*`(x))))), `*`(k))... (20)

 

 

> for i in [1,2,3] do                           y(x,n=i):=A[0]/2+sum(A[k]*cos(k*x)+B[k]*sin(k*x),k=1..i)                      od;

 

 

`:=`(y(x, n = 1), `+`(`/`(`*`(3, `*`(Pi)), `*`(4)), `/`(`*`(2, `*`(cos(x))), `*`(Pi)), sin(x))) (21)

 

 

`:=`(y(x, n = 2), `+`(`/`(`*`(3, `*`(Pi)), `*`(4)), `/`(`*`(2, `*`(cos(x))), `*`(Pi)), sin(x), `-`(`*`(`/`(1, 2), `*`(sin(`+`(`*`(2, `*`(x))))))))) (21)

 

 

`:=`(y(x, n = 3), `+`(`/`(`*`(3, `*`(Pi)), `*`(4)), `/`(`*`(2, `*`(cos(x))), `*`(Pi)), sin(x), `-`(`*`(`/`(1, 2), `*`(sin(`+`(`*`(2, `*`(x))))))), `*`(`/`(2, 9), `*`(`/`(`*`(cos(`+`(`*`(3, `*`(x))))),... (21)

 

 

>  

 

 

> alias(H=Heaviside,co=color):

 

 

> p[1]:=plot({y(x,n=1),y(x,n=2),y(x,n=3)},x=0..3*Pi,co=black):

 

 

> p[2]:=plot(1.72*H(x-3*Pi),x=0..3.01*Pi,co=black):

 

 

> p[3]:=plot(h(x),x=0..3*Pi,                                  title="Approximations with n = [1,  2,  3]" ):

 

 

> plots[display]({seq(p[k],k=1..3)});

 

 

Plot_2d  

 

 

> for i in [1,2,50] do                          y(x,n=i):=A[0]/2+sum(A[k]*cos(k*x)+B[k]*sin(k*x),k=1..i)                      od:

 

 

> p[4]:=plot({y(x,n=1),y(x,n=2),y(x,n=50)},x=0..3*Pi,co=black):

 

 

> p[5]:=plot(1.72*H(x-3*Pi),x=0..3.01*Pi,co=black,            title="Approximations with n = [1, 2, 50]"):

 

 

> plots[display]({p[4],p[5]});

 

 

Plot_2d  

 

Smoothing of  the FOURIER-Series  y(x, n=3): 

 

 

> g(k,N):=sin(Pi*k/N)/(Pi*k/N);  # smoothing factor

 

 

`:=`(g(k, N), `/`(`*`(sin(`/`(`*`(Pi, `*`(k)), `*`(N))), `*`(N)), `*`(Pi, `*`(k)))) (22)

 

 

> G(x,n,N):=A[0]/2+  sum(g(kappa,Nu)*(A[kappa]*cos(kappa*x)+B[kappa]*sin(kappa*x)),       kappa=1..n);  # smoothing function

 

 

`:=`(G(x, n, N), `+`(`/`(`*`(3, `*`(Pi)), `*`(4)), sum(`*`(g(kappa, Nu), `*`(`+`(`*`(A[kappa], `*`(cos(`*`(kappa, `*`(x))))), `*`(B[kappa], `*`(sin(`*`(kappa, `*`(x)))))))), kappa = 1 .. n))) (23)

 

 

> g(k,4):=subs(N=4,g(k,N));       # N := n + 1

 

 

`:=`(g(k, 4), `+`(`/`(`*`(4, `*`(sin(`+`(`/`(`*`(k, `*`(Pi)), `*`(4)))))), `*`(Pi, `*`(k))))) (24)

 

 

> G(x,n=3,N=4):=subs({n=3,Nu=4,kappa=k,g(kappa,Nu)=g(k,4),     A[kappa]=A[k],B[kappa]=B[k]},G(x,n,N));

 

 

`:=`(G(x, n = 3, N = 4), `+`(`/`(`*`(3, `*`(Pi)), `*`(4)), sum(`+`(`/`(`*`(4, `*`(sin(`+`(`/`(`*`(k, `*`(Pi)), `*`(4)))), `*`(`+`(`/`(`*`(`+`(1, `-`(`^`(-1, k))), `*`(cos(`*`(k, `*`(x))))), `*`(Pi, `*... (25)

 

 

> alias(H=Heaviside,co=color):

 

 

> p[6]:=plot({y(x,n=3),G(x,n=3,N=4)},x=0..3*Pi,co=black):

 

 

> p[7]:=plot(1.72*H(x-3*Pi),x=0..3.01*Pi,co=black):

 

 

> p[8]:=plot(h(x),x=0..3*Pi,                                   title="Approximation with n = 3 and its Smoothing"):

 

 

> plots[display](seq(p[k],k=6..8));

 

 

Plot_2d  

 

Smoothing of  the FOURIER-Series  y(x, n = 2): 

 

g(k,3):=subs(N=3,g(k,N)); 

 

`:=`(g(k, 3), `+`(`/`(`*`(3, `*`(sin(`+`(`/`(`*`(k, `*`(Pi)), `*`(3)))))), `*`(Pi, `*`(k))))) (26)

 

 

> G(x,n=2,N=3):=evalf(A[0]/2+           sum(g(k,3)*(A[k]*cos(k*x)+B[k]*sin(k*x)),k=1..2),4);

 

 

`:=`(G(x, n = 2, N = 3), `+`(2.356, `*`(.5264, `*`(cos(x))), `*`(.8268, `*`(sin(x))), `-`(`*`(.2067, `*`(sin(`+`(`*`(2., `*`(x))))))))) (27)

 

 

> alias(H=Heaviside,co=color):

 

 

> p[9]:=plot({h(x),y(x,n=2),G(x,n=2,N=3)},x=0..3*Pi,co=black,       title="Approximation with n = 2 and its Smoothing"):

 

 

> plots[display]({p[7],p[9]});

 

 

Plot_2d  

 

The above Figures illustrate the good approximations  to the given function h(x). 

 

Example:  K(x) 

 

 

> K(x):=piecewise(x>-Pi and x<0,3,x>0 and x<1/2,0,                                            x>1/2 and x<Pi,1/x);

 

 

`:=`(K, proc (x) options operator, arrow; piecewise(`and`(`<`(`+`(`-`(Pi)), x), `<`(x, 0)), 3, `and`(`<`(0, x), `<`(x, `/`(1, 2))), 0, `and`(`<`(`/`(1, 2), x), `<`(x, Pi)), `/`(1, `*`(x))) end proc) (28)

 

 

>  

 

 

> plot(%,x=-Pi..Pi,color=black,labels=[x,K]);

 

 

Plot_2d  

 

 

> alpha[0]:=(1/Pi)*Int(f(x),x=-Pi..Pi);

 

 

`:=`(alpha[0], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(f(x), x = `+`(`-`(Pi)) .. Pi))))) (29)

 

 

> alpha[k]:=(1/Pi)*Int(f(x)*cos(k*x),x=-Pi..Pi);

 

 

`:=`(alpha[k], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(f(x), `*`(cos(`*`(k, `*`(x))))), x = `+`(`-`(Pi)) .. Pi))))) (30)

 

 

> beta[k]:=(1/Pi)*Int(f(x)*sin(k*x),x=-Pi..Pi);

 

 

`:=`(beta[k], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(f(x), `*`(sin(`*`(k, `*`(x))))), x = `+`(`-`(Pi)) .. Pi))))) (31)

 

 

> Alpha[0]:=value(subs(f(x)=K(x),alpha[0]));

 

 

`:=`(Alpha[0], `/`(`*`(`+`(`*`(3, `*`(Pi)), ln(2), ln(Pi))), `*`(Pi))) (32)

 

 

> Alpha[k]:=simplify(value(subs(f(x)=K(x),alpha[k])));

 

 

`:=`(Alpha[k], `+`(`-`(`/`(`*`(`+`(`-`(`*`(3, `*`(sin(`*`(k, `*`(Pi)))))), `*`(Ci(`+`(`/`(`*`(k), `*`(2)))), `*`(k)), `-`(`*`(Ci(`*`(k, `*`(Pi))), `*`(k))))), `*`(k, `*`(Pi)))))) (33)

 

 

> A[k]:=subs(sin(k*Pi)=0,%);

 

 

`:=`(A[k], `+`(`-`(`/`(`*`(`+`(`*`(Ci(`+`(`/`(`*`(k), `*`(2)))), `*`(k)), `-`(`*`(Ci(`*`(k, `*`(Pi))), `*`(k))))), `*`(k, `*`(Pi)))))) (34)

 

 

> BETA[k]:=simplify(value(subs(f(x)=K(x),beta[k])));

 

 

`:=`(BETA[k], `/`(`*`(`+`(`*`(3, `*`(cos(`*`(k, `*`(Pi))))), `-`(3), `-`(`*`(Si(`+`(`/`(`*`(k), `*`(2)))), `*`(k))), `*`(Si(`*`(k, `*`(Pi))), `*`(k)))), `*`(k, `*`(Pi)))) (35)

 

 

> BETA[k]:=subs(cos(k*Pi)=(-1)^k,%);

 

 

`:=`(BETA[k], `/`(`*`(`+`(`*`(3, `*`(`^`(-1, k))), `-`(3), `-`(`*`(Si(`+`(`/`(`*`(k), `*`(2)))), `*`(k))), `*`(Si(`*`(k, `*`(Pi))), `*`(k)))), `*`(k, `*`(Pi)))) (36)

 

 

> y(x,n):=Alpha[0]/2+               sum(Alpha[k]*cos(k*x)+BETA[k]*sin(k*x),k=1..n):

 

 

> y(x,n):=subs(sin(k*Pi)=0,%);

 

 

`:=`(y(x, n), `+`(`*`(`/`(1, 2), `*`(`/`(`*`(`+`(`*`(3, `*`(Pi)), ln(2), ln(Pi))), `*`(Pi)))), sum(`+`(`-`(`/`(`*`(`+`(`*`(Ci(`+`(`/`(`*`(k), `*`(2)))), `*`(k)), `-`(`*`(Ci(`*`(k, `*`(Pi))), `*`(k))))...
`:=`(y(x, n), `+`(`*`(`/`(1, 2), `*`(`/`(`*`(`+`(`*`(3, `*`(Pi)), ln(2), ln(Pi))), `*`(Pi)))), sum(`+`(`-`(`/`(`*`(`+`(`*`(Ci(`+`(`/`(`*`(k), `*`(2)))), `*`(k)), `-`(`*`(Ci(`*`(k, `*`(Pi))), `*`(k))))...
(37)

 

 

> y(x,1):=subs(n=1,y(x,n)):

 

 

> Y(x,1):=evalf(%,4);

 

 

`:=`(Y(x, 1), `+`(1.792, `*`(0.7998e-1, `*`(cos(x))), `-`(`*`(1.477, `*`(sin(x)))))) (38)

 

 

> y(x,3):=subs(n=3,y(x,n)):

 

 

> Y(x,3):=evalf(%,4);

 

 

`:=`(Y(x, 3), `+`(1.792, `*`(0.7998e-1, `*`(cos(x))), `-`(`*`(1.477, `*`(sin(x)))), `-`(`*`(.1146, `*`(cos(`+`(`*`(2., `*`(x))))))), `*`(.1502, `*`(sin(`+`(`*`(2., `*`(x)))))), `-`(`*`(.1464, `*`(cos(...
`:=`(Y(x, 3), `+`(1.792, `*`(0.7998e-1, `*`(cos(x))), `-`(`*`(1.477, `*`(sin(x)))), `-`(`*`(.1146, `*`(cos(`+`(`*`(2., `*`(x))))))), `*`(.1502, `*`(sin(`+`(`*`(2., `*`(x)))))), `-`(`*`(.1464, `*`(cos(...
(39)

 

 

> y(x,149):=subs(n=149,y(x,n)):

 

 

> Y(x,149):=evalf(%):

 

 

> plot({Y(x,1),Y(x,3),Y(x,149)},x=-Pi..Pi,co=black,            title="Approximations with n = [1, 3, 149]");

 

 

Plot_2d  

 

 

> L_two[n]:=sqrt((1/2/Pi)*Int((K(x_)-Y(x,n))^2,x=-Pi..Pi));

 

 

`:=`(L_two[n], `+`(`*`(`/`(1, 2), `*`(`*`(`^`(2, `/`(1, 2)), `*`(`^`(`+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(`^`(`+`(K(x_), `-`(Y(x, n))), 2)), x = `+`(`-`(Pi)) .. Pi)))), `/`(1, 2)))))))) (40)

 

 

> for i in [1,3,149] do                L_two[n=i]:=evalf(sqrt((1/2/Pi)*int((K(x)-Y(x,i))^2,x=-3..3)),4) od;

 

 

`:=`(L_two[n = 1], .6257) (41)

 

 

`:=`(L_two[n = 3], .4876) (41)

 

 

`:=`(L_two[n = 149], 0.6635e-1) (41)

 

 

>  

 

 

Example:  M(x) 

 

 

> restart:

 

 

> M(x):=piecewise(-Pi<x and x<0,1,                                              x>0 and x<1/2,2, x>1/2 and x<Pi,1/x);

 

  

 

`:=`(M, proc (x) options operator, arrow; piecewise(`and`(`<`(`+`(`-`(Pi)), x), `<`(x, 0)), 1, `and`(`<`(0, x), `<`(x, `/`(1, 2))), 2, `and`(`<`(`/`(1, 2), x), `<`(x, Pi)), `/`(1, `*`(x))) end proc) (42)

 

 

> plot(%,x=-Pi..Pi,color=black,labels=[x,M]);

 

 

Plot_2d  

 

 

>  

 

 

> a[0]:=(1/Pi)*Int(f(x),x=-Pi..Pi);

 

 

`:=`(a[0], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(f(x), x = `+`(`-`(Pi)) .. Pi))))) (43)

 

 

> a[k]:=(1/Pi)*Int(f(x)*cos(k*x),x=-Pi..Pi);

 

 

`:=`(a[k], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(f(x), `*`(cos(`*`(k, `*`(x))))), x = `+`(`-`(Pi)) .. Pi))))) (44)

 

 

> b[k]:=(1/Pi)*Int(f(x)*sin(k*x),x=-Pi..Pi);

 

 

`:=`(b[k], `+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(f(x), `*`(sin(`*`(k, `*`(x))))), x = `+`(`-`(Pi)) .. Pi))))) (45)

 

 

> A[0]:=value(subs(f(x)=M(x),a[0]));

 

 

`:=`(A[0], `/`(`*`(`+`(1, Pi, ln(2), ln(Pi))), `*`(Pi))) (46)

 

 

> A[k]:=simplify(value(subs(f(x)=M(x),a[k])));

 

 

`:=`(A[k], `+`(`-`(`/`(`*`(`+`(`-`(sin(`*`(Pi, `*`(k)))), `-`(`*`(2, `*`(sin(`+`(`/`(`*`(k), `*`(2))))))), `*`(Ci(`+`(`/`(`*`(k), `*`(2)))), `*`(k)), `-`(`*`(Ci(`*`(Pi, `*`(k))), `*`(k))))), `*`(Pi, `... (47)

 

 

> A[k]:=subs(sin(Pi*k)=0,%);

 

 

`:=`(A[k], `+`(`-`(`/`(`*`(`+`(`-`(`*`(2, `*`(sin(`+`(`/`(`*`(k), `*`(2))))))), `*`(Ci(`+`(`/`(`*`(k), `*`(2)))), `*`(k)), `-`(`*`(Ci(`*`(Pi, `*`(k))), `*`(k))))), `*`(Pi, `*`(k)))))) (48)

 

 

> B[k]:=simplify(value(subs(f(x)=M(x),b[k])));

 

 

`:=`(B[k], `/`(`*`(`+`(cos(`*`(Pi, `*`(k))), 1, `-`(`*`(2, `*`(cos(`+`(`/`(`*`(k), `*`(2))))))), `-`(`*`(Si(`+`(`/`(`*`(k), `*`(2)))), `*`(k))), `*`(Si(`*`(Pi, `*`(k))), `*`(k)))), `*`(Pi, `*`(k)))) (49)

 

 

> B[k]:=subs(cos(Pi*k)=(-1)^k,%);

 

 

`:=`(B[k], `/`(`*`(`+`(`^`(-1, k), 1, `-`(`*`(2, `*`(cos(`+`(`/`(`*`(k), `*`(2))))))), `-`(`*`(Si(`+`(`/`(`*`(k), `*`(2)))), `*`(k))), `*`(Si(`*`(Pi, `*`(k))), `*`(k)))), `*`(Pi, `*`(k)))) (50)

 

 

> for i in [1,2,3,10] do                                       y(x,n=i):=evalf(A[0]/2+                sum(A[k]*cos(k*x)+B[k]*sin(k*x),k=1..i),4) od;

 

 

`:=`(y(x, n = 1), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))))) (51)

 

 

`:=`(y(x, n = 2), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))), `*`(.1532, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2964, `*`(sin(`+`(`*`(2., `*`(x)))))))) (51)

 

 

`:=`(y(x, n = 3), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))), `*`(.1532, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2964, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.6529e-1, `*`(cos(`+`(`...
`:=`(y(x, n = 3), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))), `*`(.1532, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2964, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.6529e-1, `*`(cos(`+`(`...
(51)

 

 

`:=`(y(x, n = 10), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))), `*`(.1532, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2964, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.6529e-1, `*`(cos(`+`(...
`:=`(y(x, n = 10), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))), `*`(.1532, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2964, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.6529e-1, `*`(cos(`+`(...
`:=`(y(x, n = 10), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))), `*`(.1532, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2964, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.6529e-1, `*`(cos(`+`(...
`:=`(y(x, n = 10), `+`(.9515, `*`(.3854, `*`(cos(x))), `-`(`*`(.1260, `*`(sin(x)))), `*`(.1532, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2964, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.6529e-1, `*`(cos(`+`(...
(51)

 

 

> alias(H=Heaviside,th=thickness,co=color): p[1]:=plot({seq(y(x,n=i),i=1..3)},x=-Pi..Pi,co=black):

 

 

> p[2]:=plot(M(x),x=-Pi..Pi,th=2,co=black):

 

 

> p[3]:=plot(0.7191*H(x+Pi),x=-1.001*Pi..-0.999*Pi,co=black):

 

 

> p[4]:=plot(0.7196*H(x-Pi),x=0.999*Pi..1.001*Pi,co=black,    title="Approximations with  n = [1, 2, 3]"):

 

 

> plots[display]({seq(p[k],k=1..4)});

 

 

Plot_2d  

 

 

>  

 

 

> y(x,n=99):=evalf(A[0]/2+             sum(A[k]*cos(k*x)+B[k]*sin(k*x),k=1..99),4):

 

 

> plot({M(x),y(x,n=99)},x=-Pi..Pi,color=black,                          title="M(x)  and  y(x, n = 99)");

 

 

 

Plot_2d  

 

 

>  

 

 

> L_two[n]:=sqrt((1/2/Pi)*Int((M(x_)-y(x,n))^2,x=-Pi..Pi));

 

 

`:=`(L_two[n], `+`(`*`(`/`(1, 2), `*`(`*`(`^`(2, `/`(1, 2)), `*`(`^`(`+`(`*`(`/`(1, `*`(Pi)), `*`(Int(`*`(`^`(`+`(M(x_), `-`(y(x, n))), 2)), x = `+`(`-`(Pi)) .. Pi)))), `/`(1, 2)))))))) (52)

 

 

> for i in [1,2,3,99] do     L_two[n=i]:=evalf(sqrt((1/2/Pi)*int((M(x)-y(x,n=i))^2,               x=-3..3)),4) od;

 

 

`:=`(L_two[n = 1], .3048) (53)

 

 

`:=`(L_two[n = 2], .1963) (53)

 

 

`:=`(L_two[n = 3], .1770) (53)

 

 

`:=`(L_two[n = 99], 0.2278e-1) (53)

 

 

>  

 

Smoothing of  the FOURIER-Series  y(x, n = 3): 

 

> g(k,N):=N*sin(k*Pi/N)/k/Pi;

 

 

`:=`(g(k, N), `/`(`*`(N, `*`(sin(`/`(`*`(k, `*`(Pi)), `*`(N))))), `*`(k, `*`(Pi)))) (54)

 

 

> g(k,4):=subs(N=4,%);

 

 

`:=`(g(k, 4), `+`(`/`(`*`(4, `*`(sin(`+`(`/`(`*`(Pi, `*`(k)), `*`(4)))))), `*`(k, `*`(Pi))))) (55)

 

 

> G(x,n=3,N=4):=evalf(A[0]/2+  sum(g(k,4)*(A[k]*cos(k*x)+B[k]*sin(k*x)),k=1..3),4);

 

 

`:=`(G(x, n = 3, N = 4), `+`(.9515, `*`(.3468, `*`(cos(x))), `-`(`*`(.1134, `*`(sin(x)))), `*`(0.9752e-1, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.1887, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.1959e-1, `*...
`:=`(G(x, n = 3, N = 4), `+`(.9515, `*`(.3468, `*`(cos(x))), `-`(`*`(.1134, `*`(sin(x)))), `*`(0.9752e-1, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.1887, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.1959e-1, `*...
(56)

 

 

> plot({M(x),y(x,n=3),G(x,n=3,N=4)},x=-Pi..Pi,color=black,          title="Smoothing of the FOURIER-Series  y(x, n = 3)");

 

 

Plot_2d  

 

 

>  

 

 

> g(k,11):=subs(N=11,g(k,N));

 

 

`:=`(g(k, 11), `+`(`/`(`*`(11, `*`(sin(`+`(`/`(`*`(Pi, `*`(k)), `*`(11)))))), `*`(k, `*`(Pi))))) (57)

 

 

> G(x,n=10,N=11):=evalf(A[0]/2+ sum(g(k,11)*(A[k]*cos(k*x)+B[k]*sin(k*x)),k=1..10),4);

 

 

`:=`(G(x, n = 10, N = 11), `+`(.9515, `*`(.3800, `*`(cos(x))), `-`(`*`(.1243, `*`(sin(x)))), `*`(.1450, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2806, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.5757e-1, `*`(...
`:=`(G(x, n = 10, N = 11), `+`(.9515, `*`(.3800, `*`(cos(x))), `-`(`*`(.1243, `*`(sin(x)))), `*`(.1450, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2806, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.5757e-1, `*`(...
`:=`(G(x, n = 10, N = 11), `+`(.9515, `*`(.3800, `*`(cos(x))), `-`(`*`(.1243, `*`(sin(x)))), `*`(.1450, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2806, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.5757e-1, `*`(...
`:=`(G(x, n = 10, N = 11), `+`(.9515, `*`(.3800, `*`(cos(x))), `-`(`*`(.1243, `*`(sin(x)))), `*`(.1450, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2806, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.5757e-1, `*`(...
`:=`(G(x, n = 10, N = 11), `+`(.9515, `*`(.3800, `*`(cos(x))), `-`(`*`(.1243, `*`(sin(x)))), `*`(.1450, `*`(cos(`+`(`*`(2., `*`(x)))))), `*`(.2806, `*`(sin(`+`(`*`(2., `*`(x)))))), `*`(0.5757e-1, `*`(...
(58)

 

 

> plot({M(x),y(x,n=10),G(x,n=10,N=11)},x=-Pi..Pi,color=black, title="FOURIER-Series  y(x, n = 10)  and  its Smoothing");

 

 

Plot_2d  

 

 

>  

 

R?sum? 

 

In this worksheet it has been illustrated that Maplesoft furnishes powerful tools in finding best approximations to several piecewise continuous functions.