向前差分格式求解二维热传导方程

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

用向前差分格式求解二维热传导方程function varargout=liu(varargin)

T=1;a=1;h=1/30;dt=1/150;

[X,T,Z]=chfenmethed(h,dt,a,T);

mesh(X,T,Z(:,:,3));

shading flat;

% xlabel('X','FontSize',14);

% ylabel('t','FontSize',14);

% zlabel('error','FontSize',14);

% title('误差图');

function [X,Y,Z]=chfenmethed(h,dt,a,T);

%求解下问题

%u_t-a*(u_xx+u_yy)=f(x,y,t) 0

%u(x,y,0)=d

%h离散x y方向的步长

%dt离散t方向的步长

x=0:h:1;

y=x;

t=0:dt:T;

m=length(x);

n=length(t);

r=a*dt/h^2;

[X,Y]=meshgrid(x,y);

Z=zeros(m,m,n);

U=zeros(m,m,n);

for i=1:m

for j=1:m

U(i,j,1)=d(x(i),y(j));

end

end

for j=2:n

for k=1:m

U(1,k,j)=g0(y(k),t(j));

U(m,k,j)=g1(y(k),t(j));

U(k,1,j)=h0(x(k),t(j));

U(k,m,j)=h1(x(k),t(j));

end

end

for k=2:n

for i=2:m-1

for j=2:m-1

U(i,j,k)=U(i,j,k-1)+r*a*(U(i+1,j,k-1)+U(i-1,j,k-1)+U(i,j+1,k-1)...

+U(i,j-1,k-1)-4*U(i,j,k-1))+f(x(i),y(j),t(k-1));

Z(i,j,k)=abs(U(i,j,k)-Uu(x(i),y(j),t(k)));

end

end

end

function z=Uu(x,y,t)

%精确解函数

z=exp(-t)*sin((x+y)*pi) ;

function z=g0(y,t)

z=Uu(1,y,t);

function z=g1(y,t)

z=Uu(1,y,t);

function z=h0(x,t)

z=Uu(x,0,t);

function z=h1(x,t)

z=Uu(x,1,t);

function z=d(x,y)

z=Uu(x,y,0);

function z=f(x,y,t)

z=exp(-t)*sin((x+y)*pi)*(2*(pi)^2-1);

设计结果与分析:所得图形:

相关文档
最新文档