home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / PASCAL / NRPAS13.ZIP / BRENT.DEM < prev    next >
Text File  |  1991-04-29  |  1KB  |  55 lines

  1. PROGRAM d10r3(input,output);
  2. (* driver for routine BRENT *)
  3. CONST
  4.    tol=1.0e-6;
  5.    eql=1.0e-4;
  6. VAR
  7.    ax,bx,cx,fa,fb,fc,xmin,bren : real;
  8.    i,iflag,j,nmin : integer;
  9.    amin : ARRAY [1..20] OF real;
  10.  
  11. (*$I MODFILE.PAS *)
  12. (*$I BESSJ0.PAS *)
  13.  
  14. (*$I BESSJ1.PAS *)
  15.  
  16. FUNCTION func(x: real): real;
  17. BEGIN
  18.    func := bessj0(x)
  19. END;
  20.  
  21. (*$I MNBRAK.PAS *)
  22.  
  23. (*$I BRENT.PAS *)
  24.  
  25. BEGIN
  26.    nmin := 0;
  27.    writeln;
  28.    writeln('minima of the function bessj0');
  29.    writeln('min. #':10,'x':8,'bessj0(x)':17,'bessj1(x)':12);
  30.    FOR i := 1 to 100 DO BEGIN
  31.       ax := i;
  32.       bx := i+1.0;
  33.       mnbrak(ax,bx,cx,fa,fb,fc);
  34.       bren := brent(ax,bx,cx,tol,xmin);
  35.       IF (nmin = 0) THEN BEGIN
  36.          amin[1] := xmin;
  37.          nmin := 1;
  38.          writeln(nmin:7,xmin:15:6,bessj0(xmin):12:6,
  39.             bessj1(xmin):12:6)
  40.       END ELSE BEGIN
  41.          iflag := 0;
  42.          FOR j := 1 to nmin DO BEGIN
  43.             IF  (abs(xmin-amin[j]) <= eql*xmin)
  44.                THEN iflag := 1
  45.          END;
  46.          IF  (iflag = 0)  THEN BEGIN
  47.             nmin := nmin+1;
  48.             amin[nmin] := xmin;
  49.             writeln(nmin:7,xmin:15:6,bessj0(xmin):12:6,
  50.                bessj1(xmin):12:6)
  51.          END
  52.       END
  53.    END
  54. END.
  55.