Laplacen yhtälö muuttujat erotellen

K3/P3 8.12.2005

Alustukset

>    restart:

>    with(plots): setoptions3d(orientation=[-120,50],axes=box):

Warning, the name changecoords has been redefined

>    read("e:\\ns05.mpl");

Muuttujien erottelulla saatava ratkaisukaava

Laplacen yhtälö Delta*u = 0  tasossa, suorakulmioalueessa 0 < x < a, 0 < y < b .

Reunaehdot: alareunalla ja pystyreunoilla 0 , yläreunalla annettu funktio f(x) .

Ratkaisu esittää tasapainolämpötilajakaumaa levyssä, joka on tahkopinnoiltaan eristetty, eli lämpö virtaa vain reunojen kautta.

>    un:=sin(n*Pi*x/a)*sinh(n*Pi*y/a);     # Kantafunktiot (0-reunaehdoista)

un := sin(n*Pi*x/a)*sinh(n*Pi*y/a)

>    usarja:=Sum(c[n]*un,n=1..infinity);   

usarja := Sum(c[n]*sin(n*Pi*x/a)*sinh(n*Pi*y/a),n = 1 .. infinity)

>    bn:=(2/a)*int(f(x)*sin(n*Pi*x/a),x=0..a);  

bn := 2/a*int(f(x)*sin(n*Pi*x/a),x = 0 .. a)

>    cn:=bn/sinh(n*Pi*b/a);

cn := 2/a/sinh(n*Pi*b/a)*int(f(x)*sin(n*Pi*x/a),x = 0 .. a)

>    usumma:=(x,t,N)->add(cn*un,n=1..N);

usumma := proc (x, t, N) options operator, arrow; add(cn*un,n = 1 .. N) end proc

Esim 1

>    a:=4: b:=4: f:=x->1/4*x*(4-x);

f := proc (x) options operator, arrow; 1/4*x*(4-x) end proc

>    plot(f,0..4);

[Maple Plot]

>    bn;

-8*(n*Pi*sin(n*Pi)+2*cos(n*Pi)-2)/n^3/Pi^3

>    bn:=trigsimp(bn,n);

bn := -16*(-1+(-1)^n)/n^3/Pi^3

>    seq(bn,n=1..10);

32/Pi^3, 0, 32/27/Pi^3, 0, 32/125/Pi^3, 0, 32/343/Pi^3, 0, 32/729/Pi^3, 0

>    usumma(x,y,6);

32/Pi^3/sinh(Pi)*sin(1/4*Pi*x)*sinh(1/4*Pi*y)+32/27*1/Pi^3/sinh(3*Pi)*sin(3/4*Pi*x)*sinh(3/4*Pi*y)+32/125*1/Pi^3/sinh(5*Pi)*sin(5/4*Pi*x)*sinh(5/4*Pi*y)

>    plot3d(usumma(x,y,10),x=0..a,y=0..b);

[Maple Plot]

>    plot([seq(usumma(x,y,10),y=[0,1,2,3,4])],x=0..4,axes=box);

[Maple Plot]

Esim 2

>    a:=2: b:=3: f:=x->piecewise(0<x and x < 1,x,1<x and x < 2,2-x);

f := proc (x) options operator, arrow; piecewise(0 < x and x < 1,x,1 < x and x < 2,2-x) end proc

>    #plot(f,0..a);

>    un:=sin(n*Pi*x/a)*sinh(n*Pi*y/a);bn:=(2/a)*int(f(x)*sin(n*Pi*x/a),x=0..a);

un := sin(1/2*n*Pi*x)*sinh(1/2*n*Pi*y)

bn := 4*(-sin(n*Pi)+2*sin(1/2*n*Pi))/n^2/Pi^2

>    bn:=trigsimp(bn,n);cn:=bn/sinh(n*Pi*b/a);usumma:=(x,t,N)->add(cn*un,n=1..N);

bn := 8/n^2/Pi^2*sin(1/2*n*Pi)

cn := 8/n^2/Pi^2*sin(1/2*n*Pi)/sinh(3/2*n*Pi)

usumma := proc (x, t, N) options operator, arrow; add(cn*un,n = 1 .. N) end proc

>    seq(cn,n=1..10);

8/Pi^2/sinh(3/2*Pi), 0, -8/9*1/(Pi^2*sinh(9/2*Pi)), 0, 8/25*1/(Pi^2*sinh(15/2*Pi)), 0, -8/49*1/(Pi^2*sinh(21/2*Pi)), 0, 8/81*1/(Pi^2*sinh(27/2*Pi)), 0

>    usumma(x,y,6);

8/Pi^2/sinh(3/2*Pi)*sin(1/2*Pi*x)*sinh(1/2*Pi*y)-8/9*1/Pi^2/sinh(9/2*Pi)*sin(3/2*Pi*x)*sinh(3/2*Pi*y)+8/25*1/Pi^2/sinh(15/2*Pi)*sin(5/2*Pi*x)*sinh(5/2*Pi*y)

>    plot3d(usumma(x,y,20),x=0..a,y=0..b);

[Maple Plot]

>    plot([seq(usumma(x,y,10),y=[0,1,1.5,2,2.5,3])],x=0..a,axes=box);

[Maple Plot]

>   

Esim n

Muuta edellisen esimerkin 1. rivi ja napsuttele enteriä. Kuvissa voit muutella parametreja sopivasti esimerkin mukaan.

Periaatteessa kaikki tämäntyyppiset esimerkit tulevat hoidetuksi.