Interpolation de Lagrange
Bonjour,
j'ai un soucis avec un algo correspondant à l'interpolation de Lagrange.
Je dispose de plusieurs couples de valeurs, et j'aimerai à partir de ces valeurs en déduire des valeurs futures.
exemple :
(2004, 102)
(2005, 102,9)
(2006, 107)
je cherche donc a trouvé les ordonnées pour les abscisses 2007, 2008 ... etc
j'ai donc pensé à utilisé l'interpolation de Lagrange. Es ce la bonne solution ?
Si oui alors voici mon algo codé en Visual Basic :
Code:
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
|
'La variable x correspondant à l'abscisse dont on souhaite trouvé l'ordonné
'la variable interp désigne le résultat de l'interpolation (l'ordonné cherché)
'la variable n correspond à la précision
'les tableaux xin() et yin() correspondent aux couples de valeurs que je connais déjà
Dim interp As Double
Dim i, j, n As Integer
n = 3
interp = 0
'*****************************************
'Interpolation suivant la méthode Lagrange
'*****************************************
For i = 0 To n
lambda(i) = 1#
For j = 0 To n
If i <> j Then
lambda(i) = lambda(i) * ((x - xin(j)) / (xin(i) - xin(j)))
End If
interp = interp + (yin(i) * lambda(i))
Next j
Next i |
le couple (x, interp) est donc mon résultat résultant de l'interpolation.
Cependant ce résultat est complétement incohérent, en effet je me retrouve avec des valeurs de ce type :
(2007, 198721546521321.2)
L'ordonnée est complétement disproportionnée :'(
L'erreur provient de l'algo ou d'autre part ?
en espérant que quelqu'un trouve d'ou provient l'erreur !