欢迎来到天天文库
浏览记录
ID:14764612
大小:46.00 KB
页数:2页
时间:2018-07-30
《一 编写 gauss 列主元消元法求解线性方程组的程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值计算报告书日期:2014年11月8日问题名称编写Gauss列主元消元法求解线性方程组的程序,要求附有算例。问题描述:编写一MATLAB程序,算法为列主元消元法,功能为求解线性方程组。MATLAB程序:function[x,flag]=Gauss(A,b)[n,m]=size(A);nb=length(b);ifn~=merror('TherowsandcolumnsofmatrixAmustbeequal!');%不是方阵,则显示错误。endifm~=nberror('ThecolumnsofAmustbeequal
2、thelengthofb!')%如果列数不等于b的个数,则显示错误。endflag='OK';x=zeros(n,1);fork=1:n-1max1=0;fori=k:nifabs(A(i,k))>max1max1=abs(A(i,k));r=i;endend%记max1为最大值,r为最大值所在的行数。ifmax1<1e-10flag='failure';return;end%最大值太小,近似为0,则返回。ifr>kforj=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;endz=b(k);b(k
3、)=b(r);b(r)=z;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);end%当前方程已下全部方程消元。endifabs(A(n,n))<1e-10flag='failure';return;endx(n)=b(n)/A(n,n);fork=n-1:-1:1forj=n:-1:k+1b(k)=b(k)-A(k,j)*x(j);endx(k)=b(k)/A(k,k);end%求出方程
4、组的解x(k)。算例:求解下列方程组:在MATLAB的CommandWindow中输入:>>A=[0.7290.810.9;111;1.3311.211.1];>>b=[0.6867;0.8338;1.000];>>Gauss(A,b)计算结果与分析:计算结果如下:ans=0.22450.28140.3279数据分析:将=0.2245,=0.2814,=0.3279代入,得结果为0.6867045;代入,得结果为0.8338;代入,得结果为0.9999935。可见,Gauss列主元消元法的求解精度较高。
此文档下载收益归作者所有