logo资料库

用顺序消元法和列主消元法求线性方程组.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
实验报告 一、实验目的 用顺序消元法和列主消元法求线性方程组 二、实验方法(要求用自己的语言描述算法) 先建立二维数组,然后再进行消元, 首先的是顺序消元法即将二维数组化为具有相同解的三角形方程来 进行解题以第一个方程为基准来进行消元将下列几行的首元素化为 0,同上将方程化为三角形方程组然后就从最后一个方程组来进行求 解。 列主消元法即不是以顺序来进行消元而是选择比较大得消元行来进 行消元,选择出以后来进行消元的。 三、实验代码 顺序消元法: #include #include using namespace std; double a[4][5]={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,8.4231, 1.2371,4.9998,10.6721,0.0147,16.9237 }; double b[4]={0,0,0,0};
void import() { cout<<"首先进行消元\n"; cout<<"消元每一步得\n"; for(int i=0;i<3;i++)//控制行 { cout<<"第"<
void sum() { b[3]=a[3][4]/a[3][3]; for(int i=2;i>0||i==0;i--)//从倒数第二行开始求结果 { } int temp; double sum=0; for(int k=0;k<4;k++) { } if(b[k]==0&&b[k+1]!=0) { } temp=k;//找出要求 b 几 if(b[k]!=0) { } sum+=b[k]*a[i][k]; b[temp]=(a[i][4]-sum)/a[i][temp];
cout<<"最后求出的结果为\n"; for(int j=0;j<4;j++) cout<<"X"<
列主消元法结果为:
实验有较大误差,我也不清楚是什么状况,应该是算法有问题,该了 几次消元那个步骤都没有多大改善。。。 五、总结 列主元素消去法就是高斯消去法。在计算机执行消去法时,要将一行 是第一个元素化为 1,即该行各元素同除以第一个非零元素,如果这 个元素的绝对值非常小,就会导致该行其它元素变得绝对值非常大, 在与其它行对应元素执行加减运算时会把其它行的元素忽略不计,使 得误差增大,为了避免出现这种情况,编制程序的时候增加了选主元 的步骤。这主要是因为计算机进行的是近似计算,如果是用准确数运 算,选主元的步骤是不必要的。
分享到:
收藏