Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

paprika45

XLDnaute Nouveau
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,
 
Re : Comment réaliser une interpolation linéaire 1D et 2D via visual basic

Bonsoir paprika
Pour le premier problème:
VB:
Function IntpoLin(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
ByVal X2 As Double, ByVal Y2 As Double) As Double
IntpoLin = Y1 + (Y2 - Y1) * (X - X1) / (X2 - X1)
End Function
Pour les suivant, voulez vous chercher un peu ?
Peut être que ça revient à faire un peu la même chose en arithmétique complexe ?

Non, hein, c'est pas ça...
Mais alors pour trouver Z pour un X et Y donné il faut 3 coordonnées, pas 2 !
Certes l'une d'elle peut être X=0, Y=0, Z=0, mais c'est une coordonnée quand même.
C'est comme pour un tabouret: il lui faut 3 pieds pour être stable sans risquer d'être bancal !
Et c'est un tout petit chouia plus compliqué:
VB:
Function ZIntpoXY(ByVal X As Double, ByVal Y As Double, ByVal X1 As Double, ByVal Y1 As Double, ByVal Z1 As Double, _
                                                        ByVal X2 As Double, ByVal Y2 As Double, ByVal Z2 As Double, _
                                                        ByVal X3 As Double, ByVal Y3 As Double, ByVal Z3 As Double) As Double
ZIntpoXY = ( _
     X * (Z1 * (Y2 - Y3) + Z2 * (Y3 - Y1) + Z3 * (Y1 - Y2)) _
   + Y * (Z1 * (X3 - X2) + Z2 * (X1 - X3) + Z3 * (X2 - X1)) _
   + Z1 * (X2 * Y3 - Y2 * X3) + Z2 * (Y1 * X3 - X1 * Y3) + Z3 * (X1 * Y2 - Y1 * X2) _
            ) / (X1 * (Y2 - Y3) + Y1 * (X3 - X2) + (X2 * Y3 - Y2 * X3))
End Function
Cordialement.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…