求解ODE(常微分方程)的C程序(数值解法).docVIP

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

  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文档。上传文档
查看更多
求解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)

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

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

1亿VIP精品文档

相关文档