jacobi迭代法求解线性方程组.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
jacobi迭代法求解线性方程组

//======================================================== //此程序用gauss-seidel迭代法对方程组进行近似求解 //======================================================== #includestdio.h #includestdlib.h #includemath.h //======================================================================== //全局变量 #define N 20 double a[N][N]; //声明系数矩阵 double b[N]; //声明方程组右边的值(数组) double eps; //声明相对误差变量 double x[3]={0,0,0}; int iteration; //函数声明 void GetData(); //此函数用以进行对系数矩阵赋值 void jacobi(); /*声明jacobi()函数, 用以对方程的增广矩阵进行简单迭代*/ void show(); //显示最后的结果 //===================================================================== //以下是主函数 void main() { printf(============================================================\n\n); printf( 此程序运用Jacobi迭代法求解方程组的解 \n\n); printf(============================================================\n\n); GetData(); jacobi(); show(); printf(============================================================\n\n); } //====================================================================== //一下定义GetData()函数 void GetData() { FILE *filename;//定义文件的指针 int i,j; if((filename=fopen(D:\\gauss_seidel.dat,r+))==NULL) { printf(文件打开失败,退出程序!); exit(0); } for(i=0;i3;i++) fscanf(filename,%lf,%lf,%lf,%lf,a[i][0],a[i][1],a[i][2],b[i]); printf(请输入误差允许量:); scanf(%lf,eps); printf(\n\n); printf(对应的系数和方程右边的结果是:\n\n); for(i=0;i3;i++) { for(j=0;j3;j++) { printf(%10lf ,a[i][j]); } printf(%10lf\n\n,b[i]); } printf(求解方程的准许误差是:%8lf\n\n,eps); } //================================================================================== //以下是对gauss-seidel函数的定义 void jacobi() { int i,j,flag; double y[3],sum,temp[3],k; do { flag=1; iteration++; for(i=0;i3;i++) { sum=0.0; for(j=0;j3;j++) { if(j!=i) sum+=a[i][j]*x[j]; } y[i]=(b[i]-sum)/a[i][i]; } {//此段代码求y[i]-x[i]绝对值得最大值 for(i=0;i3;i++) temp[i]=fabs(y[i]-x[i]); for(i=0;i2;i++) for(j=1;j3;j++)

文档评论(0)

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

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

1亿VIP精品文档

相关文档