En analyse numérique (et dans son application algorithmique discrète pour le calcul numérique), l'interpolation est une opération mathématique permettant de construire une courbe à partir de la donnée d'un nombre fini de points, ou une fonction à partir de la donnée d'un nombre fini de valeurs. La solution du problème d'interpolation passe par les points prescrits, et, suivant le type d'interpolation, il lui est demandé de vérifier des propriétés supplémentaires.
Ainsi le type le plus simple d'interpolation est l'interpolation linéaire, qui consiste à « joindre les points » donnés. À partir d'une table trigonométrique, elle peut servir à estimer les valeurs situées entre les données de la table.
L'interpolation doit être distinguée de l'approximation de fonction, qui consiste à chercher la fonction la plus proche possible, selon certains critères, d'une fonction donnée. Dans le cas de l'approximation, il n'est en général plus imposé de passer exactement par les points donnés initialement. Ceci permet de mieux prendre en compte le cas des erreurs de mesure, et c'est ainsi que l'exploitation de données expérimentales pour la recherche de lois empiriques relève plus souvent de la régression linéaire, ou plus généralement de la méthode des moindres carrés.
Dans le cas d'une interpolation linéaire, on constitue une courbe d'interpolation qui est une succession de segments. Entre deux points p1 et p2 de coordonnées respectives (x1,y1) et (x2,y2), l'interpolation est donnée par la formule suivante
avec la pente p qui s'exprime comme
Le code C permettant d'interpoler linéairement deux valeurs dans la plage mu [0...1] est le suivant :
double interpolationLinéaire(double v1, double v2, double mu) { return(v1*(1-mu)+v2*mu); }
Comme son nom l'indique, on utilise ici une équation cubique pour modéliser localement la courbe. Quatre points sont nécessaires pour évaluer la fonction qui remplace la courbe discrète. Tout dépend des conditions de continuité utilisées, la forme de la cubique peut varier et donner une interpolation différente (ex: interpolation cubique de Keys ou interpolation cubique splines). La tangente à chaque point d'indice "i" possède la même pente que le segment reliant les points d'indice "i-1" et "i+1", ce qui signifie que chaque pic de la courbe peut être dépassé par la courbe interpolée.
Le code C permettant d'interpoler cubiquement quatre valeurs dans la plage mu [0...1] est le suivant :
double interpolationCubique(double y0,double y1,double y2,double y3,double mu) { double a0,a1,a2,a3,mu2; mu2 = mu*mu; a0 = y3 - y2 - y0 + y1; a1 = y0 - y1 - a0; a2 = y2 - y0; a3 = y1; return (a0*mu*mu2+a1*mu2+a2*mu+a3); }
On utilise ici la fonction cosinus pour modéliser localement la courbe. Deux points seulement sont nécessaires pour évaluer la fonction qui remplace la courbe discrète. La tangente à chaque pic est horizontale, ce qui signifie que chaque pic de la courbe correspond réellement à un point connu de la courbe discrète.
Le code C permettant d'interpoler en cosinus deux valeurs dans la plage mu [0...1] est le suivant :
double interpolateCosinus(double y1, double y2, double mu) { double mu2; mu2 = (1-cos(mu*PI))/2; return (y1*(1-mu2)+y2*mu2); }