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ö 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) |
> | usarja:=Sum(c[n]*un,n=1..infinity); |
> | bn:=(2/a)*int(f(x)*sin(n*Pi*x/a),x=0..a); |
> | cn:=bn/sinh(n*Pi*b/a); |
> | usumma:=(x,t,N)->add(cn*un,n=1..N); |
Esim 1
> | a:=4: b:=4: f:=x->1/4*x*(4-x); |
> | plot(f,0..4); |
> | bn; |
> | bn:=trigsimp(bn,n); |
> | seq(bn,n=1..10); |
> | usumma(x,y,6); |
> | plot3d(usumma(x,y,10),x=0..a,y=0..b); |
> | plot([seq(usumma(x,y,10),y=[0,1,2,3,4])],x=0..4,axes=box); |
Esim 2
> | a:=2: b:=3: f:=x->piecewise(0<x and x < 1,x,1<x and x < 2,2-x); |
> | #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); |
> | bn:=trigsimp(bn,n);cn:=bn/sinh(n*Pi*b/a);usumma:=(x,t,N)->add(cn*un,n=1..N); |
> | seq(cn,n=1..10); |
> | usumma(x,y,6); |
> | plot3d(usumma(x,y,20),x=0..a,y=0..b); |
> | plot([seq(usumma(x,y,10),y=[0,1,1.5,2,2.5,3])],x=0..a,axes=box); |
> |
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.