home *** CD-ROM | disk | FTP | other *** search
- PROGRAM d15r2(input,output);
- (* driver for routine RKDUMB *)
- CONST
- nvar=4;
- nstep=150;
- TYPE
- glnarray = ARRAY [1..nvar] OF real;
- VAR
- i,j : integer;
- x1,x2 : real;
- vstart : glnarray;
- xx : ARRAY [1..200] OF real;
- y : ARRAY [1..nvar,1..200] OF real;
-
- (*$I MODFILE.PAS *)
- (*$I BESSJ0.PAS *)
-
- (*$I BESSJ1.PAS *)
-
- (*$I BESSJ.PAS *)
-
- PROCEDURE derivs(x : real; y : glnarray;
- VAR dydx : glnarray);
- (* The arrays y and dydx must carry the dimension given to
- them in the calling 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 RK4.PAS *)
-
- (*$I RKDUMB.PAS *)
-
- BEGIN
- x1 := 1.0;
- vstart[1] := bessj0(x1);
- vstart[2] := bessj1(x1);
- vstart[3] := bessj(2,x1);
- vstart[4] := bessj(3,x1);
- x2 := 20.0;
- rkdumb(vstart,nvar,x1,x2,nstep);
- writeln('x':8,'integrated':17,'bessj3':10);
- FOR i := 1 to (nstep DIV 10) DO BEGIN
- j := 10*i;
- writeln(xx[j]:10:4,' ',y[4,j]:12:6,bessj(3,xx[j]):12:6)
- END
- END.
-