主题:一元三点等距插值问题
SUBROUTINE EELG3(X1,H,N,Y,T,Z)
REAL X1,H,Y(N),T,Z,S,XI,XJ
Z=0.0
IF (N.LE.0) RETURN
IF (N.EQ.1) THEN
Z=Y(1)
RETURN
END IF
IF (N.EQ.2) THEN
Z=(Y(2)*(T-X1)-Y(1)*(T-X1-H))/H
RETURN
END IF
IF (T.LE.(X1+H)) THEN
K=1
M=3
ELSE IF (T.GE.(X1+(N-2)*H)) THEN
K=N-2
M=N
ELSE
I=(T-X1)/H+1
IF (ABS(T-X1-I*H).GE.ABS(T-X1-(I-1)*H)) THEN
K=I-1
M=I+1
ELSE
K=I
M=I+2
END IF
END IF
Z=0.0
DO 30 I=K,M
S=1.0
XI=X1+(I-1)*H
DO 20 J=K,M
IF (J.NE.I) THEN
XJ=X1+(J-1)*H
S=S*(T-XJ)/(XI-XJ)
END IF
20 CONTINUE
Z=Z+S*Y(I)
30 CONTINUE
RETURN
END
这是一元三点等距插值程序 插值很理想,如果我想得到在节点上插值的次数和在节点外插值的次数怎么改这个程序呢 ,哪位高手帮指点,数据中有小部分是刚好在节点上的,要返回次数.参数中多加一个i i该怎么求得?
REAL X1,H,Y(N),T,Z,S,XI,XJ
Z=0.0
IF (N.LE.0) RETURN
IF (N.EQ.1) THEN
Z=Y(1)
RETURN
END IF
IF (N.EQ.2) THEN
Z=(Y(2)*(T-X1)-Y(1)*(T-X1-H))/H
RETURN
END IF
IF (T.LE.(X1+H)) THEN
K=1
M=3
ELSE IF (T.GE.(X1+(N-2)*H)) THEN
K=N-2
M=N
ELSE
I=(T-X1)/H+1
IF (ABS(T-X1-I*H).GE.ABS(T-X1-(I-1)*H)) THEN
K=I-1
M=I+1
ELSE
K=I
M=I+2
END IF
END IF
Z=0.0
DO 30 I=K,M
S=1.0
XI=X1+(I-1)*H
DO 20 J=K,M
IF (J.NE.I) THEN
XJ=X1+(J-1)*H
S=S*(T-XJ)/(XI-XJ)
END IF
20 CONTINUE
Z=Z+S*Y(I)
30 CONTINUE
RETURN
END
这是一元三点等距插值程序 插值很理想,如果我想得到在节点上插值的次数和在节点外插值的次数怎么改这个程序呢 ,哪位高手帮指点,数据中有小部分是刚好在节点上的,要返回次数.参数中多加一个i i该怎么求得?