偏微分各差分格式MATLAB编程Word文件下载.doc
《偏微分各差分格式MATLAB编程Word文件下载.doc》由会员分享,可在线阅读,更多相关《偏微分各差分格式MATLAB编程Word文件下载.doc(5页珍藏版)》请在冰点文库上搜索。
end
else
u0(j)=IniU(minx+(j-1)*h);
end
u1=u0;
fork=1:
M
ifa>
0
fori=(k+1):
n+M
u1(i)=-(dt/h)*a*(u0(i)-u0(i-1))+u0(i);
end
else
fori=1:
n+M-k
u1(i)=-(dt/h)*a*(u0(i+1)-u0(i))+u0(i);
u0=u1;
end
x=0.01:
0.01:
n/100;
u=u1((M+1):
(M+n));
plot(x,u,'
r'
);
axis([01-0.51.5]);
holdon
y=1.*(x<
=0.5)+0.*(x>
0.5);
plot(x,y,'
g'
)
title('
Ó
·
ç
¸
ñ
Ê
½
'
formatshort;
运行结果
>
u=peHypbYF(1,0.005,101,0,1,100)
(2)Lax-Fridrichs格式
functionu=LaxFridrichs(a,dt,n,minx,maxx,M)
forj=1:
(n+2*M)
end
fori=k+1:
n+2*M-k
u1(i)=-(dt/h)*a*(u0(i+1)-u0(i-1))/2+(u0(i+1)+u0(i-1))/2;
axis([01-0.51.5]);
Lax-Fridrichs¸
u=LaxFridrichs(1,0.005,101,0,1,100)
(3)Lax-Wendroff格式
functionu=LaxWendroff(a,dt,n,minx,maxx,M)
u1(i)=(dt/h)^2*a*a*(u0(i+1)-2*u0(i)+u0(i-1))/2-...
(dt/h)*a*(u0(i+1)-u0(i-1))/2+u0(i);
Lax-Wendroff¸
formatshort
u=LaxWendroff(1,0.005,101,0,1,100)
(4)Beam-Warming格式
functionu=BeamWarming(a,dt,n,minx,maxx,M)
fori=k+2:
u1(i)=-a*(dt/h)*(u0(i)-u0(i-1))-a*(dt/h)*(1-a*(dt/h))*(u0(i)-2*u0(i-1)+u0(i-2))/2+u0(i);
Beam-Warming¸
u=BeamWarming(1,0.005,101,0,1,100)