home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
PCSSP1.ZIP
/
ITRPAPSM.ZIP
/
DSE35.FOR
< prev
next >
Wrap
Text File
|
1985-11-29
|
3KB
|
84 lines
C
C ..................................................................
C
C SUBROUTINE DSE35
C
C PURPOSE
C TO COMPUTE A VECTOR OF SMOOTHED FUNCTION VALUES GIVEN A
C VECTOR OF FUNCTION VALUES WHOSE ENTRIES CORRESPOND TO
C EQUIDISTANTLY SPACED ARGUMENT VALUES.
C
C USAGE
C CALL DSE35(Y,Z,NDIM,IER)
C
C DESCRIPTION OF PARAMETERS
C Y - GIVEN VECTOR OF DOUBLE PRECISION FUNCTION VALUES
C (DIMENSION NDIM)
C Z - RESULTING VECTOR OF DOUBLE PRECISION SMOOTHED
C FUNCTION VALUES (DIMENSION NDIM)
C NDIM - DIMENSION OF VECTORS Y AND Z
C IER - RESULTING ERROR PARAMETER
C IER = -1 - NDIM IS LESS THAN 5
C IER = 0 - NO ERROR
C
C REMARKS
C (1) IF IER=-1 THERE HAS BEEN NO COMPUTATION.
C (2) Z CAN HAVE THE SAME STORAGE ALLOCATION AS Y. IF Y IS
C DISTINCT FROM Z, THEN IT IS NOT DESTROYED.
C
C SUBROUTINE AND FUNCTION SUBPROGRAMS REQUIRED
C NONE
C
C METHOD
C IF X IS THE (SUPPRESSED) VECTOR OF ARGUMENT VALUES, THEN
C EXCEPT AT THE POINTS X(1),X(2),X(NDIM-1) AND X(NDIM), EACH
C SMOOTHED VALUE Z(I) IS OBTAINED BY EVALUATING AT X(I) THE
C LEAST-SQUARES POLYNOMIAL OF DEGREE 3 RELEVANT TO THE 5
C SUCCESSIVE POINTS (X(I+K),Y(I+K)) K = -2,-1,...,2. (SEE
C HILDEBRAND, F.B., INTRODUCTION TO NUMERICAL ANALYSIS,
C MC GRAW-HILL, NEW YORK/TORONTO/LONDON, 1956, PP. 295-302.)
C
C ..................................................................
C
SUBROUTINE DSE35(Y,Z,NDIM,IER)
C
C
DIMENSION Y(1),Z(1)
DOUBLE PRECISION Y,Z,A,B,C,D
C
C TEST OF DIMENSION
IF(NDIM-5)4,1,1
C
C PREPARE LOOP
1 B=Y(1)
C=Y(2)
C
C START LOOP
DO 3 I=5,NDIM
A=B
B=C
C=Y(I-2)
C
C GENERATE FOURTH CENTRAL DIFFERENCE
D=C-B-Y(I-1)
D=D+D+C
D=D+D+A+Y(I)
C
C CHECK FIRST TWO COMPONENTS
IF(I-5)2,2,3
2 Z(1)=A-.014285714285714286D0*D
Z(2)=B+.057142857142857143D0*D
3 Z(I-2)=C-.08571428571428571D0*D
C END OF LOOP
C
C UPDATE LAST TWO COMPONENTS
Z(NDIM-1)=Y(NDIM-1)+.057142857142857143D0*D
Z(NDIM)=Y(NDIM)-.014285714285714286D0*D
IER=0
RETURN
C
C ERROR EXIT IN CASE NDIM IS LESS THAN 5
4 IER=-1
RETURN
END