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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DRTNI
  5. C
  6. C        PURPOSE
  7. C           TO SOLVE GENERAL NONLINEAR EQUATIONS OF THE FORM F(X)=0
  8. C           BY MEANS OF NEWTON-S ITERATION METHOD.
  9. C
  10. C        USAGE
  11. C           CALL DRTNI (X,F,DERF,FCT,XST,EPS,IEND,IER)
  12. C           PARAMETER FCT REQUIRES AN EXTERNAL STATEMENT.
  13. C
  14. C        DESCRIPTION OF PARAMETERS
  15. C           X      - DOUBLE PRECISION RESULTANT ROOT OF EQUATION F(X)=0.
  16. C           F      - DOUBLE PRECISION RESULTANT FUNCTION VALUE AT
  17. C                    ROOT X.
  18. C           DERF   - DOUBLE PRECISION RESULTANT VALUE OF DERIVATIVE
  19. C                    AT ROOT X.
  20. C           FCT    - NAME OF THE EXTERNAL SUBROUTINE USED. IT COMPUTES
  21. C                    TO GIVEN ARGUMENT X FUNCTION VALUE F AND DERIVATIVE
  22. C                    DERF. ITS PARAMETER LIST MUST BE X,F,DERF, WHERE
  23. C                    ALL PARAMETERS ARE DOUBLE PRECISION.
  24. C           XST    - DOUBLE PRECISION INPUT VALUE WHICH SPECIFIES THE
  25. C                    INITIAL GUESS OF THE ROOT X.
  26. C           EPS    - SINGLE PRECISION INPUT VALUE WHICH SPECIFIES THE
  27. C                    UPPER BOUND OF THE ERROR OF RESULT X.
  28. C           IEND   - MAXIMUM NUMBER OF ITERATION STEPS SPECIFIED.
  29. C           IER    - RESULTANT ERROR PARAMETER CODED AS FOLLOWS
  30. C                     IER=0 - NO ERROR,
  31. C                     IER=1 - NO CONVERGENCE AFTER IEND ITERATION STEPS,
  32. C                     IER=2 - AT ANY ITERATION STEP DERIVATIVE DERF WAS
  33. C                             EQUAL TO ZERO.
  34. C
  35. C        REMARKS
  36. C           THE PROCEDURE IS BYPASSED AND GIVES THE ERROR MESSAGE IER=2
  37. C           IF AT ANY ITERATION STEP DERIVATIVE OF F(X) IS EQUAL TO 0.
  38. C           POSSIBLY THE PROCEDURE WOULD BE SUCCESSFUL IF IT IS STARTED
  39. C           ONCE MORE WITH ANOTHER INITIAL GUESS XST.
  40. C
  41. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  42. C           THE EXTERNAL SUBROUTINE FCT(X,F,DERF) MUST BE FURNISHED
  43. C           BY THE USER.
  44. C
  45. C        METHOD
  46. C           SOLUTION OF EQUATION F(X)=0 IS DONE BY MEANS OF NEWTON-S
  47. C           ITERATION METHOD, WHICH STARTS AT THE INITIAL GUESS XST OF
  48. C           A ROOT X. CONVERGENCE IS QUADRATIC IF THE DERIVATIVE OF
  49. C           F(X) AT ROOT X IS NOT EQUAL TO ZERO. ONE ITERATION STEP
  50. C           REQUIRES ONE EVALUATION OF F(X) AND ONE EVALUATION OF THE
  51. C           DERIVATIVE OF F(X). FOR TEST ON SATISFACTORY ACCURACY SEE
  52. C           FORMULAE (2) OF MATHEMATICAL DESCRIPTION.
  53. C           FOR REFERENCE, SEE R. ZURMUEHL, PRAKTISCHE MATHEMATIK FUER
  54. C           INGENIEURE UND PHYSIKER, SPRINGER, BERLIN/GOETTINGEN/
  55. C           HEIDELBERG, 1963, PP.12-17.
  56. C
  57. C     ..................................................................
  58. C
  59.       SUBROUTINE DRTNI(X,F,DERF,FCT,XST,EPS,IEND,IER)
  60. C
  61. C
  62.       DOUBLE PRECISION X,F,DERF,XST,TOL,TOLF,DX,A
  63. C
  64. C     PREPARE ITERATION
  65.       IER=0
  66.       X=XST
  67.       TOL=X
  68.       CALL FCT(TOL,F,DERF)
  69.       TOLF=100.*EPS
  70. C
  71. C
  72. C     START ITERATION LOOP
  73.       DO 6 I=1,IEND
  74.       IF(F)1,7,1
  75. C
  76. C     EQUATION IS NOT SATISFIED BY X
  77.     1 IF(DERF)2,8,2
  78. C
  79. C     ITERATION IS POSSIBLE
  80.     2 DX=F/DERF
  81.       X=X-DX
  82.       TOL=X
  83.       CALL FCT(TOL,F,DERF)
  84. C
  85. C     TEST ON SATISFACTORY ACCURACY
  86.       TOL=EPS
  87.       A=DABS(X)
  88.       IF(A-1.D0)4,4,3
  89.     3 TOL=TOL*A
  90.     4 IF(DABS(DX)-TOL)5,5,6
  91.     5 IF(DABS(F)-TOLF)7,7,6
  92.     6 CONTINUE
  93. C     END OF ITERATION LOOP
  94. C
  95. C
  96. C     NO CONVERGENCE AFTER IEND ITERATION STEPS. ERROR RETURN.
  97.       IER=1
  98.     7 RETURN
  99. C
  100. C     ERROR RETURN IN CASE OF ZERO DIVISOR
  101.     8 IER=2
  102.       RETURN
  103.       END
  104.