在使用高斯消去法求解方程组时可能会遇到某一行主元为零的情况,人在碰到这类问题时会自动换行,确保主元不为零。但是编程时就需要提前考虑这种情况的发生。
一种解决方案就是部分交换主元:将最大系数的行和原主元的行进行交换,成为新的主元行。
代码:
function X=gaussplus(A,b)%%A为系数矩阵,b为常数列向量,X为解
n=length(b);
C=[A,b];%C为增广矩阵
for i=1:n-1
for j=i+1:n
if A(i,i)<A(j,i)
c=A(i,:);
A(i,:)=A(j,:);
A(j,:)=c;
end
end%确保主元为该列中在该行以下系数最大
C((i+1):n,1:(n+1))= C((i+1):n,1:(n+1))-C((i+1):n,i)/C(i,i)*C(i,1:(n+1));%将C变为上三角矩阵
end
X=zeros(n,1);
X(n)=C(n,n+1)/C(n,n);
for i=n-1:-1:1
X(i,:)=(C(i,n+1)-C(i,(i+1):n)*X((i+1):n))/C(i,i);
end
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/245182.html