Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

[Help] Interpolation Lagrangienne en Visual Basic

  1. Kokore

    Date d'inscription
    juin 2017
    Messages
    1

    [Help] Interpolation Lagrangienne en Visual Basic

    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

    -----

     


    • Publicité



  2. Paraboloide_Hyperbolique

    Date d'inscription
    juin 2012
    Localisation
    Liège
    Âge
    33
    Messages
    1 732

    Re : [Help] Interpolation Lagrangienne en Visual Basic

    Bonjour,

    Votre problème est celui de l'extrapolation de données; qui est compliqué en général. Effectuer une extrapolation avec un polynôme de Lagrange est une mauvaise idée: son comportement devient de plus en plus "sauvage" à mesure que l'on s'éloigne des points de données et que son degré est élevé.

    Au vue de vos données, j'essaierais plutôt une approximation linéaire ou quadratique. La courbe ne passera plus forcément par les points de données, mais celle-ci sera beaucoup plus "sage".
     

  3. tet2lar

    Date d'inscription
    décembre 2016
    Âge
    59
    Messages
    147

    Re : [Help] Interpolation Lagrangienne en Visual Basic

    Bonjour

    En effet, sur des corrélations aussi régulières que celle citée en exemple, il est préférable d'utiliser l'option "courbe de tendance d'excel" qui permet d'extrapoler correctement. La polynomiale donne un très bon résultat.
    Par contre, par curiosité sur votre macro, je ne comprends pas quelle position de la valeur vous saisissez quand vous sortez de l'intervalle des mesures expérimentales. Dans l'exemple cité, pour une valeur de t supérieure à 1.41, vous ne pouvez pas saisir une 11ème position ?
     


    • Publicité







Sur le même thème :





 

Discussions similaires

  1. visual basic
    Par estmahdi dans le forum Programmation et langages, Algorithmique
    Réponses: 11
    Dernier message: 13/09/2016, 12h31
  2. Problème de réception port série visual basic ( visual studio 2012)
    Par extremgear dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 30/07/2013, 22h44
  3. visual basic ??!!
    Par omar.STE dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 13/07/2008, 20h02
  4. Visual Basic
    Par Mandrinus dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 09/01/2007, 10h09
  5. Visual Basic
    Par knecmotet dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2004, 13h57