; t0=80; M=40; step1=x1/(M-1); x=1; min=30; while min>0 T=min*60/step2; Bi=h*step1/k; Fo=a*step2/step1^2; if Fo<=0.5 for m=1:M t(m)=t0; end for n=1:T for m=2:(M-1) t(m)=Fo*(t(m+1)+t(m-1))+(1-2*Fo)*t(m); end t(1)=2*Fo*t(2)+(1-2*Fo)*t(1); t(M)=t(M)*(1-2*Fo*Bi-2*Fo)+2*Fo*t(M-1)+2*Fo*Bi*tf; end for m=1:M G(x,m)=t(m); end 传热学:第四章导热问题的数值求解 10 x=x+1; min=min-3; else return end disp(G) z=1:M; plot(z,G(1,z),z,G(2,z),z,G(3,z),z,G(4,z),z,G(5,z),z,G(6,z),z,G(7,z), z,G(8,z),z,G(9,z),z,G(10,z)) end 这个程序编写相对第一个, 容易不少, 但是还是有些问题, 就是时间步长和空间步长的关系没有明确, 没有体会到以空间步长为 x轴, 以时间步长为 y 轴这一点, 但是结果还是正确的,但是在通过老师的讲解和自己看书后,觉得这个思想是比较重要的,需要好好理解。自己编的程序对于这个思想体现的不够明显, 有一定问题, 但是从生成的图像来看, 结果没有问题。总结:由于之前未接触过 MATLAB ,故程序做的比较粗糙,结果和书上的有一定距离, 但是经过这两道题的程序编写,让我了解了 MATLAB 的基本操作,之前还以为编程学习比较难, 但是从这次经验来看, 编程软件的学习还是从例子着手比较好, 这样效率比较高, 而且贴近实际。