DECLARE FUNCTION FUNC! (X!) DECLARE SUB MNBRAK (AX!, BX!, CX!, FA!, FB!, FC!, DUM!) DECLARE FUNCTION BRENT! (AX!, BX!, CX!, DUM!, TOL!, XMIN!) DECLARE FUNCTION BESSJ0! (X!) DECLARE FUNCTION BESSJ1! (X!) DECLARE FUNCTION BRENT! (AX!, BX!, CX!, DUM!, TOL!, XMIN!) 'PROGRAM D10R3 'Driver for routine BRENT CLS TOL = .000001 EQL = .0001 DIM AMIN(20) NMIN = 0 PRINT "Minima of the function BESSJ0" PRINT PRINT " Min. # X BESSJ0(X) BESSJ1(X)" PRINT FOR I = 1 TO 100 AX = I BX = I + 1! CALL MNBRAK(AX, BX, CX, FA, FB, FC, DUM) B = BRENT(AX, BX, CX, DUM, TOL, XMIN) IF NMIN = 0 THEN AMIN(1) = XMIN NMIN = 1 PRINT USING "#######"; NMIN; PRINT " "; PRINT USING "#####.######"; XMIN; BESSJ0(XMIN); BESSJ1(XMIN) ELSE IFLAG = 0 FOR J = 1 TO NMIN IF ABS(XMIN - AMIN(J)) < EQL * XMIN THEN IFLAG = 1 NEXT J IF IFLAG = 0 THEN NMIN = NMIN + 1 AMIN(NMIN) = XMIN PRINT USING "#######"; NMIN; PRINT " "; PRINT USING "#####.######"; XMIN; BESSJ0(XMIN); BESSJ1(XMIN) END IF END IF NEXT I END FUNCTION FUNC (X) FUNC = BESSJ0(X) END FUNCTION