Sub Ex_Pchse()
Const N = 4, Ne = 2
Dim X(N - 1) As Double, Y(N - 1) As Double, D(N - 1) As Double
Dim Xe(Ne - 1) As Double, Ye(Ne - 1) As Double
Dim Info As Long
'-- Data
X(0) = 0.1: Y(0) = -2.3026
X(1) = 0.11: Y(1) = -2.2073
X(2) = 0.12: Y(2) = -2.1203
X(3) = 0.13: Y(3) = -2.0402
'-- Spline interpolation
Call
Pchse(N, X(), Y(), D(), Info)
If Info <> 0 Then
Debug.Print "Error in
Pchse: Info =", Info
Exit Sub
End If
'-- Compute interpolated values
Xe(0) = 0.115: Xe(1) = 0.125
Call
Pchfe(N, X(), Y(), D(), Ne, Xe(), Ye(), Info)
Debug.Print "ln(" + CStr(Xe(0)) + ") =", Ye(0)
Debug.Print "ln(" + CStr(Xe(1)) + ") =", Ye(1)
Debug.Print "Info =", Info
End Sub
Sub Pchfe(N As Long, X() As Double, F() As Double, D() As Double, Ne As Long, Xe() As Double, Fe() As Double, Info As Long, Optional Skip As Boolean=False, Optional Idxfd As Long=0, Optional Incfd As Long=1)
区分3次エルミート(または3次スプライン)補間関数値
Sub Pchse(N As Long, X() As Double, F() As Double, D() As Double, Info As Long, Optional Idxfd As Long=0, Optional Incfd As Long=1)
区分3次スプライン補間 ("not a knot"境界条件)