home *** CD-ROM | disk | FTP | other *** search
- PROGRAM d15r5(input,output);
- (* driver for routine MMID *)
- CONST
- nvar=4;
- x1=1.0;
- htot=0.5;
- TYPE
- glnarray = ARRAY [1..nvar] OF real;
- VAR
- b1,b2,b3,b4,xf : real;
- i,ii : integer;
- y,yout,dydx : glnarray;
-
- (*$I MODFILE.PAS *)
- (*$I BESSJ0.PAS *)
-
- (*$I BESSJ1.PAS *)
-
- (*$I BESSJ.PAS *)
-
- PROCEDURE derivs(x: real; y: glnarray; VAR dydx: glnarray);
- (* Programs using DERIVS must define the type
- TYPE
- glnarray = ARRAY [1..4] OF real;
- 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 MMID.PAS *)
-
- BEGIN
- y[1] := bessj0(x1);
- y[2] := bessj1(x1);
- y[3] := bessj(2,x1);
- y[4] := bessj(3,x1);
- 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];
- xf := x1+htot;
- b1 := bessj0(xf);
- b2 := bessj1(xf);
- b3 := bessj(2,xf);
- b4 := bessj(3,xf);
- writeln('First four Bessel functions:');
- FOR ii := 1 to 10 DO BEGIN
- i := 5*ii;
- mmid(y,dydx,nvar,x1,htot,i,yout);
- writeln;
- writeln('x := ',x1:5:2,
- ' to ',x1+htot:5:2,' in ',i:2,' steps');
- writeln('integration':14,'bessj':9);
- writeln(yout[1]:12:6,b1:12:6);
- writeln(yout[2]:12:6,b2:12:6);
- writeln(yout[3]:12:6,b3:12:6);
- writeln(yout[4]:12:6,b4:12:6);
- writeln('press return to continue...');
- readln
- END
- END.
-