t**********m 发帖数: 205 | 1 同学们:
有一个数学问题请教:“Runge–Kutta methods”
可以参考wikipedia:
http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods
其中有一句话“Now pick a step-size h>0 and define”
事实上,星系的曲线是可以绕圈的,所以上面的h>0 有时必须h小于0.
我的程序是这样处理有时大于零,有时小于零(下面是程序)。我的处理正确吗?
k1=tan(alp); dec=sin(alp);
if( cos(alp)>=0 ){goe1=fabs(goe1);}else{goe1=-fabs(goe1);}
xh=X+0.5*goe1; yh=Y+0.5*goe1*k1;
sl2=x1v(xh,yh,dec);
k2=tan(sl2); dec=sin(sl2);
if( cos(sl2)>=0 ){goe2=fabs(goe2);}else{goe2=-fabs(goe2);}
xh=X+0.5*goe2; yh=Y+0.5*goe2*k2;
sl2=x1v(xh,yh,dec);
k3=tan(sl2); dec=sin(sl2);
if( cos(sl2)>=0 ){goe3=fabs(goe3);}else{goe3=-fabs(goe3);}
xh=X+goe3; yh=Y+goe3*k3;
sl2=x1v(xh,yh,dec);
k4=tan(sl2); dec=sin(sl2);
if( cos(sl2)>=0 ){goe4=fabs(goe4);}else{goe4=-fabs(goe4);}
Xp=X+(1./6.)*(goe1+2*goe2+2*goe3+goe4);
Yp=Y+(1./6.)*(goe1*k1+2*goe2*k2+2*goe3*k3+goe4*k4);
alp=x1v(Xp,Yp,dec);
其中的goe1等等就是上述的h
请帮忙证明是否正确。谢谢!! |
|