home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / ssp / rootnleq / rtwi.for < prev   
Encoding:
Text File  |  1985-11-29  |  3.4 KB  |  105 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE RTWI
  5. C
  6. C        PURPOSE
  7. C           TO SOLVE GENERAL NONLINEAR EQUATIONS OF THE FORM X=FCT(X)
  8. C           BY MEANS OF WEGSTEIN-S ITERATION METHOD.
  9. C
  10. C        USAGE
  11. C           CALL RTWI (X,VAL,FCT,XST,EPS,IEND,IER)
  12. C           PARAMETER FCT REQUIRES AN EXTERNAL STATEMENT.
  13. C
  14. C        DESCRIPTION OF PARAMETERS
  15. C           X      - RESULTANT ROOT OF EQUATION X=FCT(X).
  16. C           VAL    - RESULTANT VALUE OF X-FCT(X) AT ROOT X.
  17. C           FCT    - NAME OF THE EXTERNAL FUNCTION SUBPROGRAM USED.
  18. C           XST    - INPUT VALUE WHICH SPECIFIES THE INITIAL GUESS OF
  19. C                    THE ROOT X.
  20. C           EPS    - INPUT VALUE WHICH SPECIFIES THE UPPER BOUND OF THE
  21. C                    ERROR OF RESULT X.
  22. C           IEND   - MAXIMUM NUMBER OF ITERATION STEPS SPECIFIED.
  23. C           IER    - RESULTANT ERROR PARAMETER CODED AS FOLLOWS
  24. C                     IER=0 - NO ERROR,
  25. C                     IER=1 - NO CONVERGENCE AFTER IEND ITERATION STEPS,
  26. C                     IER=2 - AT ANY ITERATION STEP THE DENOMINATOR OF
  27. C                             ITERATION FORMULA WAS EQUAL TO ZERO.
  28. C
  29. C        REMARKS
  30. C           THE PROCEDURE IS BYPASSED AND GIVES THE ERROR MESSAGE IER=2
  31. C           IF AT ANY ITERATION STEP THE DENOMINATOR OF ITERATION
  32. C           FORMULA WAS EQUAL TO ZERO. THAT MEANS THAT THERE IS AT
  33. C           LEAST ONE POINT IN THE RANGE IN WHICH ITERATION MOVES WITH
  34. C           DERIVATIVE OF FCT(X) EQUAL TO 1.
  35. C
  36. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  37. C           THE EXTERNAL FUNCTION SUBPROGRAM FCT(X) MUST BE FURNISHED
  38. C           BY THE USER.
  39. C
  40. C        METHOD
  41. C           SOLUTION OF EQUATION X=FCT(X) IS DONE BY MEANS OF
  42. C           WEGSTEIN-S ITERATION METHOD, WHICH STARTS AT THE INITIAL
  43. C           GUESS XST OF A ROOT X. ONE ITERATION STEP REQUIRES ONE
  44. C           EVALUATION OF FCT(X). FOR TEST ON SATISFACTORY ACCURACY SEE
  45. C           FORMULAE (2) OF MATHEMATICAL DESCRIPTION.
  46. C           FOR REFERENCE, SEE
  47. C           (1) G. N. LANCE, NUMERICAL METHODS FOR HIGH SPEED COMPUTERS,
  48. C               ILIFFE, LONDON, 1960, PP.134-138,
  49. C           (2) J. WEGSTEIN, ALGORITHM 2, CACM, VOL.3, ISS.2 (1960),
  50. C               PP.74,
  51. C           (3) H.C. THACHER, ALGORITHM 15, CACM, VOL.3, ISS.8 (1960),
  52. C               PP.475,
  53. C           (4) J.G. HERRIOT, ALGORITHM 26, CACM, VOL.3, ISS.11 (1960),
  54. C               PP.603.
  55. C
  56. C     ..................................................................
  57. C
  58.       SUBROUTINE RTWI(X,VAL,FCT,XST,EPS,IEND,IER)
  59. C
  60. C
  61. C     PREPARE ITERATION
  62.       IER=0
  63.       TOL=XST
  64.       X=FCT(TOL)
  65.       A=X-XST
  66.       B=-A
  67.       TOL=X
  68.       VAL=X-FCT(TOL)
  69. C
  70. C
  71. C     START ITERATION LOOP
  72.       DO 6 I=1,IEND
  73.       IF(VAL)1,7,1
  74. C
  75. C     EQUATION IS NOT SATISFIED BY X
  76.     1 B=B/VAL-1.
  77.       IF(B)2,8,2
  78. C
  79. C     ITERATION IS POSSIBLE
  80.     2 A=A/B
  81.       X=X+A
  82.       B=VAL
  83.       TOL=X
  84.       VAL=X-FCT(TOL)
  85. C
  86. C     TEST ON SATISFACTORY ACCURACY
  87.       TOL=EPS
  88.       D=ABS(X)
  89.       IF(D-1.)4,4,3
  90.     3 TOL=TOL*D
  91.     4 IF(ABS(A)-TOL)5,5,6
  92.     5 IF(ABS(VAL)-10.*TOL)7,7,6
  93.     6 CONTINUE
  94. C     END OF ITERATION LOOP
  95. C
  96. C
  97. C     NO CONVERGENCE AFTER IEND ITERATION STEPS. ERROR RETURN.
  98.       IER=1
  99.     7 RETURN
  100. C
  101. C     ERROR RETURN IN CASE OF ZERO DIVISOR
  102.     8 IER=2
  103.       RETURN
  104.       END
  105.