各位学长,以下是龙格库塔法求解微分方程的程序!请教各位学长的问题是:若现在我想把函数z=-0.08*u-sin(q)+2.2*sin(s);中加一个变量w,它的范围是[0,10],即函数变为z=-0.08*u-sin(q)+2.2*sin(w*s);要求函数每被调用10000次,w的值增加0.01,也就是说主程序中执行完10000次的for循环后w增加0.01,然后再执行for循环,这样运算直到w达到10为止,这个程序应该怎样改呢?请各位学长指点!谢谢! /*龙格库塔法求解微分方程*/ #include “stdio.h” #include “math.h” double f(double,double,double); main() { double t=0.0,y1,y2,h=0.02,w10=1.0,w20=1.0,k11,k12,k21,k22,k31,k32,k41,k42; int n; for (n=0;n<=10000;n=n+1) /*套用公式解微分方程*/ { t=t+h; k11=h*w20; k12=h*f(t,w10,w20); k21=h*(w20+0.5*k12); k22=h*f(t+0.5*h,w10+0.5*k11,w20+0.5*k12); k31=h*(w20+0.5*k22); k32=h*f(t+0.5*h,w10+0.5*k21,w20+0.5*k22); k41=h*(w20+k32); k42=h*f(t+h,w10+k31,w20+k32); w10=w10+1.0/6.0*(k11+2.0*k21+2.0*k31+k41); w20=w20+1.0/6.0*(k12+2.0*k22+2.0*k32+k42); if(n>5000) { printf(“%lf\t%lf\t%lf\t\n”,t,w10,w20); } } } double f(double s,double q,double u) /*函数的定义*/ { double z; z=-0.08*u-sin(q)+2.2*sin(s); return z; }
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能