1山西大学计算机与信息技术学院实验报告姓名学号专业班级2011级计算机科学与技术课程名称计算方法实验日期2013-10-23成绩指导教师批改日期实验名称实验二解方程组的直接法一、实验目的:用高斯消去法解线性方程组Ax=b。式中,A为n阶非奇异方阵,x,b是n阶列向量,并分析选主元的重要性。二、实验方法:(1)顺序消去法:通过变换,将系数矩阵转换成等价的上三角矩阵,经过回代求出方程组的解。(2)列主元消去法:在第i步时,首先将ija(ji)化为0。在第i列余下的ija(j=i)中选择绝对值最大的元素作为主元,且把它所在的行和第i行交换,同时将列下标的交换记录下来。其次将kia(ki)化为0,然后利用回代公式)1,...1,(1)(,)(nnixabxnijjkjikii进行回代,求出方程组的解。三、实验内容:解下列方程组:9237.164231.183941.65342.90147.06721.109998.42371.13142.17643.89317.44129.35435.15330.27875.15301.04017.31651.18326.31348.14321xxxx四、实验程序:(1)顺序消去法:#includestdio.h#includestdlib.h#includemath.h//#includecoion.h#definen4intmain(){intk,i,j;doublec,a[n][n+1]={{1.1348,3.8326,1.1651,3.4017,9.5342},{0.5301,1.7875,2.5330,1.5435,6.3941},{3.4129,4.9317,8.7643,1.3142,18.4231},{1.2371,4.9998,10.6721,0.0147,16.9237}};for(k=0;kn-1;k++){for(i=k+1;in;i++){2a[i][k]=a[i][k]/a[k][k];for(j=k+1;jn+1;j++)a[i][j]=a[i][j]-a[i][k]*a[k][j];}}a[n-1][n]=a[n-1][n]/a[n-1][n-1];for(k=n-2;k=0;k--){c=0;for(j=k+1;jn+1;j++)c=c+a[k][j]*a[j][n];a[k][n]=(a[k][n]-c)/a[k][k];}printf(\列主元消去法所得结果为:\n);for(k=0;kn;k++)printf(\na[%d]=%12.8f\n,k,a[k][n]);return0;}(2)列主元消去法:#includestdio.h#includestdlib.h#includemath.h//#includecoion.h#definen4intmain(){intk,i,j,r;doublec,a[n][n+1]={{1.1348,3.8326,1.1651,3.4017,9.5342},{0.5301,1.7875,2.5330,1.5435,6.3941},{3.4129,4.9317,8.7643,1.3142,18.4231},{1.2371,4.9998,10.6721,0.0147,16.9237}};doubleeps=0.0005;for(k=0;kn-1;k++){r=k;for(i=k;in;i++)if(fabs(a[i][k])fabs(a[r][k]))r=i;if(fabs(a[r][k])eps){printf(\n消元失败!\n);exit(0);}if(rk){for(j=k;jn+1;j++){c=a[k][j];a[k][j]=a[r][j];a[r][j]=c;}}for(i=k+1;in;i++){a[i][k]=a[i][k]/a[k][k];3for(j=k+1;jn+1;j++)a[i][j]=a[i][j]-a[i][k]*a[k][j];}}a[n-1][n]=a[n-1][n]/a[n-1][n-1];for(k=n-2;k=0;k--){c=0;for(j=k+1;jn+1;j++)c=c+a[k][j]*a[j][n];a[k][n]=(a[k][n]-c)/a[k][k];}printf(列主元消去法所得结果为:\n);for(k=0;kn;k++)printf(\na[%d]=%12.8f\n,k,a[k][n]);return0;}五、实验结果:(1)顺序消去法:(2)列主元消去法:4六、结果分析:主元消去法是为了控制舍入误差的扩大和传播而提出的。在顺序高斯消去法的消元过程中,若出现)1(kkka=0,则消元无法进行,即使)1(kkka≠0,但是如果其绝对值很小的话,把它作为除数,就会导致其他元素量级的巨大增长和舍入误差的扩大,最后使计算结果失真。用交换方程或交换未知数次序的方法,选择绝对值尽可能大的系数作为第K步消元过程中的主元素)1(kkka,这就是主元素消去法的基本思想。