您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Guass高斯列选主元消元法求解线性方程组的程序
Matlab计算程序function[x,det,flag]=Gauss(A,b)%求线性方程组的列主元Gauss消去法,其中,%A为方程组的系数矩阵;%b为方程组的右端项;%x为方程组的解;%det为系数矩阵A的行列式的值;%flag为指标向量,flag='failure'表示计算失败,flag='OK'表示计算成功。[n,m]=size(A);nb=length(b);%当方程组行与列的维数不相等时,停止计算,并输出出错信息。ifn~=merror('TherowsandcolumnsofmatrixAmustbeequal!');return;end%当方程组与右端项的维数不匹配时,停止计算,并输出出错信息ifm~=nberror('ThecolumnsofAmustbeequalthelengthofb!')return;end%开始计算,先赋初值flag='OK';det=1;x=zeros(n,1);fork=1:n-1%选主元max1=0;fori=k:nifabs(A(i,k))max1max1=abs(A(i,k));r=i;endendifmax11e-10flag='failure';return;end%交换两行ifrkforj=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;endz=b(k);b(k)=b(r);b(r)=z;det=-det;end%消元过程fori=k+1:nm=A(i,k)/A(k,k);forj=k+1:nA(i,j)=A(i,j)-m*A(k,j);endb(i)=b(i)-m*b(k);enddet=det*A(k,k);enddet=det*A(n,n);%回代过程。ifabs(A(n,n))1e-10flag='failure';return;endfork=n:-1:1forj=k+1:nb(k)=b(k)-A(k,j)*x(j);endx(k)=b(k)/A(k,k);endx(k)=b(k)/A(k,k);end
本文标题:Guass高斯列选主元消元法求解线性方程组的程序
链接地址:https://www.777doc.com/doc-6087126 .html