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 :
le couple (x, interp) est donc mon résultat résultant de l'interpolation.
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
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 !
Partager