MATLAB编辑一维热传导方程的模拟程序

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

求解下列热传导问题:

()()()()⎪⎪⎪⎩⎪⎪⎪⎨⎧====-=≤≤=∂∂-∂∂1,

10,,1,010,001222ααL t L T t T z

z T L z t T z T

程序:

function heat_conduction() %一维齐次热传导方程

options={'空间杆长L','空间点数N' ,'时间点数M','扩散系数alfa','稳定条件的值lambda(取值必须小于0.5)',};

topic='seting';

lines=1;

def={'1','100','1000','1','0.5'};

h=inputdlg(options,topic,lines,def);

L=eval(h{1});

N=eval(h{2});

M=eval(h{3});

alfa=eval(h{4});

lambda=eval(h{5});%lambda 的值必须小于0.5

%***************************************************

h=L/N;%空间步长

z=0:h:L;

z=z';

tao=lambda*h^2/alfa;%时间步长

tm=M*tao;%热传导的总时间tm

t=0:tao:tm;

t=t';

%计算初值和边值

T=zeros(N+1,M+1);

Ti=init_fun(z);

To=border_funo(t);

Te=border_fune(t);

T(:,1)=Ti;

T(1,:)=To;

T(N+1,:)=Te;

%用差分法求出温度T 与杆长L 、时间t 的关系

for k=1:M

m=2;

while m<=N

T(m,k+1)=lambda*(T(m+1,k)+T(m-1,k))+(-2*lambda+1)*T(m,k); m=m+1;

end;

end;

%设置立体网格

for i=1:M+1

X(:,i)=z;

end;

for j=1:N+1

Y(j,:)=t;

end

mesh(X,Y,T);

view([1 -1 1]);

xlabel('Z');

ylabel('t');

zlabel('T');

function y=init_fun(z)%初值条件

y=1-z.^2;

return

function y=border_funo(t)%z=0的边界条件

y=1+t.*0;

return

function y=border_fune(t)%z=L的边界条件

y=t*.0;

return

运行情况:

按“run”运行时,弹出窗口

将图中相关数据更改为:

点击图框中的“OK”,在“command window”中输出结果为:

相关文档
最新文档