当前位置:文档之家› MATLAB编辑一维热传导方程的模拟程序

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

求解下列热传导问题:
2T 1 T 门 c ,
2 0 0 z L
z t
T乙0 1 z2
T 0,t 1, T L,t 0
L 1, 1
程序:
fun ctio n heat_c on ductio n() % 一维齐次热传导方程
options={'空间杆长L','空间点数N','时间点数M','扩散系数alfa',' 件的值
稳定条lambda(取值必须小于0.5)',};
topic='set in g';
lin es=1;
def={'1','100','1000','1','0.5'};
h=in putdlg(opti on s,topic, lin es,def);
L=eval(h{1});
N=eval(h{2});
M=eval(h{3});
alfa=eval(h{4});
lambda=eval(h{5});%lambda 的值必须小于0.5
o%***************************************************
h=L/N;%空间步长
z=0:h:L;
z=z';
tao=lambda*h A2/alfa;% 时间步长
tm=M*tao;%热传导的总时间tm
t=0:tao:tm;
t=t';
%计算初值和边值
T=zeros(N+1,M+1);
Ti=i nit_fu n(z);
To=border_fu no (t);
Te=border_fu ne(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');
fun ctio n y=i nit_fun(z) % 初值条件
y=1-z.A2;
return
fun ctio n y=border_fu no(t)%z=0 的边界条件
y=1+t.*0;
return
fun cti on y=border_f un e(t)%z=L 的边界条件
y=t*.0;
return
运行情况:
按“run”运行时,弹出窗口
将图中相关数据更改为:
点击图框中的“ 0K”,在“ comma nd win dow”中输出结果为:。

相关主题