偏微分方程程序附件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序

一、 计算下面双曲方程的近似解

解法:

1、 一阶迎风格式

程序:

function upwind1(h,lamda) %迎风格式 一阶精度 显示格式 x=h:h:10-h;

tao=lamda*h;

t=tao:tao:5-tao;

[X,T]=meshgrid(x,t);

i=1:10/h;

j=1:5/tao;

u(i,j)=0;

for n=2:5/tao

for m=2:10/h

u(m,n)=u(m,n-1)-lamda*(u(m,n-1)-u(m-1,n-1))+2*tao*(n-1)*tao*sin(m*h)+(n-1)^2*tao^3*cos(m *h); %迎风格式

end

end

for n=1:5/tao-1

for m=1:10/h-1

U(m,n)=u(m+1,n+1);

end

end

U=U';

figure(1);

grid on;

mesh(X,T,U);

xlabel('x 轴');

ylabel('t 轴');

zlabel('u 轴');

title('迎风格式差分曲面图');

%计算误差

⎪⎪⎩

⎪⎪⎨⎧==<<<<+=∂∂+∂∂== 0| 0|105,00,cos sin 2 0

02x t u u x t x t x t x u t u

jj=1:5/tao-1;

uu(ii,jj)=0;

for nn=1:5/tao-1

for mm=1:10/h-1

uu(mm,nn)=(nn*tao)^2*sin(mm*h);

end

end

UU=uu';

error= U-UU;

figure(2);

mesh(X,T,error);

%mesh(X,T,UU);

xlabel('x轴');

ylabel('t轴');

zlabel('u轴');

title('迎风格式误差曲面图');

figure(3);

mesh(X,T,UU);

xlabel('x轴');

ylabel('t轴');

zlabel('u轴');

title('古典解');

2、Lax-Wendroff格式

function lax_w1(h,lamda) %Lax-Wendroff 二阶精度显示格式

x=h:h:10-h;

tao=lamda*h;

t=tao:tao:5-tao;

[X,T]=meshgrid(x,t);

i=1:10/h;

j=1:5/tao;

u(i,j)=0;

for n=2:5/tao

for m=2:10/h

if m==10/h

u(m,n)=u(m,n-1)-lamda*(u(m,n-1)-u(m-1,n-1))+2*tao*(n-1)*tao*sin(m*h)...

+(n-1)^2*tao^3*cos(m*h); %用迎风格式处理边界问题

else

u(m,n)=u(m,n-1)-0.5*lamda*(u(m+1,n-1)-u(m-1,n-1))+2*tao*(n-1)*tao*sin(m*h)...

+tao*((n-1)*tao)^2*cos(m*h)+0.5*lamda^2*(u(m+1,n-1)-2*u(m,n-1)+u(m-1,n-1))... +tao^2*(n-1)*tao*(sin(m*h)-cos(m*h))+0.5*tao^2*(n-1)^2*tao^2*(sin(m*h)+cos(m*h)); %Lax-Wendroff差分格式

end

end

for n=1:5/tao-1

for m=1:10/h-1

U(m,n)=u(m+1,n+1);

end

end

U=U';

figure(1);

grid on;

mesh(X,T,U);

xlabel('x轴');

ylabel('t轴');

zlabel('u轴');

title('Lax-Wendroff格式差分曲面图');

%计算误差

ii=1:10/h-1;

jj=1:5/tao-1;

uu(ii,jj)=0;

for nn=1:5/tao-1

for mm=1:10/h-1

uu(mm,nn)=(nn*tao)^2*sin(mm*h);

end

end

UU=uu';

error=U-UU;

figure(2);

mesh(X,T,error);

%mesh(X,T,UU);

xlabel('x轴');

ylabel('t轴');

zlabel('u轴');

title('Lax-Wendroff格式误差曲面图');

3、隐式中心格式

function implicit_1(h,lamda) %隐式格式,精度为:时间一阶,空间二阶;无条件稳定x=h:h:10-h;

tao=lamda*h;

t=tao:tao:5-tao;

[X,T]=meshgrid(x,t);

time1=5/tao; %时间为1时的时间层网格点

space1=10/h; %空间为1时的时间层网格点

相关文档
最新文档