1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| C
C **********************************************************************
C
Subroutine I115(X,DY,Xtab,Ytab,Y2,Ntab)
C
C **********************************************************************
C
C Spline cubique
C Points quelconques
C Interpolation de la dérivée
C
C Jean-Marc Blanc, janvier 2005
C
C **********************************************************************
C
C A l'entrée:
C
C X Valeur de la variable indépendante pour laquelle la
C fonction d'interpolation doit être estimée.
C
C Xtab Vecteur contenant les valeurs tabulées de la variable
C indépendante.
C
C Ytab Vecteur contenant les valeurs tabulées de la fonction.
C
C Y2 Vecteur contenant les valeur tabulées de la dérivée
C seconde.
C
C Ntab Nombre de valeurs tabulées de la fonction.
C
C
C A la sortie:
C
C DY Valeur de la dérivée interpolée.
C
C **********************************************************************
C
Implicit None
C
Integer Ntab
Real*8 X,DY,Xtab(*),Ytab(*),Ypfin,Y2(*)
C
Integer Klo,Khi,K
Real*8 DX,A,B,C,D
C
DX=(Xtab(Ntab)-Xtab(1))/Dble(Ntab-1)
C
Klo=1
Khi=Ntab
Do While ((Khi-Klo).Gt.1)
K=(Khi+Klo)/2
If (Xtab(K).Gt.X) Then
Khi=K
Else
Klo=K
End If
End Do
C
A=(Xtab(Khi)-X)/DX
B=(X-Xtab(Klo))/DX
C=-DX*(3.d0*A*A-1.d0)/6.d0
D=DX*(3.d0*B*B-1.d0)/6.d0
DY=-Ytab(Klo)*Ytab(Khi)+C*Y2(Klo)+D*Y2(Khi)
Return
C
End |
Partager