3.3 Interpolation
83
{(x i , y i )}, l’instruction c=polyfit(x,y,n) fournit les coefficients du polynôme d’interpolation. Plus précisément, c(1) contient le coefficient de
x
n , c(2) celui de x
n−1 , . . . et c(n+1) la valeur de Π n (0). (On trouvera
polyfit
plus de détails sur cette commande à la Section 3.6.) Comme déjà indiqué au Chapitre 1, on peut alors utiliser l’instruction p=polyval(c,z)
pour calculer les valeurs p(j) prises par le polynôme d’interpolation en
m points arbitraires z(j), j=1,...,m.
Quand on connaît explicitement la fonction f, on peut utiliser l’instruction y=eval(f) (ou y=feval(f), ou encore y=f(x)) pour calculer
le vecteur y des valeurs de f en des noeuds donnés (par exemple stockés
dans un vecteur x).
Exemple 3.1 (Climatologie) Pour calculer le polynôme d’interpolation des
données du Problème 3.1 correspondant à K = 0.67 (première colonne de la
Table 3.1), en utilisant seulement les valeurs de la température pour les latitudes 65, 35, 5, -25, -55, on peut utiliser les instructions MATLAB suivantes :
x =[ -55 -25 5 35 65]; y =[ -3.25 -3.2 -3.02 -3.32 -3.1];
format short e; c= polyfit (x ,y ,4)
c =
8.2819e-08 -4.5267e-07 -3.4684e-04
3.7757e-04 -3.0132e+00
Le graphe du polynôme d’interpolation est alors obtenu comme suit :
z = linspace ( x (1) ,x( end ) ,100);
p = polyval (c ,z );
plot (z ,p ,x ,y , ’o ’); grid on;
Afin d’obtenir une courbe régulière, nous avons évalué notre polynôme en 101
points équirépartis dans l’intervalle [−55, 65] (en fait, les tracés de MATLAB
sont toujours construits en interpolant linéairement par morceaux entre les
points). Remarquer que l’instruction x(end) fournit directement la dernière
composante du vecteur x, sans avoir à spécifier la longueur du vecteur. Sur la
Figure 3.5, les cercles pleins indiquent les valeurs utilisées pour construire le
polynôme d’interpolation, tandis que les cercles vides indiquent les valeurs non
utilisées. On peut apprécier la bonne adéquation qualitative entre la courbe et
les données.
Le résultat suivant permet d’évaluer l’erreur obtenue en remplaçant
f par son polynôme d’interpolation Π n f
Proposition 3.2 Soit I un intervalle borné, et soient n + 1 noeuds
d’interpolation distincts {x i , i = 0, . . . , n} dans I. Soit f une fonction continûment différentiable dans I jusqu’à l’ordre n + 1. Alors
∀x ∈ I, ∃ξ ∈ I tel que
E n f(x) = f(x) − Π n f(x) =
f
(n+1) (ξ)
(n + 1)!
n
i=0
(x − x i )
(3.5)
83
{(x i , y i )}, l’instruction c=polyfit(x,y,n) fournit les coefficients du polynôme d’interpolation. Plus précisément, c(1) contient le coefficient de
x
n , c(2) celui de x
n−1 , . . . et c(n+1) la valeur de Π n (0). (On trouvera
polyfit
plus de détails sur cette commande à la Section 3.6.) Comme déjà indiqué au Chapitre 1, on peut alors utiliser l’instruction p=polyval(c,z)
pour calculer les valeurs p(j) prises par le polynôme d’interpolation en
m points arbitraires z(j), j=1,...,m.
Quand on connaît explicitement la fonction f, on peut utiliser l’instruction y=eval(f) (ou y=feval(f), ou encore y=f(x)) pour calculer
le vecteur y des valeurs de f en des noeuds donnés (par exemple stockés
dans un vecteur x).
Exemple 3.1 (Climatologie) Pour calculer le polynôme d’interpolation des
données du Problème 3.1 correspondant à K = 0.67 (première colonne de la
Table 3.1), en utilisant seulement les valeurs de la température pour les latitudes 65, 35, 5, -25, -55, on peut utiliser les instructions MATLAB suivantes :
x =[ -55 -25 5 35 65]; y =[ -3.25 -3.2 -3.02 -3.32 -3.1];
format short e; c= polyfit (x ,y ,4)
c =
8.2819e-08 -4.5267e-07 -3.4684e-04
3.7757e-04 -3.0132e+00
Le graphe du polynôme d’interpolation est alors obtenu comme suit :
z = linspace ( x (1) ,x( end ) ,100);
p = polyval (c ,z );
plot (z ,p ,x ,y , ’o ’); grid on;
Afin d’obtenir une courbe régulière, nous avons évalué notre polynôme en 101
points équirépartis dans l’intervalle [−55, 65] (en fait, les tracés de MATLAB
sont toujours construits en interpolant linéairement par morceaux entre les
points). Remarquer que l’instruction x(end) fournit directement la dernière
composante du vecteur x, sans avoir à spécifier la longueur du vecteur. Sur la
Figure 3.5, les cercles pleins indiquent les valeurs utilisées pour construire le
polynôme d’interpolation, tandis que les cercles vides indiquent les valeurs non
utilisées. On peut apprécier la bonne adéquation qualitative entre la courbe et
les données.
Le résultat suivant permet d’évaluer l’erreur obtenue en remplaçant
f par son polynôme d’interpolation Π n f
Proposition 3.2 Soit I un intervalle borné, et soient n + 1 noeuds
d’interpolation distincts {x i , i = 0, . . . , n} dans I. Soit f une fonction continûment différentiable dans I jusqu’à l’ordre n + 1. Alors
∀x ∈ I, ∃ξ ∈ I tel que
E n f(x) = f(x) − Π n f(x) =
f
(n+1) (ξ)
(n + 1)!
n
i=0
(x − x i )
(3.5)
