椭圆型方程的有限差分方法II.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* #includemath.h #includestdlib.h #includestdio.h #define pi 3.14159265359 void main() { int i,j,k,m,n; double a,b,c,d, dx,dy, *x, *y, * *u, * *newu, alpha, beta, gamma,tol,maxerr; double f(double x, double y); double exact(double x, double y); a=0.0; // x方向的起点坐标 b=2.0; // y方向的起点坐标 c=0.0; // x方向的终点坐标 d=1.0; // y方向的终点坐标 m=16; // x方向的剖分数 n=8; // y方向的剖分数 dx=(b-a)/m; // x方向的步长 dy=(d-c)/n; // y方向的步长 printf(dx=%.4f, dy=%.4f\n,dx,dy); //打印步长 x=(double *)malloc(sizeof(double)*(m+1)); //动态分配内存 for(i=0;i=m;i++) x[i]=a+i*dx; //x方向的节点坐标 y=(double *)malloc(sizeof(double)*(n+1)); //动态分配内存 for(j=0;j=n;j++) y[j]=c+j*dy; //y方向的节点坐标 u=(double * *)malloc(sizeof(double *)*(m+1)); //动态分配内存,设置二维数组u[][] newu=(double * *)malloc(sizeof(double *)*(m+1)); //动态分配内存,放置新一层上的u for(i=0;i=m;i++) { u[i]=(double *)malloc(sizeof(double)*(n+1)); newu[i]=(double *)malloc(sizeof(double)*(n+1)); } for(j=0;j=n;j++) //左右边界条件 { u[0][j]=newu[0][j]=sin(pi*y[j]); u[m][j]=newu[m][j]=exp(2.0)*sin(pi*y[j]); } for(i=1;im;i++) //上下边界条件 { u[i][0]=newu[i][0]=0.0; u[i][n]=newu[i][n]=0.0; } for(i=1;im;i++) //设置迭代初值 { for(j=1;j=n;j++) { u[i][j] = 0.0; } } beta=1.0/(dx*dx); //参数 gamma=1.0/(dy*dy); alpha=2*(beta+gamma); tol=0.5*1e-5; //迭代误差限 maxerr=2.0; //最大误差 k=0; //迭代计数器 while(maxerrtol) // { k=k+1; for(i=1;im;i++) { for(j=1;jn;j++) { newu[i][j]=(f(x[i],y[j])+gamma*(newu[i][j-1]+u[i][j+1])+beta*(newu[i-1][j]+u[i+1][j]))/alpha; //Gauss-Seidel迭代算法 } } maxerr = fabs(newu[0][0]-u[0][0]); //考察最大误差 for(i=0;i=m;i++) { for(j=0;j=n;j++) { if(fabs(newu[i][j]-u[i][j])maxerr) maxerr=fabs(newu[i][j]-u[i][j]); } } // 如果最大误差超过误差限就进行迭代 for(i=1;im;i++) { for(j=1;jn;j++) { u[i][j]=newu[i][j]; } } } printf(迭代次数k=%d\n,k);

文档评论(0)

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

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

1亿VIP精品文档

相关文档