DECLARE FUNCTION FUNC! (X!) DECLARE FUNCTION DF! (X!) DECLARE SUB MNBRAK (AX!, BX!, CX!, FA!, FB!, FC!, DUM!) DECLARE FUNCTION BESSJ0! (X!) DECLARE FUNCTION BESSJ1! (X!) DECLARE FUNCTION DBRENT! (AX!, BX!, CX!, DUM!, DUM!, TOL!, XIMIN!) 'PROGRAM D10R4 'Driver for routine DBRENT CLS TOL = .000001 EQL = .0001 DIM AMIN(20) NMIN = 0 PRINT "Minima of the function BESSJ0" PRINT PRINT " Min. # X BESSJ0(X) BESSJ1(X) DBRENT" PRINT FOR I = 1 TO 100 AX = I BX = I + 1! CALL MNBRAK(AX, BX, CX, FA, FB, FC, DUM) DBR = DBRENT(AX, BX, CX, DUM, DERIV, TOL, XMIN) IF NMIN = 0 THEN AMIN(1) = XMIN NMIN = 1 PRINT USING "#######"; NMIN; PRINT " "; PRINT USING "#####.######"; XMIN; BESSJ0(XMIN); DF(XMIN); DBR 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); DF(XMIN); DBR END IF END IF NEXT I END FUNCTION DF (X) DF = -BESSJ1(X) END FUNCTION FUNCTION FUNC (X) FUNC = BESSJ0(X) END FUNCTION