这是非稳态一维热传导的方法,也叫古典显格式。
如果是做数学建模,就别用了,这种方法计算量比较大,算的很慢,而且收敛不好。
但是如果实在没办法也能凑合用。
该改的地方我都用???代替了。
给个详细解释https://wenku.baidu.com/view/78a359d43b3567ec112d8a77.html?qq-pf-to=pcqq.group
function rechuandao() % Llist = ???
N = ; % 空间点数
M = ;
alfa = ??? % 导热 / (密度*比热)
lambda = 0.4; % 稳定条件
%************
zone=Llist()/N;%空间步长
z=:zone:Llist();%空间点坐标数组
z=z';%矩阵转置 n = lambda * (Llist()/N)^ / alfa(); TM = M * n; % 总时间 t=:n:TM; %时间点坐标数组
t=t'; %矩阵转置 %计算初值和边值
T=zeros(N+,M+); %赋温度矩阵初值
Ti=init_fun(z); %各空间点处的初始条件
To=border_funo(t); %内边界条件
Te=border_fune(t); %外边界条件
T(:,)=Ti; %(初始条件 温度都为37)
T(,:)=To; %(边界条件x=0处温度为)
T(N+,:)=Te; %(边界条件x=L 处温度为) %用差分法求出温度T与杆长L、时间t的关系
for k=:M %时间点数
n=;
while n<=N %空间点数
T(n,k+)=lambda*(T(n+,k)+T(n-,k))+(-*lambda+)*T(n,k);
n=n+;
end
end
%设置立体网格
for i=:M+
X(:,i)=z;
end
for j=:N+
Y(j,:)=t;
end
mesh(X,Y,T);
view([ - ]);
xlabel('长度');
ylabel('时间');
zlabel('温度');
csvwrite('csv.csv',T) function y=init_fun(z)%初值条件
y=???
return function y=border_funo(t)%z=0的边界条件
y=???
return function y=border_fune(t)%z=L的边界条件
y= ???
return
%