列主元消去法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
列主元消去法

实验二 列主元消去法 一.实验目的: 了解列主元消去法的算法 可以正确地从给出的矩阵中选取列主元 会使用列主元消去法求线性代数方程组 二.算法介绍: 列主元素消去法是为控制舍入误差而提出来的一种算法,在Gauss消去法的消元过程中,若出现=0,则消元无法进行,即使其不为0,但很小,把它作为除数,就会导致其他元素量级的巨大增长和舍入误差的扩散,最后使计算结果不可靠.使用列主元素消去法计算,基本上能控制舍入误差的影响,并且选主元素比较方便. 输入系数矩阵A,右端项b,阶n. 对k=1,2,…n-1,循环. a.按列选主元 a:=︳︴,保留主元所在行的指标。 b.若a=0,则系数矩阵奇异,计算停止;否则,顺序进行。 c.若=k,则转向(d),否则执行与互换,与互换。 d.计算算子=/ e.消元: i,j=k+1,……,n 3.回代:,i=n.n-1,……1 三.程序代码: #include iostream #include iomanip #includecmath using namespace std; double a[100][100];//存储矩阵的二维数组 int n; //阶数全局变量 double result[100]; //存放解的数组 double b[100]; //存放常数的数组 double sum; void tip() //选择操作函数 { cout1、输入矩阵endl; cout2、退出运行endl; } double input() //输入矩阵 { int i,k,j,x; cout请输入矩阵阶数:endl; cinn; cout请输入增广矩阵:endl; for(i=1;i=n;i++) { for(j=1;j=n+1;j++) { cina[i][j]; } } } double output(int k) { int i,j,r; int f; double max,t; double result[50]; max=a[n][k]; for(i=n;i=k;i--) { if(fabs(max)=fabs(a[i][k])) //选择列主元 { r=i; max=a[r][k]; } } cout主元为maxendl; cout所在坐标位置为(r,k)endl; if(fabs(max)0.01) { cout主元接近于零,方法失效!endl; return 0; } else { if(max!=a[k][k]) { for(j=k;j=n+1;j++) { t=a[k][j]; a[k][j]=a[r][j]; a[r][j]=t; } } } double m=0; for(i=k+1;i=n;i++) { m=a[i][k]/a[k][k]; //每一次两个方程间变量的值 for(j=k+1;j=n+1;j++) { a[i][j]=a[i][j]-m*a[k][j]; } } for(j=1;j=k;j++) { for(i=k+1;i=n;i++) { a[i][j]=0; } } for(i=1;i=n;i++) { for(j=1;j=n+1;j++) { coutsetw(12)a[i][j]; } coutendl; } coutresetiosflags(ios::left)endl; //输出格式为左对齐 } double huidai(int n) { int i,j; result[n]=a[n][n+1]/a[n][n]; for(i=n-1;i=1;i--) { sum=0; for(j=i+1;j=n;j++) { sum=a[i][

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档