Sub Ex_Polcof()
Const N As Long = 4
Dim X(N - 1) As Double, Y(N - 1) As Double, C(N - 1) As Double, D(N - 1) As Double
Dim Xe As Double, XX As Double, 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
'-- Polynomial interpolation
Call
Polint(N, X(), Y(), C(), Info)
If Info <> 0 Then
Debug.Print "Error in
Polint: Info =", Info
Exit Sub
End If
'-- Compute coefficients of polynomial
XX = 0.12
Call
Polcof(XX, N, X(), C(), D(), Info)
Debug.Print D(0), D(1), D(2), D(3)
'-- Compute ln(0.115) and ln(0.125)
Xe = 0.115
Debug.Print "ln(" + CStr(Xe) + ") =", D(0) + D(1) * (Xe - XX) + D(2) * ((Xe - XX) ^ 2) + D(3) * ((Xe - XX) ^ 3)
Xe = 0.125
Debug.Print "ln(" + CStr(Xe) + ") =", D(0) + D(1) * (Xe - XX) + D(2) * ((Xe - XX) ^ 2) + D(3) * ((Xe - XX) ^ 3)
Debug.Print "Info =", Info
End Sub
Sub Polint(N As Long, X() As Double, Y() As Double, C() As Double, Info As Long)
Polynomial interpolation
Sub Polcof(XX As Double, N As Long, X() As Double, C() As Double, D() As Double, Info As Long)
Coefficients of polynomial interpolation