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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DET3
  5. C
  6. C        PURPOSE
  7. C           TO COMPUTE A VECTOR OF DERIVATIVE VALUES GIVEN A VECTOR OF
  8. C           FUNCTION VALUES WHOSE ENTRIES CORRESPOND TO EQUIDISTANTLY
  9. C           SPACED ARGUMENT VALUES.
  10. C
  11. C        USAGE
  12. C           CALL DET3(H,Y,Z,NDIM,IER)
  13. C
  14. C        DESCRIPTION OF PARAMETERS
  15. C           H     -  CONSTANT DIFFERENCE BETWEEN SUCCESSIVE ARGUMENT
  16. C                    VALUES (H IS POSITIVE IF THE ARGUMENT VALUES
  17. C                    INCREASE AND NEGATIVE OTHERWISE)
  18. C           Y     -  GIVEN VECTOR OF FUNCTION VALUES (DIMENSION NDIM)
  19. C           Z     -  RESULTING VECTOR OF DERIVATIVE VALUES (DIMENSION
  20. C                    NDIM)
  21. C           NDIM  -  DIMENSION OF VECTORS Y AND Z
  22. C           IER   -  RESULTING ERROR PARAMETER
  23. C                    IER = -1  - NDIM IS LESS THAN 3
  24. C                    IER =  0  - NO ERROR
  25. C                    IER =  1  - H = 0
  26. C
  27. C        REMARKS
  28. C           (1)   IF IER = -1,1, THEN THERE IS NO COMPUTATION.
  29. C           (2)   Z CAN HAVE THE SAME STORAGE ALLOCATION AS Y. IF Y IS
  30. C                 DISTINCT FROM Z, THEN IT IS NOT DESTROYED.
  31. C
  32. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  33. C           NONE
  34. C
  35. C        METHOD
  36. C           IF X IS THE (SUPPRESSED) VECTOR OF ARGUMENT VALUES, THEN
  37. C           EXCEPT AT THE ENDPOINTS X(1) AND X(NDIM), Z(I) IS THE
  38. C           DERIVATIVE AT X(I) OF THE LAGRANGIAN INTERPOLATION
  39. C           POLYNOMIAL OF DEGREE 2 RELEVANT TO THE 3 SUCCESSIVE POINTS
  40. C           (X(I+K),Y(I+K)) K = -1,0,1.  (SEE HILDEBRAND, F.B.,
  41. C           INTRODUCTION TO NUMERICAL ANALYSIS, MC-GRAW-HILL, NEW YORK/
  42. C           TORONTO/LONDON, 1956, PP.82-84.)
  43. C
  44. C     ..................................................................
  45. C
  46.       SUBROUTINE DET3(H,Y,Z,NDIM,IER)
  47. C
  48. C
  49.       DIMENSION Y(1),Z(1)
  50. C
  51. C        TEST OF DIMENSION
  52.       IF(NDIM-3)4,1,1
  53. C
  54. C        TEST OF STEPSIZE
  55.     1 IF(H)2,5,2
  56. C
  57. C        PREPARE DIFFERENTIATION LOOP
  58.     2 HH=.5/H
  59.       YY=Y(NDIM-2)
  60.       B=Y(2)+Y(2)
  61.       B=HH*(B+B-Y(3)-Y(1)-Y(1)-Y(1))
  62. C
  63. C        START DIFFERENTIATION LOOP
  64.       DO 3 I=3,NDIM
  65.       A=B
  66.       B=HH*(Y(I)-Y(I-2))
  67.     3 Z(I-2)=A
  68. C        END OF DIFFERENTIATION LOOP
  69. C
  70. C        NORMAL EXIT
  71.       IER=0
  72.       A=Y(NDIM-1)+Y(NDIM-1)
  73.       Z(NDIM)=HH*(Y(NDIM)+Y(NDIM)+Y(NDIM)-A-A+YY)
  74.       Z(NDIM-1)=B
  75.       RETURN
  76. C
  77. C        ERROR EXIT IN CASE NDIM IS LESS THAN 3
  78.     4 IER=-1
  79.       RETURN
  80. C
  81. C        ERROR EXIT IN CASE OF ZERO STEPSIZE
  82.     5 IER=1
  83.       RETURN
  84.       END
  85.