在使用高斯消去法求解方程组时可能会遇到某一行主元为零的情况,人在碰到这类问题时会自动换行,确保主元不为零。但是编程时就需要提前考虑这种情况的发生。
一种解决方案就是部分交换主元:将最大系数的行和原主元的行进行交换,成为新的主元行。
代码:
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/245182.html