关于#matlab#的问题:请问为什么我的代码明明和这个一样

请问为什么我的代码明明和这个一样,但结果就是运行不出来

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;

img


我的是这样的

img

怎么改

img


这多一个end 删除即可