Bonjour à tous,
L'interpolation lagrangienne consiste à retrouver l'équation de la courbe d’un objet à partir des premières valeurs expérimentales afin de pouvoir déterminer la distance parcourue par l’objet à n’importe quel instant T. Dans mon projet, je dois pouvoir définir n'importe quelle distance quand t appartient à [0;10]s.
Voici les valeurs expérimentales fournies :
t(s) : 0,4412 / 0,6116 / 0,7626 / 0,9086 / 1,0121 / 1,1016 / 1,1940 / 1,2807 / 1,3560 / 1,4114
d(m) : 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
PROBLEME : Quand je stocke ces données dans un tableau excel (avec t=x et d=y) et que j'exécute l'algorithme, les valeurs "d" obtenues sont cohérentes quand t∈[0; 1,4114] mais quand t∈[1,4114 ; 10], les valeurs de "d" sont infiniment trop grandes (puissances de 10). Je suppose que cela est du au fait que le T que je demande s'éloigne des valeurs expérimentales fournies : mon algorithme ne donne sûrement pas une bonne approximation de la courbe quand t>1,4. Je suppose que ce problème vient aussi du fait que je demande la position de t dont on veut savoir la valeur mais je ne vois pas comment faire autrement.
Si quelqu'un peut m'expliquer d'où vient le problème ou sur quelle fausse route je me suis engagé, cela m'aiderait beaucoup !
Voici ci-dessous ma macro actuelle :
Code:Option Explicit Sub Lagrangeprojet() 'Définir les variables Dim n, i, order As Integer Dim x(100), y(100), xi As Double 'Savoir les dimensions du tableau n = InputBox("Rentrer le nombre de couples de valeurs") 'Rentrer les données de T For i = 1 To n x(i) = Range("a" & i) Next 'Rentrer les données de D For i = 1 To n y(i) = Range("b" & i) Next 'Demander x pour trouver f(x) xi = InputBox("Rentrer la valeur de t dont vous voulez savoir la distance") Cells(1, 3).Value = xi 'Situer x par rapport aux valeurs expérimentales order = InputBox("Donnez la position de cette valeur") Cells(2, 3).Value = order 'Résultat f(x) MsgBox ("La valeur estimé de f(x) est : " & Lagrange(x, y, order, xi)) Cells(1, 4).Value = Lagrange(x, y, order, xi) End Sub --------------------------------------------------------------------------------------------------------- 'Sous algorithme de l'inteporlation Lagrangienne 'Définir les variables Function Lagrange(x, y, order, xi) Dim i, j As Integer Dim sum, prod As Double 'Initialiser la somme sum = 0 For i = 0 To order prod = y(i) For j = 0 To order If i <> j Then prod = prod * (xi - x(j)) / (x(i) - x(j)) End If Next j sum = sum + prod Next i Lagrange = sum End Function
Je vous remercie d'avance pour votre aide,
Kokore
-----