[matlab]结合部分交换主元的高斯消去法


  在使用高斯消去法求解方程组时可能会遇到某一行主元为零的情况,人在碰到这类问题时会自动换行,确保主元不为零。但是编程时就需要提前考虑这种情况的发生。

  一种解决方案就是部分交换主元:将最大系数的行和原主元的行进行交换,成为新的主元行。

代码:

 

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

(0)
上一篇 2022年4月18日
下一篇 2022年4月18日

相关推荐

发表回复

登录后才能评论