%采用顺序高斯消去法求n*n的线性方程组
%消元过程中出现A(k,k)=0将导致消元无法进行,计算报错
function x=Gauss(A,b)
tic;
n=max(size(A));
x=zeros(n,1);%初始化x
%消元过程
for k=1:n-1
if A(k,k)==0
error('MATLAB:Gauss:An Exception occured that algorithm failed.See Gauss.');
end
for i=k+1:n
m=A(i,k)/A(k,k);
for j=k:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i,1)=b(i,1)-m*b(k);
end
%A %这里可以显示每次消元之后的A
%b %这里可以显示每次消元之后的b
end
%回代过程
x(n,1)=b(n,1)/A(n,n);
k=n-1;
while k>0
temp=0;
for j=k+1:n
temp=temp+A(k,j)*x(j,1);
end
x(k,1)=(b(k,1)-temp)/A(k,k);
k=k-1;
end
toc;
%消元过程中出现A(k,k)=0将导致消元无法进行,计算报错
function x=Gauss(A,b)
tic;
n=max(size(A));
x=zeros(n,1);%初始化x
%消元过程
for k=1:n-1
if A(k,k)==0
error('MATLAB:Gauss:An Exception occured that algorithm failed.See Gauss.');
end
for i=k+1:n
m=A(i,k)/A(k,k);
for j=k:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i,1)=b(i,1)-m*b(k);
end
%A %这里可以显示每次消元之后的A
%b %这里可以显示每次消元之后的b
end
%回代过程
x(n,1)=b(n,1)/A(n,n);
k=n-1;
while k>0
temp=0;
for j=k+1:n
temp=temp+A(k,j)*x(j,1);
end
x(k,1)=(b(k,1)-temp)/A(k,k);
k=k-1;
end
toc;