home *** CD-ROM | disk | FTP | other *** search
- C
- C ..................................................................
- C
- C SUBROUTINE DRTWI
- C
- C PURPOSE
- C TO SOLVE GENERAL NONLINEAR EQUATIONS OF THE FORM X=FCT(X)
- C BY MEANS OF WEGSTEIN-S ITERATION METHOD.
- C
- C USAGE
- C CALL DRTWI (X,VAL,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
- C X=FCT(X).
- C VAL - DOUBLE PRECISION RESULTANT VALUE OF X-FCT(X)
- C AT ROOT X.
- C FCT - NAME OF THE EXTERNAL DOUBLE PRECISION FUNCTION
- C SUBPROGRAM USED.
- 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 THE DENOMINATOR OF
- C ITERATION FORMULA WAS EQUAL TO ZERO.
- C
- C REMARKS
- C THE PROCEDURE IS BYPASSED AND GIVES THE ERROR MESSAGE IER=2
- C IF AT ANY ITERATION STEP THE DENOMINATOR OF ITERATION
- C FORMULA WAS EQUAL TO ZERO. THAT MEANS THAT THERE IS AT
- C LEAST ONE POINT IN THE RANGE IN WHICH ITERATION MOVES WITH
- C DERIVATIVE OF FCT(X) EQUAL TO 1.
- C
- C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
- C THE EXTERNAL DOUBLE PRECISION FUNCTION SUBPROGRAM FCT(X)
- C MUST BE FURNISHED BY THE USER.
- C
- C METHOD
- C SOLUTION OF EQUATION X=FCT(X) IS DONE BY MEANS OF
- C WEGSTEIN-S ITERATION METHOD, WHICH STARTS AT THE INITIAL
- C GUESS XST OF A ROOT X. ONE ITERATION STEP REQUIRES ONE
- C EVALUATION OF FCT(X). FOR TEST ON SATISFACTORY ACCURACY SEE
- C FORMULAE (2) OF MATHEMATICAL DESCRIPTION.
- C FOR REFERENCE, SEE
- C (1) G. N. LANCE, NUMERICAL METHODS FOR HIGH SPEED COMPUTERS,
- C ILIFFE, LONDON, 1960, PP.134-138,
- C (2) J. WEGSTEIN, ALGORITHM 2, CACM, VOL.3, ISS.2 (1960),
- C PP.74,
- C (3) H.C. THACHER, ALGORITHM 15, CACM, VOL.3, ISS.8 (1960),
- C PP.475,
- C (4) J.G. HERRIOT, ALGORITHM 26, CACM, VOL.3, ISS.11 (1960),
- C PP.603.
- C
- C ..................................................................
- C
- SUBROUTINE DRTWI(X,VAL,FCT,XST,EPS,IEND,IER)
- C
- C
- DOUBLE PRECISION X,VAL,FCT,XST,A,B,D,TOL
- C
- C PREPARE ITERATION
- IER=0
- TOL=XST
- X=FCT(TOL)
- A=X-XST
- B=-A
- TOL=X
- VAL=X-FCT(TOL)
- C
- C
- C START ITERATION LOOP
- DO 6 I=1,IEND
- IF(VAL)1,7,1
- C
- C EQUATION IS NOT SATISFIED BY X
- 1 B=B/VAL-1.D0
- IF(B)2,8,2
- C
- C ITERATION IS POSSIBLE
- 2 A=A/B
- X=X+A
- B=VAL
- TOL=X
- VAL=X-FCT(TOL)
- C
- C TEST ON SATISFACTORY ACCURACY
- TOL=EPS
- D=DABS(X)
- IF(D-1.D0)4,4,3
- 3 TOL=TOL*D
- 4 IF(DABS(A)-TOL)5,5,6
- 5 IF(DABS(VAL)-1.D1*TOL)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