高斯迭代法报告.docxVIP

  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文档。上传文档
查看更多
高斯迭代法报告

高斯迭代法实验报告专业班级学号姓名实验内容和要求用jacobi迭代法解线性方程组Ax=b,其中A是非奇异矩阵。用编织出来的程序,求解线性方程组Ax=b方程如下:=;算法说明Jacobi迭代格式的引出是依据迭代法的基本思想:构造一个向量系列,使其收敛至某个极限,则就是要求的方程组的准确解。迭代将方程组:在假设,改写成如果引用系数矩阵,及向量,,,方程组(1)和(2)分别可写为:及,这样就得到了迭代格式用迭代解方程组时,就可任意取初值带入迭代可知式,然后求。但是,比较大的时候,写方程组和是很麻烦的,如果直接由,能直接得到,就是矩阵与向量的运算了,那么如何得到,呢实际上,如果引进非奇异对角矩阵将分解成:要求的解,实质上就有而是非奇异的,所以存在,从而有我们在这里不妨令就得到迭代格式:现在考虑迭代法的计算程序分别代表的系数和等号右边的常数项即 。由Jacobi迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第个分量时,用最新分量,代替旧分量,,就得到所谓解方程组的Gauss-Seidel迭代法。其迭代格式为 (初始向量),或者写为源程序#includemalloc.h#includestdio.h#includeconio.h#includemath.h#define EPS 1e-6#define MAX 100float *Jacobi(float a[3][4],int n);float *Jacobi(float a[3][4],int n){ float *x,*y; float epsilon,s; int i,j,k=0; x=(float *)malloc(n*sizeof(float)); y=(float *)malloc(n*sizeof(float)); for(i=0;in;i++) x[i]=0; while(1) { epsilon=0; k++; for(i=0;in;i++) { s=0; for(j=0;jn;j++) { if(j==i) { continue; } s+=a[i][j]*x[j]; } y[i]=(a[i][n]-s)/a[i][i]; epsilon+=(float)fabs(y[i]-x[i]); } if(epsilonEPS) { printf(\n迭代次数为:%d\n,k); return x; } if(k=MAX) { printf(方程不收敛\n); return y; } for(i=0;in;i++) { x[i]=y[i]; } }}main(){ int i, k, l; float a[3][4]; float *x; printf (请输入增广矩阵:\n); for (k = 0; k 3; k++) for (l = 0; l 4; l++) scanf (%f, a[k][l]); x=(float *)malloc(3*sizeof(float)); x=Jacobi(a,3); for(i=0;i3;i++) { printf(x[%d]=%f\t,i,x[i]); } printf(\n); getch();}高斯迭代部分:float *Gauss-Seidel(float a[3][4],int n);float *Gauss-Seidel(float a[3][4],int n){ float *x,*y; float epsilon,s,t; int i,j,k=0; x=(float *)malloc(n*sizeof(float)); y=(float *)malloc(n*sizeof(float)); for(i=0;in;i++) { x[i]=0; y[i]=0; } while(1) { epsilon=0; k++; for(i=0;in;i++) { t=0; for(j=0;ji;j++) { t+=a[i][j]*y[j]; } s=0; for(j=i+1;jn;j++) { s+=a[i][j]*x[j]; } y[i]=(a[i][n]-s-t)/a[i][i];/*计算x^(k+1)*/ epsilon+=(float)fabs(y[i]-x[i]); } if(epsilonEPS) { printf(\n迭代次数为:%d\n,k); return x; } if(k=MAX) { printf(方程不收敛\n); return y;

文档评论(0)

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

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

1亿VIP精品文档

相关文档