啊啊
A=[2 0 1 0;0 1 3 2;0 4 2 0;0 1 4 0];
b=[0 2 4 0]';
a=[A b]%构成增广矩阵
n=size(a,1);%size()用来返回数据序列的行数和列数;size(A,1)返回的是矩阵A所对应的行数
%消元
for i=1:n-1
%列选主元
[q,nmax]=max(abs(a(i:n,i)));
p=a(i,:);
a(i,:)=a(nmax+i-1,:);
a(nmax+i-1,:)=p;
for k=i+1:n
mik=a(i,i:n+1)./a(i,i).*a(k,i);
a(k,i:n+1)=a(k,i:n+1)-mik;
clear mik;%mik的长度越来越短,所以在执行每次循环之后要将mik调零
end
a
end
%回代
x(n)=a(n,n+1)/a(n,n)
for i=n-1:-1:1
x(i)=(a(i,n+1)-sum(x(i+1:n).*a(i,i+1:n)))/a(i,i)
end