Java教程

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

本文主要是介绍[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

 

  

 

这篇关于[matlab]结合部分交换主元的高斯消去法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!