高斯消元法的弊端就是针对系数矩阵A,当遇到A(n,n)=0的情况时边无法处理(出现除0错误),以及有效减少计算机在处理浮点运算时出现舍入误差。
列主消元法代码:
function [x]=ext_gauss(A,b)
n=size(A,1);
for k=1:n-1
[value,index]=min(abs(A(k:n,k)));
index+=k-1;
if value==0
break
endif
A([k,index],:)=A([index,k],:);
b([k,index])=b([index,k]);
%%gause
m=A(k+1:n,k)/A(k,k);
A(k+1:n,k+1:n)-=m*A(k,k+1:n);
A(k+1:n,k)=zeros(n-k,1);
b(k+1:n)-=m*b(k);
%%end gauss
endfor
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
endfor
endfunction
解决了高斯消元法中存在不能消元的现象。 本程序只能处理满秩系数矩阵。
来源:oschina
链接:https://my.oschina.net/u/870108/blog/501408