有限差分法求出温度T 与杆长L 、时间t 的关系
求解下列热传导问题:
()()()()?????????====-=≤≤=??-??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;