bsstep.dem

来自「Delphi Pascal 数据挖掘领域算法包 数值算法大全」· DEM 代码 · 共 66 行

DEM
66
字号
PROGRAM d15r6(input,output);
(* driver for routine BSSTEP *)
CONST
   n=4;
   glimax=11;
   glnmax=10;
   glncol=7;
TYPE
   glyarray = ARRAY [1..n] OF real;
   glnarray = glyarray;
VAR
   glx : ARRAY [1..glimax] OF real;
   gld : ARRAY [1..glnmax,1..glncol] OF real;
   eps,hdid,hnext,htry,x : real;
   i : integer;
   y,dydx,yscal : glyarray;

PROCEDURE derivs(x: real; y: glyarray; VAR dydx: glyarray);
(* Programs using DERIVS must define the type
TYPE
   glyarray = ARRAY [1..4] OF real;
in the main routine. *)
BEGIN
   dydx[1] := -y[2];
   dydx[2] := y[1]-(1.0/x)*y[2];
   dydx[3] := y[2]-(2.0/x)*y[3];
   dydx[4] := y[3]-(3.0/x)*y[4]
END;

(*$I MODFILE.PAS *)
(*$I BESSJ0.PAS *)

(*$I BESSJ1.PAS *)

(*$I BESSJ.PAS *)

(*$I MMID.PAS *)

(*$I RZEXTR.PAS *)

(*$I BSSTEP.PAS *)

BEGIN
   x := 1.0;
   y[1] := bessj0(x);
   y[2] := bessj1(x);
   y[3] := bessj(2,x);
   y[4] := bessj(3,x);
   dydx[1] := -y[2];
   dydx[2] := y[1]-y[2];
   dydx[3] := y[2]-2.0*y[3];
   dydx[4] := y[3]-3.0*y[4];
   FOR i := 1 to n DO BEGIN
      yscal[i] := 1.0
   END;
   htry := 1.0;
   writeln;
   writeln('eps':10,'htry':12,'hdid':12,'hnext':12);
   FOR i := 1 to 15 DO BEGIN
      eps := exp(-i);
      bsstep(y,dydx,n,x,htry,eps,yscal,hdid,hnext);
      writeln('   ',eps:11,htry:8:2,hdid:14:6,hnext:12:6)
   END
END.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?