Professional Documents
Culture Documents
1.KHINIMCHUNG
Phngtrnhviphnohmring(PDE)lmtlpccphngtrnh
vi phn c s bin c lp ln hn 1. Trong chng ny ta s kho st cc
phng trnh vi phn o hm ring cp 2 vi hai bin c lp x v y, c
dngtngqut:
2u
2u
2u
u u
A(x,y) 2 + B(x,y)
(1)
+ C(x, y) 2 = f x,y,u, ,
x
xy
y
x y
vixoxxf,yoyyfvcciukinbin:
u(x,y o ) = b yo (x)
u(x,y f ) = b yf (x)
PDEelliptic:
PDEparabolic: B2 4AC = 0
2.PHNGTRNHELLIPTIC
TaxtphngtrnhHelmholz:
2 u(x,y) 2 u(x,y)
2 u(x,y) + g(x, y) =
+
+ g(x,y)u(x,y) = f(x,y) (1)
x 2
y 2
(2)
u(xo ,y) = b xo (y)
u(xf ,y) = b xf (y)
vixj=xo+jx,yj=yo+jy
(3.a)
x 2 x j ,yi
x 2
403
u i+1,j 2u i ,j + u i1,j
2 u(x,y)
viui,j=u(xj,yi)
y 2 x ,y
x 2
j
(3.b)
Nhvytimiimbntrong(xj,xi)vi1iMy1v1jMxitnhn
cphngtrnhsaiphn:
u i ,j+1 2u i ,j + u i ,j1 u i+1,j 2u i ,j + u i1,j
+
= g i ,ju i ,j = fi ,j
(4)
x 2
y 2
Trong:
fi,j=f(xj,yi)
gi,j=g(xj,yi)
ui,j=u(xj,yi)
Ccphngtrnhnyspxplitheocchnothnhhphngtrnhvi
(My1)(Mx1)bin u1,1 ,u1,2 ,...,u1,Mx 1 ,u 2 ,1 ,...,u 2 ,Mx 1 ,...,u My 1,2 ,...,u My 1,Mx 1 .
ddngtavitliphngtrnhviukinbindidng:
(5a)
u i ,o = b xo (y i )
(5b)
u i ,Mx = b xf (y i )
u o ,j = b yo (x j )
u My ,j = b yf (x j )
Trong:
y 2
x 2 y 2
x 2
ry =
rx =
rxy =
(6)
2( x 2 + y 2 )
2( x 2 + y 2 )
2( x 2 + y 2 )
Bygitakhosttipccdngiukinbin.CcbitonPDEc2loi
iukinbin:iukinbinNeumannviukinbinDirichlet.iukin
binNeumannmtbng:
u(x,y)
(7)
= bxo (y)
x x=xo
Thayohmbc1bintri(x=xo)bngxpx3im:
u i ,1 u i ,1
= bxo (y i )
u i ,1 u i ,1 2bxo (y i )x i=1,2,...,My1
2 x
Thaythrngbucnyvo(5a)ccimbintac:
(8)
(9)
Nuiukinbintrnbindi(y=yo)cnglkiuNeumanntasvitcc
phngtrnhtngtvij=1,2,...,Mx1:
u 0 ,j = 2rx u1,j + ry (u 0 ,j+1 + u 0 ,j1 ) + rxy g 0 ,j u 0 ,j f0 ,j 2by0 (x j )y
(10)
vbsungchogcditri(xo,yo):
404
by (x0 )
bx (y 0 )
+2 0
u 0 ,0 = 2(ry u 0 ,1 + rx u1,0 ) + rxy g 0 ,0 u 0 ,0 f0 ,0 2 0
(11)
x
y
iukinbinDirichletchogitrhmtrnbinnncththaytrctipvo
phngtrnh.Tacthlygitrtrungbnhcaccgitrbinlmgitr
ucaui,j.Taxydnghmpoisson()thchinthuttonny:
function[u,x,y]=poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,tol,maxiter)
%giaia(u_xx+u_yy+g(x,y)u=f(x,y)
%trenmienD=[x0,xf,y0,yf]={(x,y)|x0<=x<=xf,y0<=y<=yf}
%voidieukienbien:
%u(x0,y)=bx0(y),u(xf,y)=bxf(y)
%u(x,y0)=by0(x),u(x,yf)=byf(x)
%Mxsodoancontrentrucx
%Mysodoancontrentrucy
%tol:saisochophep
%maxiter:solanlap
x0=D(1);
xf=D(2);
y0=D(3);
yf=D(4);
dx=(xfx0)/Mx;
x=x0+[0:Mx]*dx;
dy=(yfy0)/My;
y=y0+[0:My]*dy;
Mx1=Mx+1;
My1=My+1;
%dieukienbien
form=1:My1
u(m,[1Mx1])=[bx0(y(m))bxf(y(m))];
end
forn=1:Mx1
u([1My1],n)=[by0(x(n));byf(x(n))];
end
sumbv=sum(sum([u(2:My,[1Mx1])u([1My1],2:Mx)]));
u(2:My,2:Mx)=sumbv/(2*(Mx+My2));
fori=1:My
405
forj=1:Mx
F(i,j)=f(x(j),y(i));
G(i,j)=g(x(j),y(i));
end
end
dx2=dx*dx;
dy2=dy*dy;
dxy2=2*(dx2+dy2);
rx=dx2/dxy2;
ry=dy2/dxy2;
rxy=rx*dy2;
foritr=1:maxiter
forj=2:Mx
fori=2:My
u(i,j)=ry*(u(i,j+1)+u(i,j1))+rx*(u(i+1,j)+u(i1,j))...
+rxy*(G(i,j)*u(i,j)F(i,j));%Pt.(5a)
end
end
ifitr>1&max(max(abs(uu0)))<tol
break;
end
u0=u;
end
TagiiphngtrnhLaplace:
2 u(x,y) 2 u(x, y)
2 u(x, y) =
+
= 0
x 2
y 2
trongmin0x4,0y4viiukinbin:
u(0,y) = e y cosy
u(4,y) = e x cos4 e 4cosy
u(x,0) = cosxe x
(vd1)
(vd2)
(vd3)
Tamunnhncu(x,y),mtphnbnhittrnmttmvungmi
cnh di 4 n v. Ta dng chng trnh ctpoisson.m gi hm poisson()
giibitonny.
clearall,clc
406
f=inline(0,x,y);
g=inline(0,x,y);
x0=0;
xf=4;
Mx=20;
y0=0;
yf=4;
My=20;
bx0=inline(exp(y)cos(y),y);%(vd.2a)
bxf=inline(exp(y)*cos(4)exp(4)*cos(y),y);%(vd.2b)
by0=inline(cos(x)exp(x),x);%(vd.3a)
byf=inline(exp(4)*cos(x)exp(x)*cos(4),x);%(vd.3b)
D=[x0xfy0yf];
maxiter=500;
tol=1e4;
[U,x,y]=poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,tol,maxiter);
clf
mesh(x,y,U)
axis([0404100100])
3.PHNGTRNHPARABOLIC
1. Dng phng trnh: Mt phng trnh vi phn o hm ring dng
paraboliclphngtrnhmtsphnbnhitimxtithiimt
camtthanh:
2 u(x,t) u(x,t)
(1)
A
=
x 2
t
phng trnh c th gii c ta phi cho iu kin bin u(0, t) = b0(t),
u(xf ,t) = bxf (t) viukinuu(x,0)=i0(x)
2.PhngphpEulertintngminh:pdngphngphpsaiphn
hu hn, ta chia min khng gian [0, xf] thnh M on, mi on di
x = xf / M vchiathigianTthnhNphn,miphnlt=T/N.Sauta
thayohmbc2vtrivohmbcvphica(1)bngccxpx
3imvnhnc:
u k 2u ik + u ik1 u ik+1 u ik
A i +1
=
(2)
x 2
t
407
Cngthcnycthgignvothuttonsau,gilthuttonEultin
tngminh:
t
(3)
x
i=1,2,...,M1
tmiukinnnhcathutton,tathaynghimth:
ji
P
u = e
(4)
viPlsnguynkhczerovophngtrnh(3)vc:
j
j
= r e + e P + (1 2r) = 1 2r 1 cos
(5)
P
Dotaphic||1vibitonkhngcngunnniukinnnhl:
t 1
r=A 2
(6)
x
2
Taxydnghmfwdeuler()thchinthuttontrn
function[u,x,t]=fwdeuler(a,xf,T,it0,bx0,bxf,M,N)
%giaiau_xx=u_tvoi0<=x<=xf,0<=t<=T
%dieukiendau:u(x,0)=it0(x)
ieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Msodoancontheox
%Nsodiemtheot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
fori=1:M+1
u(i,1)=it0(x(i));
end
forn=1:N+1
u([1M+1],n)=[bx0(t(n));bxf(t(n))];
end
r=a*dt/dx/dx
r1=12*r;
fork=1:N
fori=2:M
u(i,k+1)=r*(u(i+1,k)+u(i1,k))+r1*u(i,k);%Pt.(3)
k
i
408
end
end
3. Phng php Euler li n: Ta kho st mt thut ton khc gi l thut
tonEulerli,nsinhradothaythlixpxohmiviohmbc
1trnvphica(1):
u ik+1 2u ik + u ik1 u ik u ik 1
A
=
(7)
x 2
t
t
ru ik1 + (1 + 2r)u ik ru ik+1 = u ik 1 r = A 2
(8)
x
k
c hai u cho trc t iu kin bin kiu
Nu cc gi tr u 0k v u M
Dirichletnnphngtrnh(8)atihphngtrnh:
k
k 1
k
1 + 2r
r
0
0
0
0 u1 u1 + ru 0
k
k 1
u
u
r
1
2r
r
0
0
0
2
2
k
k 1
r
r
1 + 2r
0
0
u3
u3
(9)
M
M
M
M
M M
M
M
k
k 1
+
L
0
0
1
2r
r
u
u
M2
M 2
0
r
0
0
1 + 2r u k u k1 + ru k
L
M
M1 M 1
u
iukinbinNeumann
= b0 (t) cavophngtrnhbngcch
x x=0
xpx:
u1k u k1
(10)
= b0 (k)
2 x
vghpnviphngtrnhcn u 0k :
ru k1 + (1 + 2r)u 0k ru1k = u 0k 1
ccphngtrnh:
(1 + 2r)u 0k 2ru1k = u 0k 1 2rb0 (k)x
Ktqutacchphngtrnh:
(11)
(12)
409
1 + 2r
0
0
r
1 + 2r
0
r
r
0
1 + 2r
r
r
0
1 + 2r
r
0
M
M
M
M
0
0
0
0
0
0
0
0
L
L
L
L
M
L
L
0 u 0k u 0k 2rb0 (k)x
0
0 u1k
u1k1
k
k 1
0
0 u2
u2
k
0
0 u3 =
u k3 1
(13
0 M
r
M
k
k 1
1 + 2r
r u 0
uM
2
k
k
1
k
1 + 2r u 0 u M 1 + ru M
r
0
iukinnnhcanghiml:
re
hay: =
+ (1 + 2r) re =
P
1 + 2r 1 cos
P
Taxydnghmbackeuler()thchinthuttonny:
function[u,x,t]=backeuler(a,xf,T,it0,bx0,bxf,M,N)
%Giaiau_xx=u_tvoi0<=x<=xf,0<=t<=T
%Dieukiendau:u(x,0)=it0(x)
%ieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Msokhoangcontrentrucx
%Nsokhoangtheot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
fori=1:M+1
u(i,1)=it0(x(i));
end
forn=1:N+1
u([1M+1],n)=[bx0(t(n));bxf(t(n))];
end
r=a*dt/dx/dx;
r2=1+2*r;
fori=1:M1
(14)
410
A(i,i)=r2;%Pt.(9)
ifi>1
A(i1,i)=r;
A(i,i1)=r;end
end
fork=2:N+1
b=[r*u(1,k);zeros(M3,1);r*u(M+1,k)]+u(2:M,k1);%Pt.(9)
u(2:M,k)=trid(A,b);
end
4.Phngphp CrankNicholson:Trong(7),xpxohmvtrily
thiimk,trongkhixpxohmvphi.cithin,talyohm
vtriltrongbnhcaxpxohmtihaiimlkvk+1vc:
A u ik++11 2u ik+1 + u ik+11 u ik+1 2u ik + u ik1 u ik+1 u ik
+
(15)
=
x 2
x 2
2
t
vnhncphngphpCrankNicholson:
t
k +1
r
2(1
r)
r
0
0
0
u2
0
2(1 + r)
0
0 u k3 +1
r
r
M
M
M
M
M M
M
0
k +1
0
0
2(1
r)
r
L
+
u M 1
0
0
0
2(1 + r) u k +1
L
r
M
k
2(1 r)
r
0
0
0
0 u1
k
r
2(1
r)
r
0
0
0
u2
0
r
2(1 r)
r
0
0 u k3
=
M
M
M
M
M
M
0
0
0
2(1 r)
r u k
L
M 1
0
0
0
r
2(1 r) u k
L
411
r(u 0k +1 + u 0k )
+
M
2r [ bM (k + 1) + bM (k)]
iukinnnhcxcnhbng:
2 1 + r 1 cos = 2 1 r 1 cos
P
P
1 r 1 cos
P
1
hay: =
1 + r 1 cos
P
Taxydnghmcranknicholson()thchinthuttontrn:
function[u,x,t]=cranknicholson(a,xf,T,it0,bx0,bxf,M,N)
%Giaiau_xx=u_tvoi0<=x<=xf,0<=t<=T
%Dieukiendau:u(x,0)=it0(x)
%Dieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Msokhoangcontrentrucx
%Nsokhoangtheot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
fori=1:M+1
u(i,1)=it0(x(i));
end
forn=1:N+1
u([1M+1],n)=[bx0(t(n));bxf(t(n))];
end
r=a*dt/dx/dx;
r1=2*(1r);
r2=2*(1+r);
fori=1:M1
(17)
(18)
412
A(i,i)=r2;%Pt.(17)
ifi>1
A(i1,i)=r;
A(i,i1)=r;
end
end
fork=2:N+1
b=[r*u(1,k);zeros(M3,1);r*u(M+1,k)]...
+r*(u(1:M1,k1)+u(3:M+1,k1))+r1*u(2:M,k1);
u(2:M,k)=trid(A,b);%Pt.(17)
end
giiphngtrnh:
2 u(x,t) u(x,t)
=
0 x 1, 0 t 0.1
x 2
t
viiukinu:
Nhvyvix=xf/M=1/20vt=T/N=1/100tac:
t
0.001
r = A 2 = 1.
= 0.4
x
0.052
Tadngchngtrnhctheat.mtmnghimca(vd1):
clearall,clc
a=1;%cacthongsocua(vd1)
it0=inline(sin(pi*x),x);%dieukiendau
bx0=inline(0);
bxf=inline(0);%dieukienbien
xf=1;
M=25;
T=0.1;
N=100;
[u1,x,t]=fwdeuler(a,xf,T,it0,bx0,bxf,M,N);
figure(1),clf,mesh(t,x,u1)
[u2,x,t]=backeuler(a,xf,T,it0,bx0,bxf,M,N);
figure(2),clf,mesh(t,x,u2)
[u3,x,t]=cranknicholson(a,xf,T,it0,bx0,bxf,M,N);
(vd1)
(vd2)
(vd3)
413
figure(3),clf,mesh(t,x,u3)
4.PDEparabolic2chiu:Taxtbitonphngtrnhviphnohmring
parabolichaichiumtsphnbnhitu(x,y,t):
2 u(x,y,t) 2 u(x,y,t) u(x, y,t)
A
(19)
+
=
2
2
x
y
t
phngtrnhcthgiictacnchoiukinbin:
u(x0 ,y,t) = bx0 (y,t)
u(xf ,y,t) = b xf (y,t)
viukinuu(x,y,0)=i0(x,y)
Tathayohmbc1theotvphibngsaiphn3imtiimgia
(tk+1+tk)/2nhphngphpCrankNicholson.Tacngthaythmttrong
ccohmbchaiuxxvuyybngxpx3imtithiimtkvohm
kiatitk+1vc:
u ik,j+1 2u ik,j + u ik,j1 u ik,j+1 2u ik,j + u ik,j1 u ik,j+1 u ik,j
(20)
=
2
2
x
x
t
Tavitphngtrnhtithiimtiptheotk+1:
u ik,j++11 2u ik,j+1 + u ik,j+11 u ik,j+1 2u ik,j + u ik,j1 u ik,j+ 2 u ik,j+1
A
(21)
=
2
2
x
x
t
vi0jMx1
(22a)
(22b)
vi0iMy1
t
v: rx = A 2
x
x x0
x = f
Mx
y 2
y y0
y = f
My
ry = A
t =
Taxydnghmheat2D()thchinthuttonny:
function[u,x,y,t]=heat2D(a,D,T,ixy0,bxyt,Mx,My,N)
%Giaiau_t=c(u_xx+u_yy)voiD(1)<=x<=D(2),D(3)<=y<=D(4),0<=t
%<=T
414
%Dieukiendau:u(x,y,0)=ixy0(x,y)
%Dieukienbien:u(x,y,t)=bxyt(x,y,t)voi(x,y)cB
%Mx/Mycacdoancodoctheotrucx/y
%Ncackhoangthoigian
dx=(D(2)D(1))/Mx;
x=D(1)+[0:Mx]*dx;
dy=(D(4)D(3))/My;
y=D(3)+[0:My]*dy;
dt=T/N;
t=[0:N]*dt;
%Khoigan
forj=1:Mx+1
fori=1:My+1
u(i,j)=ixy0(x(j),y(i));
end
end
rx=a*dt/(dx*dx);
rx1=1+2*rx;
rx2=12*rx;
ry=a*dt/(dy*dy);
ry1=1+2*ry;
ry2=12*ry;
forj=1:Mx1%Pt.(22a)
Ay(j,j)=ry1;
ifj>1
Ay(j1,j)=ry;
Ay(j,j1)=ry;
end
end
fori=1:My1%Pt.(22b)
Ax(i,i)=rx1;
ifi>1
Ax(i1,i)=rx;
Ax(i,i1)=rx;
end
end
415
fork=1:N
u_1=u;
t=k*dt;
fori=1:My+1%Dieukienbien
u(i,1)=feval(bxyt,x(1),y(i),t);
u(i,Mx+1)=feval(bxyt,x(Mx+1),y(i),t);
end
forj=1:Mx+1
u(1,j)=feval(bxyt,x(j),y(1),t);
u(My+1,j)=feval(bxyt,x(j),y(My+1),t);
end
ifmod(k,2)==0
fori=2:My
jj=2:Mx;
bx=[ry*u(i,1)zeros(1,Mx3)ry*u(i,My+1)]...
+rx*(u_1(i1,jj)+u_1(i+1,jj))+rx2*u_1(i,jj);
u(i,jj)=trid(Ay,bx);%Pt.(22a)
end
else
forj=2:Mx
ii=2:My;
by=[rx*u(1,j);zeros(My3,1);rx*u(Mx+1,j)]...
+ry*(u_1(ii,j1)+u_1(ii,j+1))+ry2*u_1(ii,j);
u(ii,j)=trid(Ax,by);%Pt.(22b)
end
end
end
Taxtphngtrnh:
2
2 u(x,y,t) u(x,y,t)
4 u(x,y,t)
+
10
=
2
2
x
y
t
(vd1)
trongmin:0x4,0y4vtrongkhongthiggian0t5000
iukinu:
u(x,y,0)=0
(vd2a)
viukinbin:
eycosxexcosytix=0,x=4;y=0,y=4
(vd2b)
416
Chngtrnhchngtrnhctheat2D.mdnggiiphngtrnhl:
clear,clc,clf
a=1e4;
it0=inline(0,x,y);%(vd2a)
bxyt=inline(exp(y)*cos(x)exp(x)*cos(y),x,y,t);%(vd.2b)
D=[0404];
T=5000;
Mx=40;
My=40;
N=50;
[u,x,y,t]=heat2D(a,D,T,it0,bxyt,Mx,My,N);
mesh(x,y,u)
4.PHNGTRNHHYPERBOLIC
1. Dng phng trnh: Phng trnh truyn sng mt chiu l PDE dng
hyperbolic:
2 u(x,t) 2 u(x,t)
(1)
A
=
x 2
t 2
0xxf,0tT
iukinbin:
u
= i0 (x)
t t =0
phicchotrcphngtrnhcthgiic
2. Phng php sai phn tng minh: Tng t nh khi gii PDE dng
parabolic,tathayohmbchaihaivca(1)bngsaiphn3im:
u k 2u ik + u ik1 u ik +1 2u ik + u ik 1
A i +1
=
(2)
x 2
t 2
T
x
x = f
t =
N
M
vccphngphpsaiphntngminh:
u ik +1 = r ( u ik+1 + u ik1 ) + 2(1 r)u ik u ik1
(3)
u(x,0)=i0(x),
vi: r = A
t 2
x 2
417
(4)
Nhvy,taxpxiukinuvohmbngsaiphn:
u1i u i1
= i0 (xi )
2 t
vrtra u i1 avo(3):
(5)
1
u1i = r ( u 0i+1 + u 0i1 ) + (1 r)u 0i + i0 (xi )t
(6)
2
Tadng(6)cngviiukinuc u1i vrithayvo(3).Chl:
r1bomnnh
chnhxccanghimtngkhirtngchoxgim
Hplnhtllyr=1.iukinnnhcthnhncbngcchthay(4)
vo(3):
1
= 2rcos + 2(1 r)
P
hay: 2 + 2 r 1 cos 1 + 1 = 0
P
Nhvy:
1
t 2
r
r = A 2 1
x
1 cos
P
Taxydnghmwave()thchinthuttontrn:
function[u,x,t]=wave(a,xf,T,it0,i1t0,bx0,bxf,M,N)
%giaiau_xx=u_ttvoi0<=x<=xf,0<=t<=T
%dieukiendau:u(x,0)=it0(x),u_t(x,0)=i1t0(x)
%dieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Mkhoangchiatheox
%Nkhoangchiateot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
418
fori=1:M+1
u(i,1)=it0(x(i));
end
fork=1:N+1
u([1M+1],k)=[bx0(t(k));bxf(t(k))];
end
r=a*(dt/dx)^2;
r1=r/2;
r2=2*(1r);
u(2:M,2)=r1*u(1:M1,1)+(1r)*u(2:M,1)+r1*u(3:M+1,1)...
+dt*i1t0(x(2:M));%Pt.(6)
fork=3:N+1
u(2:M,k)=r*u(1:M1,k1)+r2*u(2:M,k1)+r*u(3:M+1,k1)...
u(2:M,k2);%Pt.(3)
end
Taxtphngtrnh:
2 u(x,t) 2 u(x,t)
x 2
t 2
0x2,0t2
iukinuviukinbin:
u
u(x,0)=x(1x)
=0
t t =0
u(0,t) = 0
u(1,t)=0
Tadngchngtrnhctwave.mgiiphngtrnhny:
clearall,clc
a=1;
it0=inline(x.*(1x),x);
i1t0=inline(0);%(vd2a)
bx0t=inline(0);
bxft=inline(0);%(vd2b)
xf=1;
M=20;
T=2;
N=50;
(vd1)
(vd2a)
(vd2b)
419
[u,x,t]=wave(a,xf,T,it0,i1t0,bx0t,bxft,M,N);
figure(1),clf
mesh(t,x,u)
figure(2),clf
forn=1:N%hinhdong
plot(x,u(:,n)),axis([0xf0.30.3]),pause(0.2)
end
4.PDEhyperbolic2chiu:PhngtrnhtruynsnghaichiulPDEdng
hyperbolic:
2 u(x,y,t) 2 u(x,y,t) 2 u(x,y,t)
(8)
A
+
=
2
2
2
x
y
t
0xxf,0yyf,0tT
iukinbin:
u(x,0,t) = b y0 (x,t)
viubin:
u(x,y)
= i0 (x, y)
t
t =0
Tngtnhhmmtbin,tathayohmbc2bngxpx3im:
u ik,j+1 2u ik,j + u ik,j1 u ik+1,j 2u ik,j + u ik1,j u ik,j+1 2u ik,j + u ik,j1
(9)
+
=
2
2
2
x
y
t
y
x
T
x = f y = f t =
Mx
N
My
u(x,y,0) = i 0 (x,y)
vnhninphngphptngminh:
(10)
vi:
t 2
t 2
r
A
=
y
y 2
x 2
V u i,j1 = u(xi ,y i , t) khngchotrcnntakhngthdngtrctip u1i,j t
rx = A
(10)vik=0:
(11)
Nhvy,taxpxiukinuvohmbngsaiphn:
420
u1i ,j u i,j1
= i0 (x j ,y i )
2 t
vrtra u i,j1 avo(11):
1
u1i ,j = rx u i0,j+1 + u 0i ,j1 + ry u 0i+1,j + u 0i1,j
+ 2(1 rx ry )u i0,j + i0 (x j ,y i )t
(12)
(13)
iukinnnh:
4At 2
r= 2
1
x + y 2
Taxydnghmwave2D()thchinthuttontrn:
function[u,x,y,t]=wave2D(a,D,T,it0,i1t0,bxyt,Mx,My,N)
%giaia(u_xx+u_yy)=u_ttvoiD(1)<=x<=D(2),D(3)<=y<=D(4),0<=t
%<=T
%dieukiendau:u(x,y,0)=it0(x,y),u_t(x,y,0)=i1t0(x,y)
%dieukienbien:u(x,y,t)=bxyt(x,y,t)voi(x,y)trenbien
%Mx/Mysokhoangchiatrentrucx/y
%Nsokhoangchaitheot
dx=(D(2)D(1))/Mx;
x=D(1)+[0:Mx]*dx;
dy=(D(4)D(3))/My;
y=D(3)+[0:My]*dy;
dt=T/N;t=[0:N]*dt;
%khoigan
u=zeros(My+1,Mx+1);
ut=zeros(My+1,Mx+1);
forj=2:Mx
fori=2:My
u(i,j)=it0(x(j),y(i));
ut(i,j)=i1t0(x(j),y(i));
end
end
adt2=a*dt*dt;
rx=adt2/(dx*dx);
ry=adt2/(dy*dy);
421
rxy1=1rxry;
rxy2=rxy1*2;
u_1=u;
fork=0:N
t=k*dt;
fori=1:My+1%dieukienbien
u(i,[1Mx+1])=[bxyt(x(1),y(i),t)bxyt(x(Mx+1),y(i),t)];
end
forj=1:Mx+1
u([1My+1],j)=[bxyt(x(j),y(1),t);bxyt(x(j),y(My+1),t)];
end
ifk==0
fori=2:My
forj=2:Mx%Pt.(13)
u(i,j)=0.5*(rx*(u_1(i,j1)+u_1(i,j+1))...
+ry*(u_1(i1,j)+u_1(i+1,j)))+rxy1*u(i,j)+dt*ut(i,j);
end
end
else
fori=2:My
forj=2:Mx
u(i,j)=rx*(u_1(i,j1)+u_1(i,j+1))...
+ry*(u_1(i1,j)+u_1(i+1,j))+rxy2*u(i,j)u_2(i,j);
end
end
end
u_2=u_1;
u_1=u;
mesh(x,y,u),axis([0202.1.1])
pause(0.1);
end
Taxtphngtrnh:
1 2 u(x,y,t) 2 u(x,y,t) 2 u(x,t)
=
4
x 2
y 2
t 2
(vd1)
0x2,0y2,0t2
422
iukinuviukinbin:
u(0,y,t)=0u(2,y,t)=0 u(x,0,t)=0u(x,2,t)=0
(vd2)
y
x
u
(vd3)
=0
u(x,y,0) = 0.1sin sin
t t =0
2
2
Tadngchngtrnhctwave2D.mgiiphngtrnhny:
clearall,clc
it0=inline(0.1*sin(pi*x)*sin(pi*y/2),x,y);%(vd3)
i1t0=inline(0,x,y);
bxyt=inline(0,x,y,t);%(vd2)
a=.25;
D=[0202];
T=2;
Mx=40;
My=40;
N=40;
[u,x,y,t]=wave2D(a,D,T,it0,i1t0,bxyt,Mx,My,N);
5.PHNGPHPPHNTHUHN(FEM)GIIPDE
PhngphpFEMdngtmnghimscaPDEviiukinbin.
TaxtmtPDEdngelliptic:
2 u(x,y) 2 u(x,y)
+
+ g(x,y)u(x, y) = f(x,y)
(1)
x 2
y 2
trongminDbaobibinBvtrnbinccciukin:
u(x,y)=b(x,y) trnB
(2)
CcbcdngFEMgiiphngtrnhgm:
)ChiaminDthnhNsmincon{S1,S2,...,SNs}cdnghnhtamgic
)MtvtrcaNnntvnhschngbtutccnttrnbin:
n=1,2,...,Nbvccntbntrong:n=Nb+1,Nb+2,...,Nn
)Xcnhcchmnisuy,hnhdngvcs:
(3a)
chomiminSs
(3b)
423
ivittccccmincons=1:Nsvccntn=1:Nnsaochonbng1
chntnvbngzeroticcntkhc.LcnghimxpxcaPDE
lthptuyntnhcacchmcsn(x,y):
Nn
i =1
Nn
Nb
= c n n (x, y) +
i =1
i = N b +1
c n n (x,y)
= [ c1 ] [ 1 ] + [ c 2 ] [ 2 ]
T
(4)
Trong:
[1 ] = 1
[2 ] = N
2 L N b
[c1 ] = c1
[c 2 ] = c N
N b +2 L N n
b +1
c 2 L c N b
(5a)
T
c N b +2 L c N n (5b)
b +1
Vimimincon,nghimnycthvitdidng:
Nn
Nn
i =1
i =1
(6)
)tccgitrcahsntbintrong[c1]bngccgitrbintng
ngviiukinbin
) Xc nh tr s ca h s nt bn trong trong [c2] bng cch gii h
phngtrnh:
[A2][c2]=[d]
(7)
trong:
Ns
[ A1 ] =
s =1
T
T
Ns
{g(x ,y )
s
2 ,s
1,s
} S
s
(8)
s =1
1,s = 1,s 2 ,s L N b ,s
T
Ns
[ A2 ] =
s =1
T
T
2 ,s 2 ,s + 2 ,s 2 ,s S s
x
y
y
x
424
Ns
{g(x ,y )
s
2 ,s
2 ,s
} S
s
(9)
(10)
s =1
2 ,s = Nb +1,s Nb + 2 ,s L N n ,s
T
Ns
s =1
(xs,ys)ltrongtmcaminconSs
FEMdatrnnguyntclnghimca(1)cthnhncbngcch
cctiuhohm:
J=
u(x,y) + u(x,y)
y
(11)
(12)
(13)
[ A1 ][ c1 ] + [ A 2 ][ c 2 ] + f(xs ,y s ) 2 ,s S = 0
(14)
Viu(x,y)=[c]T[(x,y)]tac:
J=
[c ]T [] [][ c ] + [c ]T [ ] [ ]T [c ]
x
x
y
y
{
R
iukinhmnycctiutheo[c]l:
d
J=
[2 ] []T [c ] + []T [c ]
d [c2 ]
x
x
y
{
R
Ns
s =1
functionp=fembasisftn(N,S)
%p(i,s,1:3):cachesocuamoihamcosophi(i)
%cuamientamgiac(miencon)thus
%N(n,1:2):x&ytoadocuanutthun
425
%S(s,1:3):nutthuscuamiencontamgiacthus
Nn=size(N,1);%tongsonut
Ns=size(S,1);%tongsocacnutcuamiencontamgiac
forn=1:Nn
fors=1:Ns
fori=1:3
A(i,1:3)=[1N(S(s,i),1:2)];
b(i)=(S(s,i)==n);%hamcosothunbang1chionutthun
end
pnt=A\b;
fori=1:3\
p(n,s,i)=pnt(i);
end
end
end
xcnhccvecths[c]canghim(4)nh(7)vccathc
nghim s (x, y) nh(6)ivimimincons=1,2,...,Nstaxydnghm
femcoef():
function[U,c]=femcoef(f,g,p,c,N,S,Ni)
%p(i,s,1:3):cachesocuahamcosophi(i)cuamienconthun
%c=[.11.00.]voicacgiatribienva0voicacnutbentrong
%N(n,1:2):x&ytoajdocuanutthun
%S(s,1:3):nutthuscuamienconthus
%Ni:sonutbentrong
%U(s,1:3):cachesocuap1+p2(s)x+p3(s)ycuamoimiencon
Nn=size(N,1);%tongsonutbangNb+Ni
Ns=size(S,1);%tongsomiencon
d=zeros(Ni,1);
Nb=NnNi;
fori=Nb+1:Nn
forn=1:N_n
fors=1:Ns
xy=(N(S(s,1),:)+N(S(s,2),:)+N(S(s,3),:))/3;%trongtam
%phi(i,x)*phi(n,x)+phi(i,y)*phi(n,y)g(x,y)*phi(i)*phi(n)
426
pvctr=[p([in],s,1)p([in],s,2)p([in],s,3)];
tmpg(s)=sum(p(i,s,2:3).*p(n,s,2:3))...
g(xy(1),xy(2))*pvctr(1,:)*[1xy]*pvctr(2,:)*[1xy];
dS(s)=det([N(S(s,1),:)1;N(S(s,2),:)1;N(S(s,3),:)1])/2;
%dientichmiencon
ifn==1
tmpf(s)=f(xy(1),xy(2))*pvctr(1,:)*[1xy];
end
end
A12(iNb,n)=tmpg*abs(dS);%Pt.(8),(9)
end
d(iNb)=tmpf*abs(dS);%Pt.(10)
end
d=dA12(1:Ni,1:Nb)*c(1:Nb);%Pt(10)
c(Nb+1:Nn)=A12(1:Ni,Nb+1:Nn)\d;%Pt.(7)
fors=1:Ns
forj=1:3
U(s,j)=c*p(:,s,j);%Pt.(6)
end
end
TrckhidngFEMgiimtPDEtaxemthhmcs(hmhnhdng)
n(x,y)ivimintn=1,2,...,Nncnhnghaivittcccmin
conhnhtamgicsaochonbng1chtintnvbng0ticcntkhc
c to bi hm fembasisfth() hot ng nh th no. Ta s v hm hnh
dngcamincchiathnh4tamgicnhhnhsau:
1
n=2
Tocant: Sntmimincon
S1
n=1
N=[11;
S=[125;
n=5
S4
11;235;
S2
0
11;345;
S
3
11;145];
00.5];
n=4
n=3
1
1
0
427
Nn
(15)
n =1
ctrscntimintn.Tachychngtrnhctshowbasic.m:
clearall,clc
N=[11;11;11;11;0.20.5];%danhsachcacnuttrenhinh1
Nn=size(N,1);%sonut
S=[125;235;345;145];%danhsachcamiencontrenhinh1
Ns=size(S,1);%somiencon
figure(1),clf
fors=1:Ns
nodes=[S(s,:)S(s,1)];
fori=1:3
plot([N(nodes(i),1)N(nodes(i+1),1)],...
[N(nodes(i),2)N(nodes(i+1),2)])
holdon
end
end
ins=[12345];%danhsachcacnutmacachamcosoduocve
foritr=1:5
in=ins(itr);
ifitr==1
fori=1:length(xi)
forj=1:length(yi)
Z(j,i)=0;
fors=1:Ns
ifinpolygon(xi(i),yi(j),N(S(s,:),1),N(S(s,:),2))>0
Z(j,i)=p(in,s,1)+p(in,s,2)*xi(i)+p(in,s,3)*yi(j);
break;
end
end
428
end
end
subplot(321),mesh(xi,yi,Z)%hamcosocuanut1
else
c1=zeros(size(c));
c1(in)=1;
subplot(320+itr)
trimesh(S,N(:,1),N(:,2),c1)%hamcosocuacacnut25
end
end
c=[01230];%cacgiatritaicacnut
subplot(326)
trimesh(S,N(:,1),N(:,2),c)%hamtonghopohinhf
1
0.5
0.5
0
1
0
-1 -1
0
1
-1 -1
0.5
0.5
0
1
-1 -1
0
1
0.5
0
1
0
-1 -1
0
1
-1 -1
0
-1 -1
c=[01230];
p=fembasisftn(N,S);
x0=1;
xf=1;
y0=1;
yf=1;%cacmien
figure(2),clf
Mx=50;
429
My=50;
dx=(xfx0)/Mx;
dy=(yfy0)/My;
xi=x0+[0:Mx]*dx;
yi=y0+[0:My]*dy;
Vd:GiiphngtrnhLaplace:
2 u(x, y) 2 u(x,y)
2 u(x, y) =
+
= f(x,y)
x 2
y 2
trnmin 1 x 1; 1 y 1vi:
f(x,y)= +1
0
vi(x,y)=(0.5,0.5)
vi(x,y)=(0.5,0.5)
(1)
(2)
ccchkhc
viukinbinlu(x,y)=0timiimtrnbin.
430
giibitonnybngFEM,taxcnh12imtrnbinv19imbn
trong,nhschngvchiaminchnhtthnh36minconhnhtamgic
nhhnhvtrn.Tiptheotaxydngchngtrnh ctlaplace.mgiibi
ton
clearall,clc
N=[10;11;1/21;01;1/21;11;10;11;1/21;01;
1/21;11;1/21/4;5/87/16;3/45/8;1/25/8;
1/45/8;3/87/16;00;1/21/4;5/87/16;3/45/8;
1/25/8;1/45/8;3/87/16;9/1617/32;7/1617/32;
1/27/16;9/1617/32;7/1617/32;1/27/16];%nut
Nb=12;%sonuttrenbien
S=[11112;11119;101119;4519;5719;567;1215;2315;
31517;3417;41719;131719;11319;11315;7822;8922;
92224;91024;101924;192024;71920;72022;131418;
141516;161718;202125;212223;232425;142628;
162627;182728;212931;232930;253031;
262728;293031];%miencontamgiac
fexemp=(norm([xy]+[0.50.5])<0.01)(norm([xy][0.50.5])<0.01);
f=inline(fexemp,x,y);%(Pt.2)
g=inline(0,x,y);
Nn=size(N,1);%tongsonut
Ni=NnNb;%sonutbentrong
c=zeros(1,Nn);%giatritrenbien
p=fembasisftn(N,S);
[U,c]=femcoef(f,g,p,c,N,S,Ni);
%dothiluoitamgiac
figure(1);
clf;
trimesh(S,N(:,1),N(:,2),c);
%dothiluoichunhat
Ns=size(S,1);%tongsomiencontamgiac
x0=1;
xf=1;
y0=1;
yf=1;
431
Mx=16;
dx=(xfx0)/Mx;
xi=x0+[0:Mx]*dx;
My=16;
dy=(yfy0)/My;
yi=y0+[0:My]*dy;
fori=1:length(xi)
forj=1:length(yi)
fors=1:Ns
ifinpolygon(xi(i),yi(j),N(S(s,:),1),N(S(s,:),2))>0
Z(i,j)=U(s,:)*[1xi(i)yi(j)];%Pt.(4.5b)
break;
end
end
end
end
figure(2);
clf;
mesh(xi,yi,Z)
%desosanh
bx0=inline(0);
bxf=inline(0);
by0=inline(0);
byf=inline(0);
D=[x0xfy0yf];
[U,x,y]=poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,1e6,50);
figure(3)
clf;
mesh(x,y,U)
6.GUICAMATLABGIIPDE
1.CcphngtrnhcthgiicbngPDETOOL:CngcPDETOOL
caMATLABcthdnggiiccloiphngtrnhsau:
a.Phngtrnhelliptic:Tasgiiphngtrnhelliptic
(cu) + au = f
(1)
viiukinbn:
432
hu = r
r
ncu+qu=g
Dirichlet
(2)
Neumann
r
trnbin,trong n lvectphptuyn.
Trongtrnghpulilngvhng,phngtrnh(1)trthnh:
2 u(x, y) 2 u(x,y)
(3)
c
+
+ au(x, y) = f(x,y)
2
y 2
x
vnuiukinbiniviphnbinbntriliukinbinNeumann
u(x,y)
dng
= bx0 (y) th(2)cthvitthnh:
x x=x0
r u(x,y) r u(x,y) r
ex +
e y + qu(x,y)
e x c
x
y
(4)
u(x, y)
= c
+ qu(x,y) = g(x,y)
x
r r
vvectphptuyncabinphil n = e x
b.Phngtrnhparabolic:Taxgiiphngtrnh:
u
(cu) + au + d
= f
(5)
t
trnminvtrongkhongthigian0tT,viiukinbnging(2)v
iukinuu(t0)
c.Phngtrnhhyperbolic:
2u
(cu) + au + d 2 = f
(6)
t
trnminvtrongkhongthigian0tT,viiukinbnging(2)v
iukinuu(t0),u(t0)
d.Phngtrnhgitrring:
u
(cu) + au =
(7)
t
trnminvimtgitrringchabitviukinbintngt(2).
CngcPDETOOLcngcthdnggiihphngtrnhdng:
(c11u1 ) (c12u 2 ) + a11u1 + a12 u 2 = f1
(8)
(9)
h
u = r
h
22 2
2
21
hayiukinNeumanntngqut:
433
r
r
n(c11u1 ) + n(c12u 2 ) + q 11u1 + q 12 u 2 = g 1
r
r
n(c 21u1 ) + n(c 22u 2 ) + q 21u1 + q 22 u 2 = g 2
hayiukinbinhnhp:
f1
c11 c12
a11 a12
c=
a=
f =
c 21 c 22
a 21 a 22
f2
h11
h=
h 21
h12
h 22
r1
r =
r2
q 11 q12
q=
q
q
21
22
(10)
u1
u =
u2
g 1
g =
g 2
2.SdngPDETOOL:PDETOOLgiiphngtrnhviphnohmring
bng cch dng phng php FEM. gii phng trnh ta theo cc bc
sau:
) Nhp lnh pdetool vo ca s lnh MATLAB. Ca s PDE toolbox
xuthin.Tacthbt/tttuchnGridbngcchbmvo Gridtrn
menu Option.Tacngcthhiuchnhphmvitrcxvybngcch
chnAxesLimittrongnemuOption
)Tiptheotatolibngcchdngmenu Meshhayicon.tinh
chnhlitabmvoRefineMeshhayicon
) Tip theo ta m t dng phng trnh v cc thng s ca n bng
cch dng menu PDE. Mun th, ta m menu PDE hay chn icon PDE
vchnPDESpecificationvchoccthamscaphngtrnh.
)giiphngtrnhtadngmenu Solvehaychnicon=.Tachn
menu con Parameters nhp iu kin u v khong thi gian tm
nghim
)Numunvktqu,tadngmenuPlot
3.Mtsvd:
a.Vd1:GiiphngtrnhLaplace:
2 u(x,y) 2 u(x, y)
2 u(x, y) =
+
= 0
(vd1.1)
x 2
y 2
trongmin0x4,0y4vicciukinbin:
u(4,y)=eycos4e4cosy
(vd1.2)
u(0,y)=eycosy
u(x,4)=e4cosxexcos4
(vd1.3)
u(x,0)=cosxex
giiphngtrnhtathchinccbcsau:
McngcPDETOOL.VomenuOption|AxesLimithiuchnh
li phm vi gi tr ca x v y l [0 5] ri chn Apply v Close. Chn
Option|AxesEqual
Bmvoiconvhnhvung.Khivxong,nuchangkch
thctabmpvoitngbygictnlR1hiuchnhli
thnhLeft:0,Bottom:0,Height:4,Width:4.
Bmvoiconthngbincaitngcmu.Trnmi
onbintachoiukinbintheo(vd1.2)v(vd1.3).ghiiukin
binchoonnotabmpchutlnon.iukinbincho
liukinbinDirrichlet.Trnbintri,taghiiukinbin:
h=1,r=exp(y)cos(y)
trnbinphi:
h=1,r=eycos4e4cosy
trnbindi:
h=1,r=cosxex
vtrnbintrn:
h=1,r=e4cosxexcos4
435
BmpchutvoiconPDEvchnphngtrnhdngellipticv
ccthngstheo(vd1.1):c=1,a=0,f=0
Bmpchutvoicontolivsautinhchnhn.
Bmpchutvoicon=giiphngtrnh.
VomenuPlot|Parameterschncchvvsauvraktqu
b.Vd2:Giiphngtrnhparabolic:
2
2 u(x,y,t) u(x,y,t)
4 u(x,y,t)
+
10
=
2
2
x
y
t
(vd2.1)
trongmin0x4,0y4v0t5000vicciukinuviu
bin:
u(x,y,0)=0
(vd2.2a)
y
x
(vd2.2b)
VomenuPlot|Parameterschncchvvsauvraktqu
c.Vd3:Giiphngtrnhhyperbolic:
1 2 u(x,y,t) 2 u(x,y,t) 2 u(x,y,t)
=
2
x 2
y 2
4
t
(vd3.1)
trongmin0x2,0y2v0t2vicciukinbinzeroviu
kinu:
u(0,y,t)=0
u(2,y,t)=0
u(x,0,t)=0
u(0,2,t)=0
(vd3.2)
u(x,y,0)=0.1sin(x)sin(y/2)
u/t(x,y,0)=0vit=0
(vd3.3)
giiphngtrnhtatheoccbcsau:
McngcPDETOOL.VomenuOption|AxesLimithiuchnh
li phm vi gi tr ca x v y l [0 2] ri chn Apply v Close. Chn
Option|AxesEqual
Bmvoiconvhnhvung.Khivxong,nuchangkch
thctabmpvoitngbygictnlR1hiuchnhli
thnhLeft:0,Bottom:0,Height:2,Width:2.
Bmvoiconthngbincaitngcmu.Trnmi
onbintachoiukinbintheo(vd3.2).ghiiukinbincho
onnotabmpchutlnon.iukinbincholiu
kinbinDirrichlet.Trnbintri,taghiiukinbin:
h=1,r=0
trnbinphi:
h=1,r=0
trnbindi:
h=1,r=0
vtrnbintrn:
h=1,r=0
BmpchutvoiconPDEvchnphngtrnhdngparabolic
vccthngstheo(vd2.1):c=1/4,a=0,f=0,d=1.TrongmenuSolve
|ParameterstaghiTime:0:0.1:2,u(t0)=0.1*sin(pi*x).*sin(pi*y/2).
Bmpchutvoicontolivsautinhchnhn.
Bmpchutvoicon=giiphngtrnh.
VomenuPlot|Parameterschncchvvsauvraktqu
437