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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !