一维稳态导热matlab程序求解.docx
《一维稳态导热matlab程序求解.docx》由会员分享,可在线阅读,更多相关《一维稳态导热matlab程序求解.docx(9页珍藏版)》请在冰点文库上搜索。
设定N=100,a=3,b=40,T0=8,s=20x-4T
Matlab源程序代码:
length=2;
N=100;iterN=0;eps=1.0e-4;deltQ=2;
T2=(1:
N);
T2
(1)=8;T2(N)=1;
dx=length/(N-2);
while(deltQ>=eps&&iterN<50)
T=T2;
fori=1:
N
k(i)=3*T(i)^3;
sc(i)=20*(i-1)/N;
sp(i)=4;
end
k(N/2+1:
N)=40*T(N/2+1:
N).^3;
fori=2:
N-1
ifi==2
a(i-1)=-2*k(i)/dx;
c(i-1)=-2*k(i)*k(i+1)/dx/(k(i)+k(i+1));
b(i-1)=-a(i-1)-c(i-1)-sp(i)*dx;
d(i-1)=sc(i)*dx-a(i-1)*T(i-1);
else
ifi==N-1;
a(i-1)=-2*k(i)*k(i-1)/dx/(k(i)+k(i-1));
c(i-1)=-2*k(i+1)/dx;
b(i-1)=-a(i-1)-c(i-1)-sp(i)*dx;
d(i-1)=sc(i)*dx-c(i-1);
else
a(i-1)=-2*k(i)*k(i-1)/dx/(k(i)+k(i-1));
c(i-1)=-2*k(i)*k(i+1)/dx/(k(i)+k(i+1));
b(i-1)=-a(i-1)-c(i-1)-sp(i)*dx;
d(i-1)=sc(i-1)*dx;
end
end
end
ifabs(b
(1))<=abs(c
(1))||abs(b(N-2)<=abs(c(N-2)))
warndla('²»Âú×ã×·¸Ï·¨Ìõ¼þ','¾¯¸æ£¡');
end
fori=1:
N-2
ifabs(b(i))warndla('²»Âú×ã×·¸Ï·¨Ìõ¼þ','¾¯¸æ£¡');
end
end
fori=1:
N-2
ifi==1
u
(1)=b
(1);
else
l(i)=a(i)/u(i-1);
u(i)=b(i)-l(i)*c(i-1);
end
end
fori=1:
N-2
ifi==1
y
(1)=d
(1);
else
y(i)=d(i)-l(i)*y(i-1);
end
end
forj=N-2:
-1:
1
ifj==N-2
x(N-2)=y(N-2)/u(N-2);
else
x(j)=(y(j)-c(j)*x(j+1))/u(j);
end
end
iterN=iterN+1;
T2(2:
N-1)=x(1:
N-2);
deltQ=max(abs(T2-T));
end
fori=1:
10
Q(i,1:
10)=T2((1+(i-1)*10):
i*10);
end
disp(Q);
上面程序有乱码,附截图一份: