Function Interpoly(x() As Double, y() As Double, Xp As Double) As Double
' INTERPOLATION POLYNOMIALE de même degré que le nb de points données (x,y)
' par la methode de Aitken. Renvoi yp pour xp donné quelconque.
' Paramètres
Dim n As Long, j As Long, i As Long
' Algo
n = UBound(y)
For j = 1 To n - 1
For i = j + 1 To n
y(i) = (y(j) * (x(i) - Xp) - y(i) * (x(j) - Xp)) / (x(i) - x(j))
Next i
Next j
' Renvoi
Interpoly = y(n)
End Function
Sub Test()
' TEST (avec l'équation particulière y=x^2)
' Paramètres
Dim ValeurX() As Double
Dim ValeurY() As Double
Dim Tempo1() As String
Dim Tempo2() As String
Dim Nb As Long, t As Long
Dim Xp As Double
' Valeurs connues
Tempo1 = Split("1 2 4 8") ' les Xi
Tempo2 = Split("1 4 16 64") ' les Yi
' Conversion des valeurs en numériques
Nb = UBound(Tempo1)
ReDim ValeurX(Nb), ValeurY(Nb)
For t = 1 To Nb
ValeurX(t) = CDbl(Tempo1(t - 1))
ValeurY(t) = CDbl(Tempo2(t - 1))
Next t
' Valeur interpolée pour xp = 10
Xp = 10
MsgBox "pour x=" & Xp & " y=" & Interpoly(ValeurX, ValeurY, Xp)
End Sub