请问为什么我的代码明明和这个一样,但结果就是运行不出来
function [T_line]=TDMA(A,B,C,D,N)
B(1)=B(1)/A(1);
D(1)=D(1)/A(1);
for i=2:N
B(i)=B(i)/(A(i)-C(i)*B(i-1));
D(i)=(D(i)+C(i)*D(i-1))/(A(i)-C(i)*B(i-1));
end
T_line(N)=D(N);
for i=N-1:-1:1
T_line(i)=B(i)*T_line(i+1)+D(i);
end
end
%参数定义
M=60;%纵向的网格数目
N=120;%横向的网格数目
Q=20000;%内热源
LAMADA=0.8;%导热系数
q1=500;%下表面热流密度
q2=200;%上表面热流密度
h=6;%有表面对流换热系数
TL=70;%左表面温度
TR=25;%右表面温度
H=0.4/N;%采用正方形网格,△x=△y=H
R=1/h+H/(2*LAMADA);%右表面在第三类边界条件时的等效热阻
OMEGA=1.78;%松弛因子
K=0;
MAXERRO=1;
%温度初始化
for j=1:M
for i=1:N
T(j,i)=0;
end
end
while MAXERRO>0.00001%定义收敛残差
%FiRST LiNE
A(1)=4;
B(1)=1;
C(1)=0;
D(1)=Q*H^2/LAMADA+q1*H/LAMADA+T(2,1)+2*TL;
for i=2:(N-1)
A(i)=3;
B(i)=1;
C(i)=1;
D(i)=Q*H^2/LAMADA+q1*H/LAMADA+T(2,i) ;
end
A(N)=2+H/(LAMADA*R);
B(N)=0;
C(N)=1;
D(N)=Q*H^2/LAMADA+q1*H/LAMADA+T(2,N)+TR*H/(LAMADA*R);
[T_line]=TDMA(A,B,C,D,N);
for i=1:N
T_old(i)=T(1,i);
T(1,i)=OMEGA*T_line(i)+(1-OMEGA)*T(1,i);
NEWERRO(i)=abs((T(1,i)-T_old(i))/T(1,i));
end
ERRO(1)=max(NEWERRO);
%MiDDLE LiNE
for j=2:(M-1)
A(1)=5;
B(1)=1;
C(1)=0;
D(1)=Q*H^2/LAMADA+T(j-1,1)+T(j+1,1)+2*TL;
for i=2:(N-1)
A(i)=4;
B(i)=1;
C(i)=1;
D(i)=Q*H^2/LAMADA+T(j-1,i)+T(j+1,i);
end
A(N)=3+H/(LAMADA*R);
B(N)=0;
C(N)=1;
D(N)=Q*H^2/LAMADA+T(j-1,i)+T(j+1,i)+TR*H/(LAMADA*R);
[T_line]=TDMA(A,B,C,D,N);
for i=1:N
T_old(i)=T(j,i);
T(j,i)=OMEGA*T_line(i)+(1-OMEGA)*T(j,i);
NEWERRO(i)=abs((T(j,i)-T_old(i))/T(j,i));
end
ERRO(j)=max(NEWERRO);
end
%TOP LiNE
A(1)=4;
B(1)=1;
C(1)=0;
D(1)=Q*H^2/LAMADA+q2*H/LAMADA+2*TL+T(M-1,1);
for i=2:(N-1)
A(i)=3;
B(i)=1;
C(i)=1;
D(i)=Q*H^2/LAMADA+q2*H/LAMADA+T(M-1,i);
end
A(N)=2+H/(LAMADA*R);
B(N)=0;
C(N)=1;
D(N)=Q*H^2/LAMADA+q2*H/LAMADA+T(M-1,N)+TR*H/(LAMADA*R);
[T_line]=TDMA(A,B,C,D,N);
for i=1:N
T_old(i)=T(M,i);
T(M,i)=OMEGA*T_line(i)+(1-OMEGA)*T(M,i);
NEWERRO(i)=abs((T(M,i)-T_old(i))/T(M,i));
end
ERRO(M)=max(NEWERRO);
MAXERRO=max(ERRO)
K=K+1;
end
pcolor(T)
colorbar;
怎么改