[BACK]Return to taka_runge_kutta.rr CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / src

Diff for /OpenXM/src/asir-contrib/packages/src/taka_runge_kutta.rr between version 1.24 and 1.25

version 1.24, 2013/12/18 04:31:25 version 1.25, 2017/07/09 23:57:36
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/asir-contrib/packages/src/taka_runge_kutta.rr,v 1.23 2013/12/15 23:25:59 takayama Exp $ */  /* $OpenXM: OpenXM/src/asir-contrib/packages/src/taka_runge_kutta.rr,v 1.24 2013/12/18 04:31:25 takayama Exp $ */
 /* From misc/200205/runge-kutta.rr */  /* From misc/200205/runge-kutta.rr */
   
 /* They have not yet been registered in names.rr */  /* They have not yet been registered in names.rr */
Line 327  def taka_runge_kutta_4_linear(F,X,Y,X0,Y0,H,X1) {
Line 327  def taka_runge_kutta_4_linear(F,X,Y,X0,Y0,H,X1) {
 /* N : rank of the ODE. */  /* N : rank of the ODE. */
   extern Taka_Runge_kutta_adapted0, Taka_Runge_kutta_epsilon,    extern Taka_Runge_kutta_adapted0, Taka_Runge_kutta_epsilon,
          Taka_Runge_kutta_graphic0, Taka_Runge_kutta_yrange,           Taka_Runge_kutta_graphic0, Taka_Runge_kutta_yrange,
          Taka_Runge_kutta_save_data, Taka_Runge_kutta_debug;           Taka_Runge_kutta_save_data, Taka_Runge_kutta_debug,
            Tk_rk_deep_eval;
   
     if (type(getopt(number_eval))>0) {
       Neval=1;  Tk_rk_deep_eval=1;
     } else Neval=0;
     //printf("Neval=%a\n",Neval);
   OneStep = getopt(onestep);    OneStep = getopt(onestep);
   if (type(OneStep) <= 0) OneStep = 0; else OneStep = 1;    if (type(OneStep) <= 0) OneStep = 0; else OneStep = 1;
   if (OneStep) X1=X0+2*H;    if (OneStep) X1=X0+2*H;
Line 369  def taka_runge_kutta_4_linear(F,X,Y,X0,Y0,H,X1) {
Line 374  def taka_runge_kutta_4_linear(F,X,Y,X0,Y0,H,X1) {
     taka_runge_kutta_replace_linear(K3,F,Y,N,X,Xk+H*(1/2),Yk+K2*(1/2)*H,Inhom);      taka_runge_kutta_replace_linear(K3,F,Y,N,X,Xk+H*(1/2),Yk+K2*(1/2)*H,Inhom);
     taka_runge_kutta_replace_linear(K4,F,Y,N,X,Xk+H,Yk+K3*H,Inhom);      taka_runge_kutta_replace_linear(K4,F,Y,N,X,Xk+H,Yk+K3*H,Inhom);
     Yk1 = Yk+H*(K1/6+K2/3+K3/3+K4/6);      Yk1 = Yk+H*(K1/6+K2/3+K3/3+K4/6);
       if (Neval) {Yk=number_eval(Yk); Yk1 = number_eval(Yk1);}
     if (Taka_Runge_kutta_debug) print([Xk,Yk[0]]);      if (Taka_Runge_kutta_debug) print([Xk,Yk[0]]);
     if (Taka_Runge_kutta_save_data) {      if (Taka_Runge_kutta_save_data) {
       Ans = cons(cons(Xk,vtol(Yk)),Ans);        Ans = cons(cons(Xk,vtol(Yk)),Ans);
Line 483  def taka_runge_kutta_4a_linear(FF,X0,Y,S0,Ys,T0,H) {
Line 489  def taka_runge_kutta_4a_linear(FF,X0,Y,S0,Ys,T0,H) {
     /* opposite direction */      /* opposite direction */
     if (H<0) H=-H;      if (H<0) H=-H;
     Opt = [];      Opt = [];
       if (type(getopt(number_eval)) >= 0) Opt=[["number_eval",getopt(number_eval)]];
     if (type(getopt(onestep)) >= 0) Opt=[["onestep",getopt(onestep)]];      if (type(getopt(onestep)) >= 0) Opt=[["onestep",getopt(onestep)]];
     if (type(getopt(inhom)) >= 0) Inhom = getopt(inhom); else Inhom = 0;      if (type(getopt(inhom)) >= 0) Inhom = getopt(inhom); else Inhom = 0;
     if (Inhom != 0) {      if (Inhom != 0) {

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>