关于#matlab#实现高斯列主元法的问题

问题:
1.计算结果中“abs=4”如何删除;
2.计算结果不正确,代码中哪一处出了问题(A=[1,0,2,0;0,1,0,1;1,2,4,3;0,2,0,3];b=[5,3,17,7]';X=[1 1 2 2]).

function [RA,RB,N,X] =Gauss(A,b)
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
B=[A,b];
N=length(b);
RA=rank(A);
RB=rank(B);
Diff=RA-RB;
if Diff~=0;
    disp('无解.');
    return
else
    if RA==N
        X=zeros(N,1);
        C=zeros(1,N+1);
        for i=1:(N-1)
            [Y K]=max(abs(B(i:N,i)));
            C=B(i,:);
            B(i,:)=B(i+K-1,:);
            B(i+K-1,:)=C;
            for j=(i+1):N
                B(j,i:N+1)=B(j,i:N+1)-B(i,i:N+1)*B(j,i)/B(i,i);
            end
        end
        b=B(:,N+1);
        A=B(1:N,1:N);
        X(N)=b(N)/A(N,N);
        for i=(N-1):(-1):1
            X(i)=(b(i)-sum(A(i,i+1:N)*X(i+1:N)))/A(i,i);
        end
    else
        disp('无穷多解.')
    end
end
X=X';
RA
RB
N
X

程序运行结果:



RA =

     4


RB =

     4


N =

     4


X =

         0    2.0000    2.5000    1.0000

Matlab计算的标准结果为 X2 = A \ b:


X2 =

         0
    2.0000
    2.5000
    1.0000

结果相同,说明编写的算法没问题。