File EXSMO.FT (FORTRAN source file)

Directory of image this file is from
This file as a plain text file

C
C     ..................................................................
C
C        SUBROUTINE EXSMO
C
C        PURPOSE
C           TO FIND THE TRIPLE EXPONENTIAL SMOOTHED SERIES S OF THE
C           GIVEN SERIES X.
C
C        USAGE
C           CALL EXSMO (X,NX,AL,A,B,C,S)
C
C        DESCRIPTION OF PARAMETERS
C           X     - INPUT VECTOR OF LENGTH NX CONTAINING TIME SERIES
C                   DATA WHICH IS TO BE EXPONENTIALLY SMOOTHED.
C           NX    - THE NUMBER OF ELEMENTS IN X.
C           AL    - SMOOTHING CONSTANT, ALPHA.  AL MUST BE GREATER THAN
C                   ZERO AND LESS THAN ONE.
C           A,B,C - COEFFICIENTS OF THE PREDICTION EQUATION WHERE S IS
C                   PREDICTED T PERIODS HENCE BY
C                                 A + B*T + C*T*T/2.
C                   AS INPUT-- IF A=B=C=0, PROGRAM WILL PROVIDE INITIAL
C                   VALUES.  IF AT LEAST ONE OF A,B,C IS NOT ZERO,
C                   PROGRAM WILL TAKE GIVEN VALUES AS INITIAL VALUES.
C                   AS OUTPUT-- A,B,C CONTAIN LATEST, UPDATED COEFFI-
C                   CIENTS OF PREDICTION.
C           S     - OUTPUT VECTOR OF LENGTH NX CONTAINING TRIPLE
C                   EXPONENTIALLY SMOOTHED TIME SERIES.
C
C        REMARKS
C           NONE
C
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C           NONE
C
C        METHOD
C           REFER TO R. G. BROWN, 'SMOOTHING, FORECASTING AND PREDICTION
C           OF DISCRETE TIME SERIES', PRENTICE-HALL, N.J., 1963,
C           PP. 140 TO 144.
C
C     ..................................................................
C
      SUBROUTINE EXSMO (X,NX,AL,A,B,C,S)
      DIMENSION X(1),S(1)
C
C     IF A=B=C=0.0, GENERATE INITIAL VALUES OF A, B, AND C
C
      IF(A) 140, 110, 140
  110 IF(B) 140, 120, 140
  120 IF(C) 140, 130, 140
  130 C=X(1)-2.0*X(2)+X(3)
      B=X(2)-X(1)-1.5*C
      A=X(1)-B-0.5*C
C
  140 BE=1.0-AL
      BECUB=BE*BE*BE
      ALCUB=AL*AL*AL
C
C     DO THE FOLLOWING FOR I=1 TO NX
C
      DO 150 I=1,NX
C
C        FIND S(I) FOR ONE PERIOD AHEAD
C
      S(I)=A+B+0.5*C
C
C        UPDATE COEFFICIENTS A, B, AND C
C
      DIF=S(I)-X(I)
      A=X(I)+BECUB*DIF
      B=B+C-1.5*AL*AL*(2.0-AL)*DIF
  150 C=C-ALCUB*DIF
      RETURN
      END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search