C C .................................................................. C C SUBROUTINE DRTNI C C PURPOSE C TO SOLVE GENERAL NONLINEAR EQUATIONS OF THE FORM F(X)=0 C BY MEANS OF NEWTON-S ITERATION METHOD. C C USAGE C CALL DRTNI (X,F,DERF,FCT,XST,EPS,IEND,IER) C PARAMETER FCT REQUIRES AN EXTERNAL STATEMENT. C C DESCRIPTION OF PARAMETERS C X - DOUBLE PRECISION RESULTANT ROOT OF EQUATION F(X)=0. C F - DOUBLE PRECISION RESULTANT FUNCTION VALUE AT C ROOT X. C DERF - DOUBLE PRECISION RESULTANT VALUE OF DERIVATIVE C AT ROOT X. C FCT - NAME OF THE EXTERNAL SUBROUTINE USED. IT COMPUTES C TO GIVEN ARGUMENT X FUNCTION VALUE F AND DERIVATIVE C DERF. ITS PARAMETER LIST MUST BE X,F,DERF, WHERE C ALL PARAMETERS ARE DOUBLE PRECISION. C XST - DOUBLE PRECISION INPUT VALUE WHICH SPECIFIES THE C INITIAL GUESS OF THE ROOT X. C EPS - SINGLE PRECISION INPUT VALUE WHICH SPECIFIES THE C UPPER BOUND OF THE ERROR OF RESULT X. C IEND - MAXIMUM NUMBER OF ITERATION STEPS SPECIFIED. C IER - RESULTANT ERROR PARAMETER CODED AS FOLLOWS C IER=0 - NO ERROR, C IER=1 - NO CONVERGENCE AFTER IEND ITERATION STEPS, C IER=2 - AT ANY ITERATION STEP DERIVATIVE DERF WAS C EQUAL TO ZERO. C C REMARKS C THE PROCEDURE IS BYPASSED AND GIVES THE ERROR MESSAGE IER=2 C IF AT ANY ITERATION STEP DERIVATIVE OF F(X) IS EQUAL TO 0. C POSSIBLY THE PROCEDURE WOULD BE SUCCESSFUL IF IT IS STARTED C ONCE MORE WITH ANOTHER INITIAL GUESS XST. C C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED C THE EXTERNAL SUBROUTINE FCT(X,F,DERF) MUST BE FURNISHED C BY THE USER. C C METHOD C SOLUTION OF EQUATION F(X)=0 IS DONE BY MEANS OF NEWTON-S C ITERATION METHOD, WHICH STARTS AT THE INITIAL GUESS XST OF C A ROOT X. CONVERGENCE IS QUADRATIC IF THE DERIVATIVE OF C F(X) AT ROOT X IS NOT EQUAL TO ZERO. ONE ITERATION STEP C REQUIRES ONE EVALUATION OF F(X) AND ONE EVALUATION OF THE C DERIVATIVE OF F(X). FOR TEST ON SATISFACTORY ACCURACY SEE C FORMULAE (2) OF MATHEMATICAL DESCRIPTION. C FOR REFERENCE, SEE R. ZURMUEHL, PRAKTISCHE MATHEMATIK FUER C INGENIEURE UND PHYSIKER, SPRINGER, BERLIN/GOETTINGEN/ C HEIDELBERG, 1963, PP.12-17. C C .................................................................. C SUBROUTINE DRTNI(X,F,DERF,FCT,XST,EPS,IEND,IER) C C DOUBLE PRECISION X,F,DERF,XST,TOL,TOLF,DX,A C C PREPARE ITERATION IER=0 X=XST TOL=X CALL FCT(TOL,F,DERF) TOLF=100.*EPS C C C START ITERATION LOOP DO 6 I=1,IEND IF(F)1,7,1 C C EQUATION IS NOT SATISFIED BY X 1 IF(DERF)2,8,2 C C ITERATION IS POSSIBLE 2 DX=F/DERF X=X-DX TOL=X CALL FCT(TOL,F,DERF) C C TEST ON SATISFACTORY ACCURACY TOL=EPS A=DABS(X) IF(A-1.D0)4,4,3 3 TOL=TOL*A 4 IF(DABS(DX)-TOL)5,5,6 5 IF(DABS(F)-TOLF)7,7,6 6 CONTINUE C END OF ITERATION LOOP C C C NO CONVERGENCE AFTER IEND ITERATION STEPS. ERROR RETURN. IER=1 7 RETURN C C ERROR RETURN IN CASE OF ZERO DIVISOR 8 IER=2 RETURN END