Fourierovy_trigonometricke_rady.mws

Nekonecne rady s program em Maple

Fourierov y trigonometricke rady

Karel Srot, xsrot@math.muni.cz

Zapisnik ilustruje vypocty Fourierovych rad a jejich aplikace pri reseni diferencialnich rovnich ci vysetrovani kmitajici struny.

>   

vypocet metodou krok za krokem

Priklad:

Spocitejte Fourierovu radu funkce f(x) = x^2  definovane na intervalu [ -Pi , pi ] a pomoci animace znazornete konvergenci jejich castecnych souctu.  

>   

>    restart;

>    assume(n,integer);

>    a0:=1/Pi*int(x^2, x=-Pi..Pi);

a0 := 2/3*Pi^2

>    aN:=1/Pi*int(x^2*cos(n*x), x=-Pi..Pi);

aN := 4/n^2*(-1)^n

>    bN:=1/Pi*int(x^2*sin(n*x), x=-Pi..Pi);

bN := 0

>    a0/2+Sum(aN*cos(n*x)+bN*sin(n*x), n=1..infinity);

1/3*Pi^2+Sum(4/n^2*(-1)^n*cos(n*x),n = 1 .. infinity)

>    four:=(m,x)->a0/2+sum(aN*cos(n*x)+bN*sin(n*x), n=1..m):

>    T[3](x)=four(3,x);

T[3](x) = 1/3*Pi^2-4*cos(x)+cos(2*x)-4/9*cos(3*x)

>    with(plots):

>    graf1:=plot(x^2,x=-Pi..Pi,color=aquamarine,thickness=2):

>    graf2:=plot(four(3,x),x=-Pi..Pi,color=red):

>    display(graf1,graf2);

[Maple Plot]

>    clenu:=10:

>    anim:=animate(four(m,x),x=-3*Pi..3*Pi,m=0..clenu,color=red,frames=clenu+1,
numpoints=300):

>    display(anim, graf1);

[Maple Plot]

>    display([graf1,anim],view=[-1.2..1.2,-0.8..1.6]);

[Maple Plot]

>    animate(x^2-four(m,x), x=-Pi..Pi, m=1..clenu, frames=clenu, numpoints=300,
view=[-Pi..Pi,-1..1], scaling=constrained, thickness=2);

[Maple Plot]

>   

>   

Priklad:

Urcete kvadratickou odchylku prvnich deseti castecnych souctu Fourierovy rady funkce z predchazejiciho prikladu.

>    qdev:= (f, g, var) -> evalf(sqrt(int((f-g)^2, var))):

>    for i from 0 to 9 do

>      qdev(x^2, four(i,x), x=-Pi..Pi);

>    end do;

7.375872795

2.034211661

.9982106214

.6130765968

.4236902112

.3147834451

.2455677473

.1984145125

.1646099789

.1394101696

>    qdev(x^2, four(50,x), x=-Pi..Pi);

.1140528237e-1

>    qdev(x^2, four(100,x), x=-Pi..Pi);

.4065598145e-2

>    qdev(x^2, four(200,x), x=-Pi..Pi);

.1441114406e-2

>   

>   

Priklad:

Spocitejte Fourierovu radu funkce f(x)=|sin(x)|  na intervalu [ -Pi , Pi ].

>    f:=x->abs(sin(x)):

>    a0:=1/Pi*int(f(x), x=-Pi..Pi);

a0 := 4/Pi

>    aN:=1/Pi*int(f(x)*cos(n*x), x=-Pi..Pi);

aN := -2/Pi*((-1)^n+1)/(n^2-1)

>    bN:=1/Pi*int(f(x)*sin(n*x), x=-Pi..Pi);

bN := 0

>    a0/2+Sum(aN*cos(n*x)+bN*sin(n*x),n=1..infinity);

2/Pi+Sum(-2/Pi*((-1)^n+1)/(n^2-1)*cos(n*x),n = 1 .. infinity)

>    a1:=1/Pi*int(f(x)*cos(x), x=-Pi..Pi);

a1 := 0

>    b1:=1/Pi*int(f(x)*sin(x), x=-Pi..Pi);

b1 := 0

>    a0/2+Sum(aN*cos(n*x)+bN*sin(n*x),n=2..infinity);

2/Pi+Sum(-2/Pi*((-1)^n+1)/(n^2-1)*cos(n*x),n = 2 .. infinity)

>   

>   

Priklad:

Spocitejte Fourierovu radu funkce definovane predpisem

             

               0      -Pi < x < 0

 f(x) = {

            sin(x)    0 <= x < Pi

na intervalu [ -Pi , Pi ].

>    f:=x->piecewise(x<0,0,sin(x)):

>    a0:=1/Pi*int(f(x), x=-Pi..Pi);

a0 := 2/Pi

>    aN:=1/Pi*int(f(x)*cos(n*x), x=-Pi..Pi);

aN := -1/Pi*((-1)^n+1)/(n^2-1)

>    bN:=1/Pi*int(f(x)*sin(n*x), x=-Pi..Pi);

bN := 0

>    a1:=1/Pi*int(f(x)*cos(x), x=-Pi..Pi);

a1 := 0

>    b1:=1/Pi*int(f(x)*sin(x), x=-Pi..Pi);

b1 := 1/2

>    a0/2+b1*sin(x)+Sum(aN*cos(n*x)+bN*sin(n*x),n=2..infinity);

1/Pi+1/2*sin(x)+Sum(-1/Pi*((-1)^n+1)/(n^2-1)*cos(n*x),n = 2 .. infinity)

>   

>   

Priklad:

Spocitejte hodnoty koeficientu Fourierovy rady funkce zadane predpisem

  f(x) = 1+x-x^2

pro x  z intervalu [-1/2, 1].

>    restart;

>    assume(n, integer):

>    f:=x->1-x^2+x:

>    a:=-1/2:

>    b:=1:

>    L:=abs(a-b):

>   

>    a0:=2/L*int(f(x), x=a..b);

a0 := 2

>    aN:=2/L*int(f(x)*cos(2*Pi/L*n*x), x=a..b);

aN := 1/8*(2*Pi^2*n^2*sin(2/3*Pi*n)-12*Pi*n*cos(2/3*Pi*n)+9*sin(2/3*Pi*n)-6*Pi*n*cos(4/3*Pi*n)+9*sin(4/3*Pi*n)+8*Pi^2*n^2*sin(4/3*Pi*n))/Pi^3/n^3

>    bN:=2/L*int(f(x)*sin(2*Pi/L*n*x), x=a..b);

bN := 1/8*(2*Pi^2*n^2*cos(2/3*Pi*n)+12*sin(2/3*Pi*n)*Pi*n+9*cos(2/3*Pi*n)-6*sin(4/3*Pi*n)*Pi*n-9*cos(4/3*Pi*n)-8*Pi^2*n^2*cos(4/3*Pi*n))/Pi^3/n^3

>    a0/2+Sum(aN*cos(2*Pi/L*n*x)+bN*sin(2*Pi/L*n*x),n=1..infinity);

1+Sum(1/8*(2*Pi^2*n^2*sin(2/3*Pi*n)-12*Pi*n*cos(2/3*Pi*n)+9*sin(2/3*Pi*n)-6*Pi*n*cos(4/3*Pi*n)+9*sin(4/3*Pi*n)+8*Pi^2*n^2*sin(4/3*Pi*n))/Pi^3/n^3*cos(4/3*Pi*n*x)+1/8*(2*Pi^2*n^2*cos(2/3*Pi*n)+12*sin(2/...
1+Sum(1/8*(2*Pi^2*n^2*sin(2/3*Pi*n)-12*Pi*n*cos(2/3*Pi*n)+9*sin(2/3*Pi*n)-6*Pi*n*cos(4/3*Pi*n)+9*sin(4/3*Pi*n)+8*Pi^2*n^2*sin(4/3*Pi*n))/Pi^3/n^3*cos(4/3*Pi*n*x)+1/8*(2*Pi^2*n^2*cos(2/3*Pi*n)+12*sin(2/...

>    four:=(m,x)->a0/2+sum(aN*cos(2*Pi/L*n*x)+bN*sin(2*Pi/L*n*x), n=1..m):

>    with(plots):

>    graf1:=plot(f(x), x=a..b, color=aquamarine, thickness=2):

>    for i in [2,3,5,10] do

>      display(graf1, plot(four(i,x), x=-2..2, color=red, numpoints=300),
scaling=constrained);

>    end do;

[Maple Plot]

[Maple Plot]

[Maple Plot]

[Maple Plot]

>   

>   

vypocet pomoci procedur knihovny FourierTrigSeries

>    restart;

>    with(FourierTrigSeries);

[Add, ChangeBasis, Coefficients, ConvertToSum, Copy, Create, Degree, Derivate, DrawPartialSum, DrawPeriodicExtension, Evaluate, ExploreFourierSeriesCoefficients, FOURIERSERIES, GetFourierSeries, GetPar...
[Add, ChangeBasis, Coefficients, ConvertToSum, Copy, Create, Degree, Derivate, DrawPartialSum, DrawPeriodicExtension, Evaluate, ExploreFourierSeriesCoefficients, FOURIERSERIES, GetFourierSeries, GetPar...

>   

Priklad:

Spocitejte Fourierovu radu funkce f(x)=sgn(cos x) na intervalu [-Pi, Pi]  a vykreslete grafy castecnych souctu s[1] , s[3]  a s[5]  spolu s periodickym rozsirenim funkce f .

>    f:=signum(cos(x)):

>    FRada:=GetFourierSeries(f,x=-Pi..Pi);

FRada := Sum(4/Pi*sin(1/2*Pi*n)/n*cos(n*x),n = 1 .. infinity)

>    gb:=DrawPeriodicExtension(f,x=-Pi..Pi,-7..7,color=aquamarine,thickness=2,drawlimits):

>    g1:=DrawPartialSum(FRada,1,-7..7,color=blue):

>    g2:=DrawPartialSum(FRada,3,-7..7,color=green):

>    g3:=DrawPartialSum(FRada,5,-7..7):

>    plots[display](gb,g1,g2,g3);

[Maple Plot]

>   

>   

Priklad:

Spocitejte Fourierovu radu funkce f(x)=abs(sin x) na intervalu [-Pi, Pi]  a vykreslete grafy castecnych souctu s[1] , s[3] , s[5]  a s[7]  spolu s periodickym rozsirenim funkce f .

>    f:=abs(sin(x));

f := abs(sin(x))

>    FRada:=GetFourierSeries(f,x=-Pi..Pi);

FRada := 2/Pi+Sum(-2/Pi*((-1)^n+1)/(-1+n^2)*cos(n*x),n = 2 .. infinity)

>    gb:=DrawPeriodicExtension(f,x=-Pi..Pi,-7..7,color=aquamarine,thickness=2):

>    g1:=DrawPartialSum(FRada,1,-7..7,color=blue):

>    g2:=DrawPartialSum(FRada,3,-7..7,color=green):

>    g3:=DrawPartialSum(FRada,5,-7..7,color=black):

>    g4:=DrawPartialSum(FRada,7,-7..7):

>    plots[display](gb,g1,g2,g3,g4);

[Maple Plot]

>   

>   

>   

Priklad:

Spocitejte Fourierovu radu funkce f(x)=x sin(x) a sestrojte animaci znazornujici konvergenci Fourierovy rady.

>    f:=x*sin(x);

f := x*sin(x)

>    FRada:=GetFourierSeries(f,x=-Pi..Pi);

FRada := 1-1/2*cos(x)+Sum(2*(-1)^(1+n)/(-1+n^2)*cos(n*x),n = 2 .. infinity)

>    gb:=DrawPeriodicExtension(f,x=-Pi..Pi,-6..6,thickness=2, color=aquamarine):

>    anim:=seq(plots[display](gb, DrawPartialSum(FRada,i,-6..6, numpoints=200)), i=0..10):

>    plots[display](anim, insequence=true,scaling=constrained);

[Maple Plot]

>   

Priklad:

>    f:=x->(Pi-x)/2;

f := x -> 1/2*Pi-1/2*x

>    FRada:=GetFourierSeries(f(x),x=0..2*Pi);

FRada := Sum(1/n*sin(n*x),n = 1 .. infinity)

>    gb:=DrawPeriodicExtension(f(x),x=0..2*Pi,-Pi..3*Pi,drawlimits,color=aquamarine,thickness=2):

>    g1:=DrawPartialSum(FRada, 1, -Pi..3*Pi, color=green):

>    g2:=DrawPartialSum(FRada, 2, -Pi..3*Pi, color=blue):

>    g3:=DrawPartialSum(FRada, 4, -Pi..3*Pi, color=violet):

>    g4:=DrawPartialSum(FRada, 8, -Pi..3*Pi, color=red):

>    plots[display](gb, g1, g2, g3, g4);

[Maple Plot]

>   

>   

Priklad:

>    f:=cos(a*x);

f := cos(a*x)

>    GetFourierSeries(f,x=-1..1);

1/a*sin(a)+Sum(2*sin(a)*(-1)^n*a/(a^2-Pi^2*n^2)*cos(Pi*n*x),n = 1 .. infinity)

>   

Priklad:

>    f:=piecewise(x<0,a*x,b*x);

f := PIECEWISE([a*x, x < 0],[b*x, otherwise])

>    FRada:=GetFourierSeries(f,x=-Pi..Pi);

FRada := 1/2/Pi*(-1/2*a*Pi^2+1/2*b*Pi^2)+Sum(1/Pi*(-a*((-1)^n-1)/n^2+b*((-1)^n-1)/n^2)*cos(n*x)+1/Pi*(-(-1)^n/n*Pi*a-(-1)^n/n*Pi*b)*sin(n*x),n = 1 .. infinity)

>   

>   

Priklad:

>    f:=piecewise(x<0,1/2*x,2*x);

f := PIECEWISE([1/2*x, x < 0],[2*x, otherwise])

>    FRada:=GetFourierSeries(f,x=-Pi..Pi);

FRada := 3/8*Pi+Sum(3/2*1/Pi*((-1)^n-1)/n^2*cos(n*x)+5/2*(-1)^(1+n)/n*sin(n*x),n = 1 .. infinity)

>    gb:=DrawPeriodicExtension(f,x=-Pi..Pi, -6..6,drawlimits,color=aquamarine,thickness=2):

>    anim:=seq(plots[display](gb, DrawPartialSum(FRada,i,-6..6, numpoints=200)), i=0..15):

>    plots[display](anim, insequence=true);

[Maple Plot]

>   

>   

Priklad:

>    f:=x->x*cos(x);

f := x -> x*cos(x)

>    FRada:=GetFourierSeries(f(x),x=-Pi..Pi);

FRada := -1/2*sin(x)+Sum(2*n*(-1)^n/(n^2-1)*sin(n*x),n = 2 .. infinity)

>    gb:=DrawPeriodicExtension(f(x),x=-Pi..Pi,-6..6,drawlimits, color=aquamarine,thickness=2):

>    anim:=seq(plots[display](gb, DrawPartialSum(FRada,i,-6..6, numpoints=250)), i=0..20):

>    plots[display](anim, insequence=true,scaling=constrained);

[Maple Plot]

>   

>   

Priklad:

>    f:=(Pi^2-x^2)^2;

f := (Pi^2-x^2)^2

>    FRada:=GetFourierSeries(f,x=-Pi..Pi);

FRada := 8/15*Pi^4+Sum(48*(-1)^(1+n)/n^4*cos(n*x),n = 1 .. infinity)

>    gb:=DrawPeriodicExtension(f,x=-Pi..Pi,-6..6,color=aquamarine,thickness=2):

>    anim:=seq(plots[display](gb, DrawPartialSum(FRada,i,-6..6, numpoints=200)), i=0..10):

>    plots[display](anim, insequence=true);

[Maple Plot]

>   

Priklad:

>    f:=x->piecewise(x<0,a,b);

f := x -> piecewise(x < 0,a,b)

>    GetFourierSeries(f(x),x=-Pi..Pi);

1/2/Pi*(a*Pi+b*Pi)+Sum(1/Pi*(a*((-1)^n-1)/n-b*((-1)^n-1)/n)*sin(n*x),n = 1 .. infinity)

>    SimplifyCoefficients(%, simplify);

1/2*a+1/2*b+Sum(((-1)^n-1)*(a-b)/Pi/n*sin(n*x),n = 1 .. infinity)

>   

>   

Priklad:

>    f:=x->arcsin(sin(x));

f := x -> arcsin(sin(x))

>    FRada:=GetFourierSeries(f(x),x=-Pi..Pi);

FRada := Sum(1/Pi*sin(n*x)*int(arcsin(sin(x))*sin(n*x),x = -Pi .. Pi),n = 1 .. infinity)

>    g:=x->piecewise(x<-Pi/2,-x-Pi,x<Pi/2,x,Pi-x):

>    GetFourierSeries(g(x),x=-Pi..Pi);

Sum(1/Pi*((2*sin(1/2*Pi*n)+cos(1/2*Pi*n)*n*Pi)/n^2-(-2*sin(1/2*Pi*n)+cos(1/2*Pi*n)*n*Pi)/n^2)*sin(n*x),n = 1 .. infinity)

>    SimplifyCoefficients(%, simplify);

Sum(4*sin(1/2*Pi*n)/n^2/Pi*sin(n*x),n = 1 .. infinity)

>   

>   

Priklad:

Spocitejte Fourierovu ?adu funkce y=signum(x) pro x  z intervalu [-Pi, Pi]  a urcete funkci hodnotu castecnych souctu

   s[n](Pi-Pi/n)   pro   n=10, 50, 100, 500, 1000, 5 000 a 10 000.

Dale nakreslete graf castecneho souctu stupne 20 a graf prislusneho souctu ziskaneho metodou sigma -aproximace.

>    f:=x->signum(x):

>    FS:=GetFourierSeries(f(x), x=-Pi..Pi);

FS := Sum(-2/Pi*((-1)^n-1)/n*sin(n*x),n = 1 .. infinity)

>    for i in [ 10,50,100,500,1000, 5000, 10000 ] do

>      evalf(Evaluate(FS, x=(Pi-Pi/i), trunc=i));

>    end do;

1.182328208

1.179113101

1.179013080

1.178981075

1.178980077

1.178979755

1.178979747

Vsimneme si hodnoty prekmitu, ktera cini temer 18 %.

>    plot(GetPartialSum(FS,20), x=-2*Pi..2*Pi, numpoints=200, scaling=constrained);

[Maple Plot]

>    sinc:=x->piecewise(x=0,1,sin(x)/x):

>    N:=20:

>    s:=Coefficients(FS, 0):

>    for i from 1 to (N-1) do

>      s:=s+sinc(i*Pi/N)*Coefficients(FS,i)[2]*sin(i*x):

>    end do:

>    plot(s,x=-2*Pi..2*Pi,scaling=constrained,numpoints=200);

[Maple Plot]

>   

>   

Priklad:

Spocitejte Fourierovu radu funkce f(x)=x, pro x  z intervalu [ -Pi , Pi ]. S vyuzitim Besselovy identity spocitejte kvadratickou odchylku castecnych souctu stupnu 100, 500, 1000.

>    f:=x->x;

f := x -> x

>    FS:=GetFourierSeries(f(x), x=-Pi..Pi);

FS := Sum(2*(-1)^(n+1)/n*sin(n*x),n = 1 .. infinity)

Vypocet pomoci funkce qdev (pocita podle definice kvadraticke odchylky) je casove a pametove narocny.

>    qdev:= (f, g, var) -> evalf(sqrt(int((f-g)^2, var))):

>   

>    s1:=GetPartialSum(FS, 100):

>    qdev(f(x), s1, x=-Pi..Pi);

.3536063890

Procedura qdevBE pocita kvadratickou odchylku pomoci Besselovy identity.

>    qdevBE:=proc(f, var, N) local FS, L, normf, tmpsum, res, i;

>       FS:=GetFourierSeries(f,var);

>       normf:=int(f^2,var);  

>      L:=op(2, op(2,var)) - op(1, op(2,var));

>      tmpsum:= L*Coefficients(FS,0)^2;

>      for i from 1 to N do

>        tmpsum:= tmpsum + L/2*( Coefficients(FS,i)[1]^2 + Coefficients(FS,i)[2]^2) ;

>      end do:

>      res:=evalf(sqrt(normf - tmpsum));

>      return res;

>    end proc:

>   

>    qdevBE(f(x),x=-Pi..Pi,100);

.3536063890

>    qdevBE(f(x),x=-Pi..Pi,500);

.1584538800

>    qdevBE(f(x),x=-Pi..Pi,1000);

.1120718057

>   

>   

Priklad:

Ilustrujte pomoci animace kmitani struny, jejiz krajni body jsou [0, 0] a [ Pi , 0] a jejiz vychozi tvar pri napnuti popisuje funkce

 

                  x/2                pro x z intervalu [0, Pi/2 )

 phi(x) = {

                  (Pi-x)/2              pro x z intervalu [ Pi/2 , Pi ]

Nejdrive nadefinujeme funkci phi(x) a jeji liche rozsireni.

>    phi:=x->piecewise(x<Pi/2 ,x/2,Pi/2-x/2):

>   

>    g1:=plot(phi,0..Pi, scaling=constrained, thickness=2,
color=aquamarine):%;

[Maple Plot]

Spocitame Fourierovu radu licheho rozsireni funkce phi(x).

>    FS:=GetFourierSeries(phi(x), x=0..Pi, odd);

FS := Sum(1/Pi*(1/2*(2*sin(1/2*Pi*n)+cos(1/2*Pi*n)*n*Pi)/n^2-1/2*(-2*sin(1/2*Pi*n)+cos(1/2*Pi*n)*n*Pi)/n^2)*sin(n*x),n = 1 .. infinity)

>    FS:=SimplifyCoefficients(FS, simplify);

FS := Sum(2*sin(1/2*Pi*n)/n^2/Pi*sin(n*x),n = 1 .. infinity)

Nyni potrebujeme rozsirit koeficienty Fourierovy rady vyrazem cos(nt) . Vytvorime tedy novou radu.

>    FS2:=Create({ Coefficients(FS)*cos(n*t)}, SinTrigP(n,x));

FS2 := Sum(2*sin(1/2*Pi*n)/n^2/Pi*cos(n*t)*sin(n*x),n = 1 .. infinity)

Pro aproximaci funkce phi(x) pouzijeme prvnich 15 clenu rady.

>    s:=GetPartialSum(FS2, 15);

s := 2/Pi*cos(t)*sin(x)-2/9*1/Pi*cos(3*t)*sin(3*x)+2/25*1/Pi*cos(5*t)*sin(5*x)-2/49*1/Pi*cos(7*t)*sin(7*x)+2/81*1/Pi*cos(9*t)*sin(9*x)-2/121*1/Pi*cos(11*t)*sin(11*x)+2/169*1/Pi*cos(13*t)*sin(13*x)-2/22...
s := 2/Pi*cos(t)*sin(x)-2/9*1/Pi*cos(3*t)*sin(3*x)+2/25*1/Pi*cos(5*t)*sin(5*x)-2/49*1/Pi*cos(7*t)*sin(7*x)+2/81*1/Pi*cos(9*t)*sin(9*x)-2/121*1/Pi*cos(11*t)*sin(11*x)+2/169*1/Pi*cos(13*t)*sin(13*x)-2/22...

>    with(plots):

>    g2:=animate(s,x=0..Pi,t=0..2*Pi,frames=50, scaling=constrained):

>    display(g1,g2);

[Maple Plot]

Nasledujici serii prikazu zobrazime animaci privnich tri nenulovych harmonickych slozek.

>    H1:= GetPartialSum(FS2,1);

H1 := 2/Pi*cos(t)*sin(x)

>    H3:= GetPartialSum(FS2,3)-GetPartialSum(FS2,2);

H3 := -2/9*1/Pi*cos(3*t)*sin(3*x)

>    H5:= GetPartialSum(FS2,5)-GetPartialSum(FS2,4);

H5 := 2/25*1/Pi*cos(5*t)*sin(5*x)

>    animate({ H1,H3,H5} ,x=0..Pi,t=0..2*Pi, frames=50);

[Maple Plot]

>   

>   

Priklad:

>    phi:=x->1/4*x*(Pi-x):

>   

>    g1:=plot(phi,0..Pi, scaling=constrained, thickness=2,
color=aquamarine):%;

[Maple Plot]

>    FS:=GetFourierSeries(phi(x), x=0..Pi, odd);

FS := Sum(-1/Pi*((-1)^n-1)/n^3*sin(n*x),n = 1 .. infinity)

>    FS2:=Create({Coefficients(FS)*cos(n*t)}, SinTrigP(n,x));

FS2 := Sum(-1/Pi*((-1)^n-1)/n^3*cos(n*t)*sin(n*x),n = 1 .. infinity)

>    s:=GetPartialSum(FS2, 15);

s := 2/Pi*cos(t)*sin(x)+2/27*1/Pi*cos(3*t)*sin(3*x)+2/125*1/Pi*cos(5*t)*sin(5*x)+2/343*1/Pi*cos(7*t)*sin(7*x)+2/729*1/Pi*cos(9*t)*sin(9*x)+2/1331*1/Pi*cos(11*t)*sin(11*x)+2/2197*1/Pi*cos(13*t)*sin(13*x...
s := 2/Pi*cos(t)*sin(x)+2/27*1/Pi*cos(3*t)*sin(3*x)+2/125*1/Pi*cos(5*t)*sin(5*x)+2/343*1/Pi*cos(7*t)*sin(7*x)+2/729*1/Pi*cos(9*t)*sin(9*x)+2/1331*1/Pi*cos(11*t)*sin(11*x)+2/2197*1/Pi*cos(13*t)*sin(13*x...

>    with(plots):

>    g2:=animate(s,x=0..Pi,t=0..2*Pi,frames=50, scaling=constrained):

>    display(g1,g2);

[Maple Plot]

>    H1:=GetPartialSum(FS2,1);

H1 := 2/Pi*cos(t)*sin(x)

>    H3:=GetPartialSum(FS2,3)-GetPartialSum(FS2,2);

H3 := 2/27*1/Pi*cos(3*t)*sin(3*x)

>    H5:=GetPartialSum(FS2,5)-GetPartialSum(FS2,4);

H5 := 2/125*1/Pi*cos(5*t)*sin(5*x)

>    animate({H1,H3,H5},x=0..Pi,t=0..2*Pi, frames=50);

[Maple Plot]

>   

>   

Priklad:

>    phi:=x->piecewise(x<Pi/5,x,x<2*Pi/5,2*Pi/5-x,0):

>   

>    g1:=plot(phi,0..Pi, scaling=constrained, thickness=2,
color=aquamarine):%;

[Maple Plot]

>    FS:=GetFourierSeries(phi(x), x=0..Pi, odd);

FS := Sum(1/Pi*(2/5*(-5*sin(2/5*Pi*n)+5*sin(1/5*Pi*n)+cos(1/5*Pi*n)*n*Pi)/n^2-2/5*(-5*sin(1/5*Pi*n)+cos(1/5*Pi*n)*n*Pi)/n^2)*sin(n*x),n = 1 .. infinity)

>    FS:=SimplifyCoefficients(FS, simplify);

FS := Sum(-2*(sin(2/5*Pi*n)-2*sin(1/5*Pi*n))/n^2/Pi*sin(n*x),n = 1 .. infinity)

>    FS2:=Create({Coefficients(FS)*cos(n*t)}, SinTrigP(n,x));

FS2 := Sum(-2*(sin(2/5*Pi*n)-2*sin(1/5*Pi*n))/n^2/Pi*cos(n*t)*sin(n*x),n = 1 .. infinity)

>    s:=GetPartialSum(FS2, 20):

>    with(plots):

>    g2:=animate(s,x=0..Pi,t=0..2*Pi,frames=50, scaling=constrained):

>    display(g1,g2);

[Maple Plot]

>   

>   

Priklad:

Metodou Fourierovych rad reste diferencialni rovnici

  Diff(y(x),`$`(x,2))+2*y(x) = Sum(sin(n*x)/(n^4),n = 1 .. infinity)    

Vytvorime obecnou reprezentaci Fourierovy rady a dosadime ji do diferencialni rovnice. Hodnoty koeficientu pak ziskame porovnanim s radou na prave strane.

Nejdrive vytvorime reprezentaci prave strany rovnice. Vyuzijeme procedury Create.

>    RHS:=Create({[0], 'general'=[0,1/n^4]}, CosSinTrigP(n,x));

RHS := Sum(1/n^4*sin(n*x),n = 1 .. infinity)

Vytvorime obecnou reprezentaci Fourierovy rady.

>    FS:=Create({[a0], 'general'=[aN,bN]}, CosSinTrigP(n,x));

FS := a0+Sum(aN*cos(n*x)+bN*sin(n*x),n = 1 .. infinity)

Radu dvakrat derivujeme a k vysledku pricteme dvojnasobek rady samotne. Ziskame tak levou stranu diferencialni rovnice po dosazeni obecne Fourierovy rady.

>    tmp:=Derivate(Derivate(FS, 'x'), 'x');

tmp := Sum(-n^2*aN*cos(n*x)-n^2*bN*sin(n*x),n = 1 .. infinity)

>    LHS:=Add(tmp,FS, 1, 2);

LHS := 2*a0+Sum((2*aN-n^2*aN)*cos(n*x)+(2*bN-n^2*bN)*sin(n*x),n = 1 .. infinity)

Konecne odecteme pravou stranu rovnice od leve.

>    S:=Add(LHS,RHS, 1, -1);

S := 2*a0+Sum((2*aN-n^2*aN)*cos(n*x)+(-1/(n^4)+2*bN-n^2*bN)*sin(n*x),n = 1 .. infinity)

Ziskali jsme nekonecnou radu, jejiz vsechny koeficienty musi byt rovny nule. V nasem pripade staci pouze sestrojit a vyresit soustavu rovnic pro nezname aN a bN.

>    Coefficients(S);

[2*aN-n^2*aN, -1/(n^4)+2*bN-n^2*bN]

>    {%[1]=0, %[2]=0};

{2*aN-n^2*aN = 0, -1/(n^4)+2*bN-n^2*bN = 0}

>    solve(%, {aN, bN});

{bN = -1/(n^4*(-2+n^2)), aN = 0}

Konecne muzeme sestrojit hledane reseni.

>    Y:=Create({subs(%, bN)}, SinTrigP(n,x));

Y := Sum(-1/n^4/(-2+n^2)*sin(n*x),n = 1 .. infinity)

Spravnost muzeme overit dosazenim reseni do leve strany rovnice.

>    Add(Derivate(Derivate(Y, 'x'), 'x'), Y, 1, 2);

Sum((-2/n^4/(-2+n^2)+1/(n^2*(-2+n^2)))*sin(n*x),n = 1 .. infinity)

>    SimplifyCoefficients(%, simplify);

Sum(1/n^4*sin(n*x),n = 1 .. infinity)

>   

>