PROGRAM FINDROT2 C======================================================================= C FIND ROOT OF THE FOLLOWING FUNCTIONS C TAN(LAMBDA)/TANH(LAMBDA)-1=0 FIXED ----- ROLLER C======================================================================= IMPLICIT REAL*8 ( A-H , O-Z ) PARAMETER ( MXN=1200, DX=0.001D0, DXNEWTON=DX/10.D0 ) DIMENSION ROOT(MXN) C---------- DX = INCREMENTAL VALUE C======================================================================= EPS = 1.D-13 C======================================================================= C------ INITIALIZATION NROOT = 100 PI = 4.D0*DATAN(1.D0) X = 0.D0 DO I = 1 , NROOT X = X + PI CALL NEWTON ( X, DXNEWTON, EPS ) ROOT(I) = X WRITE (*,*) I, X END DO C OPEN ( 1, FILE='ROOT2.DAT', STATUS='UNKNOWN' ) DO I = 1 , NROOT WRITE (1,*) I, ROOT (I) END DO CLOSE (1) C======================================================================= STOP 'NORMAL TERMINATION' END C C SUBROUTINE NEWTON (X, DX, EPS ) IMPLICIT REAL*8 ( A-H , O-Z ) DELTAX = X DO WHILE ( DABS(DELTAX) .GT. EPS ) DFDX = (FX(X+DX)-FX(X-DX))/(2.D0*DX) DELTAX = - FX(X)/DFDX X = X + DELTAX END DO RETURN END C C FUNCTION FX(FLAMBDA) IMPLICIT REAL*8 ( A-H , O-Z ) FX = DTAN(FLAMBDA)/DTANH(FLAMBDA)-1.D0 RETURN END