-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbrent.dem
39 lines (38 loc) · 832 Bytes
/
brent.dem
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
PROGRAM D10R3
C Driver for routine BRENT
PARAMETER(TOL=1.0E-6,EQL=1.E-4)
DIMENSION AMIN(20)
EXTERNAL FUNC
NMIN=0
WRITE(*,'(/1X,A)') 'Minima of the function BESSJ0'
WRITE(*,'(/1X,T6,A,T19,A,T28,A,T40,A/)') 'Min. #','X',
* 'BESSJ0(X)','BESSJ1(X)'
DO 12 I=1,100
AX=I
BX=I+1.0
CALL MNBRAK(AX,BX,CX,FA,FB,FC,FUNC)
B=BRENT(AX,BX,CX,FUNC,TOL,XMIN)
IF (NMIN.EQ.0) THEN
AMIN(1)=XMIN
NMIN=1
WRITE(*,'(1X,5X,I2,3X,3F12.6)') NMIN,XMIN,
* BESSJ0(XMIN),BESSJ1(XMIN)
ELSE
IFLAG=0
DO 11 J=1,NMIN
IF (ABS(XMIN-AMIN(J)).LE.EQL*XMIN)
* IFLAG=1
11 CONTINUE
IF (IFLAG.EQ.0) THEN
NMIN=NMIN+1
AMIN(NMIN)=XMIN
WRITE(*,'(1X,5X,I2,3X,3F12.6)') NMIN,
* XMIN,BESSJ0(XMIN),BESSJ1(XMIN)
ENDIF
ENDIF
12 CONTINUE
END
FUNCTION FUNC(X)
FUNC=BESSJ0(X)
RETURN
END