试验四 Gauuss列主元消去法解线性方程组实验报告.docx

试验四 Gauuss列主元消去法解线性方程组实验报告.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程实验报告课程名称班级实验日期姓名学号实验成绩实验名称试验四 Gauuss列主元消去法解线性方程组实验目的及要求熟悉Gauss列主元消去法,编出实用程序。认识选主元技术的重要性。明确对于哪些系数矩阵,在求解过程中不需使用选主元技术。编制程序,用Gauss列主元消去法求解线性方程组,并打印结果,其中 (1), (2),与不选主元的Gauss消去法结果比较并分析原因。实验环境Microsoft Visual C++ 6.0实验内容由解一般线性方程组在使用Gauss消去法求解时,从求解过程中可以清楚地看到,若,必须施以行交换的手续,才能使消去过程继续下去。有时既使,但其绝对值很小,由于舍入误差的影响,消去过程也会出现不稳定现象。因此,为使这种不稳定现象发生的可能性减至最小,在施行消去过程时每一步都要选主元素,即要寻找行,使并将第行与第行交换,以使的当前值(即的数值)远大于0。这种列主元消去法的主要步骤如下:1.消元过程 对,做 1o 选主元,记 若,说明方程组系数矩阵奇异,则停止计算,否则进行2o。 2o 交换(增广矩阵)的两行元素 3o 计算2.回代过程 对,计算算法描述及实验步骤程序设计2、计算实例 3、撰写实验报告调试过程及实验结果Gauuss列主元消去实验结果如图:,图一 第一题选主元消去法实验结果,图二 第二题选主元消去法实验结果2、不选主元消去法实验结果:,图三 第一题不选主元消去法实验结果,结果:图四 第二题不选主元消去法实验结果总结通过这次实验,我掌握了使用Gauuss列主元消去法解线性方程组的方法,加深了我对Gauuss元消去法的理解。当使用不选主元的Gauss消去法时,如果主元素绝对值很小时,用它做除数会导致结果错误,由于数值过大,位数过多,就会出现图三所是结果。附录程序清单:#include iostream#include iomanip#include math.husing namespace std;void Change(double ab[][40],int m,int j){int i,max,temp=0,t,h=j;max=fabs(ab[0][j]);for(i=1;im;i++){if(maxfabs(ab[i][j])){max=ab[i][j];temp=i;}}for(j=0;jm+1;j++){t=ab[h][j];ab[h][j]=ab[temp][j];ab[temp][j]=t;}}void main (){int i,j,m,k,t;double f=0,n=0,ab[40][40]={0},g,e,x=0;printf(请输入未知数的个数:\n m=);scanf(%d,m);printf(请输入系数增广矩阵:\n);for(i=0;im;i++)for(j=0;jm+1;j++)scanf(%lf,ab[i][j]);printf(您输入的系数增广矩阵为:\n);for(i=0;im;i++){for(j=0;j=m;j++)printf( %10.9f,ab[i][j]);printf(\n);} for(i=0;im-1;i++)//i是行{Change(ab,m,i);for(k=i+1;km;k++){f=ab[i][i];g=ab[k][i];e=-(g/f);for(t=0;tm+1;t++){ab[k][t]+=ab[i][t]*e;}}}printf(经行处理后原矩阵变为:\n);for(k=0;km;k++){for(t=0;t=m;t++)printf( %10.9f,ab[k][t]);printf(\n);}printf(方程组的解为:\n);ab[2][2]=ab[2][3]/ab[2][2];ab[1][1]=(ab[1][3]-ab[1][2]*ab[2][2])/ab[1][1];ab[0][0]=(ab[0][3]-ab[0][2]*ab[2][2]-ab[0][1]*ab[1][1])/ab[0][0];for(i=0;im;i++)printf(x%d=%10.9f\n,i+1,ab[i][i]);}

文档评论(0)

yanpan1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档