home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / PCSSP1.ZIP / ITRPAPSM.ZIP / ALI.FOR < prev    next >
Text File  |  1985-11-29  |  4KB  |  109 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE ALI
  5. C
  6. C        PURPOSE
  7. C           TO INTERPOLATE FUNCTION VALUE Y FOR A GIVEN ARGUMENT VALUE
  8. C           X USING A GIVEN TABLE (ARG,VAL) OF ARGUMENT AND FUNCTION
  9. C           VALUES.
  10. C
  11. C        USAGE
  12. C           CALL ALI (X,ARG,VAL,Y,NDIM,EPS,IER)
  13. C
  14. C        DESCRIPTION OF PARAMETERS
  15. C           X      - THE ARGUMENT VALUE SPECIFIED BY INPUT.
  16. C           ARG    - THE INPUT VECTOR (DIMENSION NDIM) OF ARGUMENT
  17. C                    VALUES OF THE TABLE (NOT DESTROYED).
  18. C           VAL    - THE INPUT VECTOR (DIMENSION NDIM) OF FUNCTION
  19. C                    VALUES OF THE TABLE (DESTROYED).
  20. C           Y      - THE RESULTING INTERPOLATED FUNCTION VALUE.
  21. C           NDIM   - AN INPUT VALUE WHICH SPECIFIES THE NUMBER OF
  22. C                    POINTS IN TABLE (ARG,VAL).
  23. C           EPS    - AN INPUT CONSTANT WHICH IS USED AS UPPER BOUND
  24. C                    FOR THE ABSOLUTE ERROR.
  25. C           IER    - A RESULTING ERROR PARAMETER.
  26. C
  27. C        REMARKS
  28. C           (1) TABLE (ARG,VAL) SHOULD REPRESENT A SINGLE-VALUED
  29. C               FUNCTION AND SHOULD BE STORED IN SUCH A WAY, THAT THE
  30. C               DISTANCES ABS(ARG(I)-X) INCREASE WITH INCREASING
  31. C               SUBSCRIPT I. TO GENERATE THIS ORDER IN TABLE (ARG,VAL),
  32. C               SUBROUTINES ATSG, ATSM OR ATSE COULD BE USED IN A
  33. C               PREVIOUS STAGE.
  34. C           (2) NO ACTION BESIDES ERROR MESSAGE IN CASE NDIM LESS
  35. C               THAN 1.
  36. C           (3) INTERPOLATION IS TERMINATED EITHER IF THE DIFFERENCE
  37. C               BETWEEN TWO SUCCESSIVE INTERPOLATED VALUES IS
  38. C               ABSOLUTELY LESS THAN TOLERANCE EPS, OR IF THE ABSOLUTE
  39. C               VALUE OF THIS DIFFERENCE STOPS DIMINISHING, OR AFTER
  40. C               (NDIM-1) STEPS. FURTHER IT IS TERMINATED IF THE
  41. C               PROCEDURE DISCOVERS TWO ARGUMENT VALUES IN VECTOR ARG
  42. C               WHICH ARE IDENTICAL. DEPENDENT ON THESE FOUR CASES,
  43. C               ERROR PARAMETER IER IS CODED IN THE FOLLOWING FORM
  44. C                IER=0 - IT WAS POSSIBLE TO REACH THE REQUIRED
  45. C                        ACCURACY (NO ERROR).
  46. C                IER=1 - IT WAS IMPOSSIBLE TO REACH THE REQUIRED
  47. C                        ACCURACY BECAUSE OF ROUNDING ERRORS.
  48. C                IER=2 - IT WAS IMPOSSIBLE TO CHECK ACCURACY BECAUSE
  49. C                        NDIM IS LESS THAN 3, OR THE REQUIRED ACCURACY
  50. C                        COULD NOT BE REACHED BY MEANS OF THE GIVEN
  51. C                        TABLE. NDIM SHOULD BE INCREASED.
  52. C                IER=3 - THE PROCEDURE DISCOVERED TWO ARGUMENT VALUES
  53. C                        IN VECTOR ARG WHICH ARE IDENTICAL.
  54. C
  55. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  56. C           NONE
  57. C
  58. C        METHOD
  59. C           INTERPOLATION IS DONE BY MEANS OF AITKENS SCHEME OF
  60. C           LAGRANGE INTERPOLATION. ON RETURN Y CONTAINS AN INTERPOLATED
  61. C           FUNCTION VALUE AT POINT X, WHICH IS IN THE SENSE OF REMARK
  62. C           (3) OPTIMAL WITH RESPECT TO GIVEN TABLE. FOR REFERENCE, SEE
  63. C           F.B.HILDEBRAND, INTRODUCTION TO NUMERICAL ANALYSIS,
  64. C           MCGRAW-HILL, NEW YORK/TORONTO/LONDON, 1956, PP.49-50.
  65. C
  66. C     ..................................................................
  67. C
  68.       SUBROUTINE ALI(X,ARG,VAL,Y,NDIM,EPS,IER)
  69. C
  70. C
  71.       DIMENSION ARG(1),VAL(1)
  72.       IER=2
  73.       DELT2=0.
  74.       IF(NDIM-1)9,7,1
  75. C
  76. C     START OF AITKEN-LOOP
  77.     1 DO 6 J=2,NDIM
  78.       DELT1=DELT2
  79.       IEND=J-1
  80.       DO 2 I=1,IEND
  81.       H=ARG(I)-ARG(J)
  82.       IF(H)2,13,2
  83.     2 VAL(J)=(VAL(I)*(X-ARG(J))-VAL(J)*(X-ARG(I)))/H
  84.       DELT2=ABS(VAL(J)-VAL(IEND))
  85.       IF(J-2)6,6,3
  86.     3 IF(DELT2-EPS)10,10,4
  87.     4 IF(J-5)6,5,5
  88.     5 IF(DELT2-DELT1)6,11,11
  89.     6 CONTINUE
  90. C     END OF AITKEN-LOOP
  91. C
  92.     7 J=NDIM
  93.     8 Y=VAL(J)
  94.     9 RETURN
  95. C
  96. C     THERE IS SUFFICIENT ACCURACY WITHIN NDIM-1 ITERATION STEPS
  97.    10 IER=0
  98.       GOTO 8
  99. C
  100. C     TEST VALUE DELT2 STARTS OSCILLATING
  101.    11 IER=1
  102.    12 J=IEND
  103.       GOTO 8
  104. C
  105. C     THERE ARE TWO IDENTICAL ARGUMENT VALUES IN VECTOR ARG
  106.    13 IER=3
  107.       GOTO 12
  108.       END
  109.