Comment réaliser une interpolation linéaire 1D et 2D via visual basic et sans do

cloeclodesonoeuf Messages postés 1 Date d'inscription mercredi 12 mai 2010 Statut Membre Dernière intervention 24 septembre 2011 - 24 sept. 2011 à 17:20
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 24 sept. 2011 à 21:30
Bonjour à tous,

J'ai un gros problème en ce qui concerne des macros sur les interpolations linéaires, ayant cherché pendant longtemps sur internet pour comprendre (cours de mathématique + programme sur les interpolations) je bloque sur deux problèmes :

-un concernant les interpolations linéaires 1D c'est à dire que dans un premier temps je souhaiterais écrire en langage VBA un algorithme qui calcule l'interpolation linéaire 1D (yi) en un point (xi) à partir de deux valeurs de coordonnées (x1,y1) et (x2,y2) puis un autre programme qui fasse la même chose mais pour deux vecteurs x et y (où x et y sont monotones et croissant)

J'ai commencé un programme avec 4 InputBox me demandant de rentrer les coordonnées x1, y1, x2, y2
puis de faire

m=(y2-y1)/(x2-x1)

MsgBox "On obtient une fonction affine yi= " & m & " xi +p"

Je pense que ce programme n'est pas complet (car nous ne pouvons pas trouver le "p"?) et je n'arrive vraiment pas à voir ce qu'il faut faire pour la suite, de plus les programmes que j'ai trouvé sur internet ne concernent que des macros utilisant des données de feuilles excel.

-Un deuxième problème concernant un algorithme qui calcule l'interpolation linéaire 2D (zi) en un point (xi, yi) à partir de deux valeurs de coordonnées (x1,y1,z1) et (x2,y2,z2) puis un autre programme qui fasse la même chose mais pour deux vecteurs x et y et une matrice z (où la taille de la matrice z est définie par la taille de x et y sachant que x et y sont monotones et croissant)


Merci d'avance à tous pour votre aide,
je continue mes recherches,

1 réponse

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
24 sept. 2011 à 21:30
Salut

Ton problème tient plus des maths que de la programmation.
Une droite, c'est
y = a.x + b
Si tu appliques cette formule à tes deux points, tu obtiens
y1 = a.x1 + b
y2 = a.x2 + b
Deux équations, deux variables : résorbable :
En faisant la différence des deux équations, tu élimines le b :
y1 - y2 = a.(x1 - x2)
d'où
a = (y1-y2) / (x1-x2)
Ensuite, maintenant que tu as a, il te suffit de l'appliquer à l'une de tes formules initiales :
y1 = ((y1-y2) / (x1-x2)).x1 + b
d'où
b = y1 - ((y1-y2) / (x1-x2)).x1
Tu as tout ce qu'il te faut pour le mettre en équation.

Pour ton deuxième problème, c'est simple : En utilisant une 3ème dimension, tu viens de créer d'autres équations : celle qui relie x et y, celle qui relie x et z et enfin, celle qui relie y et z.
Tu n'as plus qu'à appliquer le même raisonnement démontré plus haut pour chacune d'elles

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0