求解ODE常微分方程的C程序数值解法.doc

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

求解ODE(常微分方程)的C程序(数值解法) 将(Ieuler Rkutta gear IMRK63 Adambm Hamming VSRK4)放入TC2.0 的Include文件夹中后,执行TEXT程序即可 TEXT Ieuler Rkutta gear IMRK63 Adambm Hamming VSRK4 /*主程序TEXT*/ double Y_initial=3.0; /*初始条件y(0),作为外部变量*/ int N=11; /*节点数N,也作为外部变量*/ #include stdio.h #include math.h #include stdlib.h/*以上3个均为系统提供的库函数头文件*/ #include IEULER.C #include RKUTTA.C #include GEAR.C #include IMRK63.C #include ADAMBM.C #include HAMMING.C #include VSRK4.C/*以上7个均为程序开发人员(我)自定义的函数,即7种算法*/ double f( double x, double y ) /*Dy/Dx=f(x,y)中的f(x,y)*/ { double f; f=x; return(f); } void g( double x, double y, double ffd[2] ) { ffd[0]=y*y+x*x; /* Dy/Dx=f(x,y)中的f(x,y)*/ ffd[1]=2.0*y; /*对f(x,y)再关于y求导*/ } main() { int iter; double X_max=2.0,X_min=1.0,Y[81]; int method; void adam( double x_min,double x_max,double y[]); void gear( double x_min,double x_max,double y[]); void hamming( double x_min,double x_max,double y[]); void ieuler( double x_min,double x_max,double y[]); void imrk( int iter, double x_min,double x_max,double y[]); void rkutta(double x_min,double x_max,double y[]); void vsrk4(double x_min,double x_max,double y[]); double f( double x, double y); printf(Which method do you want,1.Euler,2.Runge-Kutta,3.gear,4.imrkutta,5.adams, 6.hamm-ing or 7.VSRK4?\n); scanf (%d,method); switch(method) { case 1: ieuler(X_min,X_max,Y); break; case 2: rkutta(X_min,X_max,Y); break; case 3: gear(X_min,X_max,Y); break; case 4: { printf(please input the step in Newton method, which is needed in implict RungeKutta:\n ); scanf(%d,iter) ; imrk(iter,X_min,X_max,Y);break; } case 5: adambm(X_min,X_max,Y); break; case 6: hamming(X_min,X_max,Y); break; case 7: vsrk4(X_min,X_max,Y); break; default:printf(error\n); } } /*IEULER算法*/ #include stdio.h #include stdlib.h #include math.h extern double f( double x, double y ); extern doub

文档评论(0)

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

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

1亿VIP精品文档

相关文档