C
C PAGE 77-78: NUMERICAL MATHEMATICS AND COMPUTING, CHENEY/KINCAID, 1985
C
C FILE: BISECT2.FOR
C
C SECOND VERSION OF BISECTION METHOD (BISECT,F,G)
C
EXTERNAL F,G
DATA AF/0.0/, BF/1.0/, N/50/
DATA AG/0.5/, BG/2.0/
CALL BISECT(F,AF,BF,N)
CALL BISECT(G,AG,BG,N)
STOP
END
FUNCTION F(X)
F = EXP(X) - 3.0*X
RETURN
END
FUNCTION G(T)
G = T**3 - 2.0*SIN(T)
RETURN
END
SUBROUTINE BISECT(F,A,B,N)
FA = F(A)
FB = F(B)
IF( SIGN(1.0,FA) .EQ. SIGN(1.0,FB) ) THEN
PRINT 5,A,B
RETURN
ELSE
PRINT 3
WIDTH = B - A
DO 2 I = 1,N
C = A + (B - A)*0.5
FC = F(C)
WIDTH = WIDTH/2.0
IF( SIGN(1.0,FA) .EQ. SIGN(1.0,FC) ) THEN
A = C
FA = FC
ELSE
B = C
FB = FC
ENDIF
PRINT 4,I,C,FC,WIDTH
2 CONTINUE
RETURN
ENDIF
3 FORMAT(//3X,'STEP',10X,'C',13X,'F(C)',5X,'ERROR',//)
4 FORMAT(2X,I5,E22.14,2E10.3)
5 FORMAT(2X,'FUNCTION HAS SAME SIGN AT',2E22.14)
END
.