function x=ColPivot(a,b) %列主元消去法
t1=clock;
[n,m]=size(a);
bSize=length(b);
if n~=m || bSize~=n
return
end
det=1; %存储行列式的值
x=zeros(n,1); %创建全零数组a
for k=1:n-1 %消去计算
aMax=0;
for i=k:n
if aMax<abs(a(i,k))
aMax=abs(a(i,k));
rowKey=i;
end
end
if aMax==0 %列主元绝对值最大值为0
return;
end
if rowKey>k %行交换
for j=k:n
temp=a(k,j);
a(k,j)=a(rowKey,j);
a(rowKey,j)=temp;
end
temp=b(k);
b(k)=b(rowKey);
b(rowKey)=temp;
det=-det;
end
if a(n,n)==0
return;
end
for i=k+1:n
m=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-m*a(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*a(k,k);
end
det=det*a(n,n);
for k=n:-1:1 %回代计算
for j=k+1:n
b(k)=b(k)-a(k,j)*x(j);
end
x(k)=b(k)/a(k,k);
end
t2=clock;
time=etime(t2,t1)
end