资源描述:
《数组分析实验——高斯消去法的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、南昌大学实验报告二学生代号:信念学号:5215201314专业班级:网络间谍088班实验类型:□验证□综合■设计□创新实验日期:2010-12-5实验成绩:一、实验目的用C语言或C++语言编程实现高斯消去法。二、实验基本原理和内容基本思想:用高斯消去法求解线性方程组的基本思想是设法消去方程组的系数矩阵A的主对角线下的元素,而将Ax=b化为等价的上三角形方程组,然后再通过回代过程便可以获得方程组的解。这种解线性方程组的方法,常称为高斯消去法。高斯消去法算法的构造:记方程组AX=b为A(1)X=b(1
2、),其中,A(1)和b(1)的元素分别记为Step1:第一次消元设,将增广矩阵的第i行减去倍,(i=2,…,n),目的是将增广矩阵的第一列内除每一个元素不变外,其余全部消为零,得到A(2)X=b(2),即-8-其中Step2:第k次消元()设第k-1次消元已完成,且,得到A(k)X=b(k),即计算因子,如此反复,经过n-1次消元之后得到一个与原方程组等价的上三角形方程组.-8-Step3:回代只要就可以回代求解高斯消去法的算法Step1消元:对k=1,2,…,n-1若则停止计算对i=k+1,k+
3、2,…,n计算因子;对j=k+1,k+2,…,n计算;Step2回代:对i=n,n-1,…,1-8-(高斯消去法的条件)若A的所有顺序主子式均不为0,则高斯消元无需换行即可进行到底,且得到唯一解.若消元过程中允许对增广矩阵进行行交换,则方程组Ax=b可用消去法求解的充要条件是A可逆.一、主要仪器设备及耗材PC机一台PC微机Windows操作系统MicrosoftVisualStudio6.0集成开发环境二、实验程序及运行结果高斯消元法实验程序代码如下:#include#inclu
4、de#defineN10//矩阵大小范围/**使用已经求出的x,向前计算x(供getx()调用)*floata[][]系数矩阵*floatx[]方程组解*inti解的序号*intn矩阵大小*return公式中需要的和*/floatgetm(floata[N][N],floatx[N],inti,intn){floatm=0;intr;for(r=i+1;r5、阵*floatb[]右端项*floatx[]方程组解*inti解的序号*intn矩阵大小*return方程组的第i个解*/floatgetx(floata[N][N],floatb[N],floatx[N],inti,intn){floatresult;if(i==n-1)//计算最后一个x的值result=float(b[n-1]/a[n-1][n-1]);else//计算其他x值(对于公式中的求和部分,需要调用getm()函数)result=float((b[i]-getm(a,x,i,n))
6、/a[i][i]);returnresult;}voidmain(){//floata[N][N]={{2,1,1},{1,3,2},{1,2,2}};//floatb[N]={4,6,5};floata[N][N];//系数矩阵floatb[N];//右端项floatx[N];//方程组解inti,j,k;intn=N;//矩阵大小/*用户手工输入矩阵*/printf("请输入系数矩阵的大小:");scanf("%d",&n);printf("请连续输入矩阵值:");for(i=0;i7、+){for(j=0;j8、t%f",b[i]);}printf("");/*进行高斯消去*/for(j=0;j9、for(i=j+1;i10、t%f",b[i]);}/*回代方式解方程组*/for(i=