Interpolation linéaire par morceaux

Soient I=[a,b],

\begin{displaymath}
x_0=a<x_1<\cdots <x_n=b,\end{displaymath}

et

\begin{displaymath}
y_i \in \mathbb{R}, i=0,\cdots,n.
\end{displaymath}

On considère l'échantillon

\begin{displaymath}
(x_i,y_i), i=0,\cdots,n.
\end{displaymath}

L'interpolation linéaire par morceaux de l'échantillon sur I est défini par la fonction

\begin{displaymath}g(x) = y_i + \frac{x-x_i}{x_{i+1}-x_{i}}\left(y_{i+1}-y_i\right), si x \in [x_i,x_{i+1}]. \end{displaymath}

La fonction g est continue mais n'est pas dérivable en général. Son graphe formé des segments entre les points consécutifs

\begin{displaymath}(x_i,y_i) \:\:\: \mathrm{et} \:\:\: (x_{i+1},y_{i+1}). \end{displaymath}

L'erreur commise en interpolant une fonction f deux fois continûment dérivable par une fonction linéaire par morceaux g est

\begin{displaymath}\vert f(x) - g(x) \vert \leq \frac{H^2}{8} \max_{x \in I} \ve...
...'(x) \vert , \mathrm{avec} \:\:\: H =\max_{i} (x_{i+1}-x_{i}). \end{displaymath}

En matlab, l'interpolation linéaire s'obtient à l'aide de la commande interp1, comme dans l'exemple suivant.

%Définition d'un échantillon associé à la fonction y=cos(x) sur [0,pi/2]
x0=linspace(0,pi/2,4);
y0=cos(x0);
%Evaluation de la fonction y=cos(x) sur [0,1]
x=linspace(0,pi/2,100);
y=cos(x);
%interpolation linéaire par morceaux
yi=interp1(x0,y0,x,'linear');
%Affichage
plot(x0,y0,'ro',x,yi,'b-',x,y,'r--');
xlabel('x')
ylabel('y')
h=legend('échantillon','interpolation linéaire','fonction y=cos(x)');



Frederic Richard, Aix-Marseille University, 2015