home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
PCSSP1.ZIP
/
ITRPAPSM.ZIP
/
AHI.FOR
< prev
next >
Wrap
Text File
|
1985-11-29
|
5KB
|
139 lines
C
C ..................................................................
C
C SUBROUTINE AHI
C
C PURPOSE
C TO INTERPOLATE FUNCTION VALUE Y FOR A GIVEN ARGUMENT VALUE
C X USING A GIVEN TABLE (ARG,VAL) OF ARGUMENT, FUNCTION, AND
C DERIVATIVE VALUES.
C
C USAGE
C CALL AHI (X,ARG,VAL,Y,NDIM,EPS,IER)
C
C DESCRIPTION OF PARAMETERS
C X - THE ARGUMENT VALUE SPECIFIED BY INPUT.
C ARG - THE INPUT VECTOR (DIMENSION NDIM) OF ARGUMENT
C VALUES OF THE TABLE (NOT DESTROYED).
C VAL - THE INPUT VECTOR (DIMENSION 2*NDIM) OF FUNCTION
C AND DERIVATIVE VALUES OF THE TABLE (DESTROYED).
C FUNCTION AND DERIVATIVE VALUES MUST BE STORED IN
C PAIRS, THAT MEANS BEGINNING WITH FUNCTION VALUE AT
C POINT ARG(1) EVERY FUNCTION VALUE MUST BE FOLLOWED
C BY THE VALUE OF DERIVATIVE AT THE SAME POINT.
C Y - THE RESULTING INTERPOLATED FUNCTION VALUE.
C NDIM - AN INPUT VALUE WHICH SPECIFIES THE NUMBER OF
C POINTS IN TABLE (ARG,VAL).
C EPS - AN INPUT CONSTANT WHICH IS USED AS UPPER BOUND
C FOR THE ABSOLUTE ERROR.
C IER - A RESULTING ERROR PARAMETER.
C
C REMARKS
C (1) TABLE (ARG,VAL) SHOULD REPRESENT A SINGLE-VALUED
C FUNCTION AND SHOULD BE STORED IN SUCH A WAY, THAT THE
C DISTANCES ABS(ARG(I)-X) INCREASE WITH INCREASING
C SUBSCRIPT I. TO GENERATE THIS ORDER IN TABLE (ARG,VAL),
C SUBROUTINES ATSG, ATSM OR ATSE COULD BE USED IN A
C PREVIOUS STAGE.
C (2) NO ACTION BESIDES ERROR MESSAGE IN CASE NDIM LESS
C THAN 1.
C (3) INTERPOLATION IS TERMINATED EITHER IF THE DIFFERENCE
C BETWEEN TWO SUCCESSIVE INTERPOLATED VALUES IS
C ABSOLUTELY LESS THAN TOLERANCE EPS, OR IF THE ABSOLUTE
C VALUE OF THIS DIFFERENCE STOPS DIMINISHING, OR AFTER
C (2*NDIM-2) STEPS. FURTHER IT IS TERMINATED IF THE
C PROCEDURE DISCOVERS TWO ARGUMENT VALUES IN VECTOR ARG
C WHICH ARE IDENTICAL. DEPENDENT ON THESE FOUR CASES,
C ERROR PARAMETER IER IS CODED IN THE FOLLOWING FORM
C IER=0 - IT WAS POSSIBLE TO REACH THE REQUIRED
C ACCURACY (NO ERROR).
C IER=1 - IT WAS IMPOSSIBLE TO REACH THE REQUIRED
C ACCURACY BECAUSE OF ROUNDING ERRORS.
C IER=2 - IT WAS IMPOSSIBLE TO CHECK ACCURACY BECAUSE
C NDIM IS LESS THAN 2, OR THE REQUIRED ACCURACY
C COULD NOT BE REACHED BY MEANS OF THE GIVEN
C TABLE. NDIM SHOULD BE INCREASED.
C IER=3 - THE PROCEDURE DISCOVERED TWO ARGUMENT VALUES
C IN VECTOR ARG WHICH ARE IDENTICAL.
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C NONE
C
C METHOD
C INTERPOLATION IS DONE BY MEANS OF AITKENS SCHEME OF
C HERMITE INTERPOLATION. ON RETURN Y CONTAINS AN INTERPOLATED
C FUNCTION VALUE AT POINT X, WHICH IS IN THE SENSE OF REMARK
C (3) OPTIMAL WITH RESPECT TO GIVEN TABLE. FOR REFERENCE, SEE
C F.B.HILDEBRAND, INTRODUCTION TO NUMERICAL ANALYSIS,
C MCGRAW-HILL, NEW YORK/TORONTO/LONDON, 1956, PP.314-317, AND
C GERSHINSKY/LEVINE, AITKEN-HERMITE INTERPOLATION,
C JACM, VOL.11, ISS.3 (1964), PP.352-356.
C
C ..................................................................
C
SUBROUTINE AHI(X,ARG,VAL,Y,NDIM,EPS,IER)
C
C
DIMENSION ARG(1),VAL(1)
IER=2
H2=X-ARG(1)
IF(NDIM-1)2,1,3
1 Y=VAL(1)+VAL(2)*H2
2 RETURN
C
C VECTOR ARG HAS MORE THAN 1 ELEMENT.
C THE FIRST STEP PREPARES VECTOR VAL SUCH THAT AITKEN SCHEME CAN BE
C USED.
3 I=1
DO 5 J=2,NDIM
H1=H2
H2=X-ARG(J)
Y=VAL(I)
VAL(I)=Y+VAL(I+1)*H1
H=H1-H2
IF(H)4,13,4
4 VAL(I+1)=Y+(VAL(I+2)-Y)*H1/H
5 I=I+2
VAL(I)=VAL(I)+VAL(I+1)*H2
C END OF FIRST STEP
C
C PREPARE AITKEN SCHEME
DELT2=0.
IEND=I-1
C
C START AITKEN-LOOP
DO 9 I=1,IEND
DELT1=DELT2
Y=VAL(1)
M=(I+3)/2
H1=ARG(M)
DO 6 J=1,I
K=I+1-J
L=(K+1)/2
H=ARG(L)-H1
IF(H)6,14,6
6 VAL(K)=(VAL(K)*(X-H1)-VAL(K+1)*(X-ARG(L)))/H
DELT2=ABS(Y-VAL(1))
IF(DELT2-EPS)11,11,7
7 IF(I-5)9,8,8
8 IF(DELT2-DELT1)9,12,12
9 CONTINUE
C END OF AITKEN-LOOP
C
10 Y=VAL(1)
RETURN
C
C THERE IS SUFFICIENT ACCURACY WITHIN 2*NDIM-2 ITERATION STEPS
11 IER=0
GOTO 10
C
C TEST VALUE DELT2 STARTS OSCILLATING
12 IER=1
RETURN
C
C THERE ARE TWO IDENTICAL ARGUMENT VALUES IN VECTOR ARG
13 Y=VAL(1)
14 IER=3
RETURN
END