1 Interpolation
1 Interpolation
1 Interpolation
Interpolation
1.5
1.0
0.5
-0.5
§1 Interpolation
§ 1.1 Interpolation polynomiale
Notion d'interpolation
On donne une tabelle de valeurs numériques
x 1 2 3 4
y 1.9 2.3 3.1 2.8
Interpoler signifie "calculer des valeurs intermédiaires", par exemple: quelle valeur y correspond à
x = 2.7?
Graphiquement, la situation se présente comme suit
ListPlot[{{1, 1.9}, {2, 2.3}, {3, 3.1}, {4, 2.8}}, PlotRange → {{0, 5}, {0, 4}},
tracé de liste zone de tracé
PlotStyle → {PointSize[0.03]}, AxesLabel → {"x", "y"}]
style de tracé taille des points titre d'axe
y
4
x
0 1 2 3 4 5
Une méthode simple (mais pas forcément la meilleure) consiste à effectuer une interpolation linéaire
par morceaux, c'est-à-dire à joindre les points par des segments de droite:
ListLinePlot[{{1, 1.9}, {2, 2.3}, {3, 3.1}, {4, 2.8}}, PlotRange → {{0, 5}, {0, 4}}]
tracé de liste de ligne zone de tracé
4
0 1 2 3 4 5
La fonction affine par morceaux qui passe par les points donnés est appelée interpolant. Pour
x = 2.7, on obtient ainsi y = 2.86 (la méthode de calcul sera présentée ci-dessous).
Une autre méthode (qui semble meilleure mais dont la valeur reste à discuter) consiste à effectuer
une interpolation cubique, c'est-à-dire à faire passer par les 4 points donnés un polynôme de degré
≤3
0 1 2 3 4 5
Le polynôme de degré ≤ 3 qui passe par les points donnés est appelée interpolant. Pour x = 2.7, on
obtient ainsi y = 2.907 (la méthode de calcul sera étudiée ci-après).
Selon l'interpolant choisi, on obtient des réponses différentes. Dans ce chapitre, nous présentons
des procédés généraux pour construire des fonctions d'interpolation qui sont au fondement de
nombreuses méthodes numériques.
Calcul de l'interpolant
Forme matricielle d'un système linéaire
Nous verrons que le calcul consiste essentiellement en un système d'équations linéaires. Il est
avantageux d'exprimer les systèmes linéaires sous forme matricielle. Par exemple, le système
d'équations
3 x -5 y +2 z = 8
x +3 y -z = 5
2 x -y +3 z = -2
peut aussi s'écrire sous la forme suivante, appelée forme matricielle
3 -5 2 x 8
1 3 -1 y = 5
2 -1 3 z -2
Nous mettons à profit cette forme pour résoudre efficacement le système avec Mathematica. Le
tableau des coefficients des inconnues est appelé matrice du système linéaire:
m = {{3, - 5, 2}, {1, 3, - 1}, {2, - 1, 3}}; MatrixForm[m]
apparence matricielle
3 -5 2
1 3 -1
2 -1 3
x 2 t 3
y 2.3 g(t) 3.1
1 2
1 3
2.3
3.1
0.7
0.8
Clear[g, t];
efface
g[t_] := 0.7 + 0.8 t;
g[2.7]
2.86
Interpolation cubique
Dans le cas de l'interpolation cubique, le polynôme du troisième degré doit passer par les quatre
points donnés
x 1 2 t 3 4
y 1.9 2.3 g(t) 3.1 2.8
c0 + c1 3 + c2 32 + c3 33 = 3.1 , c0 + c1 4 + c2 42 + c3 43 = 2.8
Les conditions précédentes constituent un système d'équations linéaires que l'on récrit sous la
forme matricielle
1 1 1 1 c0 1.9
1 2 4 8 c1 2.3
=
1 3 9 27 c2 3.1
1 4 16 64 c3 2.8
La résolution du système avec Mathematica nous donne
m = {{1, 1, 1, 1}, {1, 2, 4, 8}, {1, 3, 9, 27}, {1, 4, 16, 64}}; MatrixForm[m]
apparence matricielle
1 1 1 1
1 2 4 8
1 3 9 27
1 4 16 64
Clear[g, t];
efface
g[t_] := 3.4 - 2.95 t + 1.7 t2 - 0.25 t3 ;
g[2.7]
2.90725
0 1 2 3 4 5
0.7 + 0.8 t
g[2.7]
2.86
g[2.7]
2.90725
Le problème d'interpolation
Enoncé du problème d'interpolation 1-1
Sont donnés n points
(x0 , y0 ), (x1 , y1 ), ..., (xn-1 , yn-1 ) d' abscisses distinctes x0 < x1 < ... < xn-1 .
Déterminez le polynôme g de degré ≤ (n - 1) passant par ces points, c'est-à-dire
g (x0 ) = y0 , g (x1 ) = y1 , ..., g (xn-1 ) = yn-1 .
Proposition 1-1
Le problème d'interpolation 1-1 possède une et une seule solution g.
Interpoler signifie "calculer des valeurs intermédiaires", par exemple: quelle est la température
moyenne journalière au début du mois d'août ?
Numérotons les 365 jours de l'année de 0 à 364:
119
120
150
151
180
181
211
212
242
243
272
273
303
304
333
334
364
30
31
58
59
89
90
0
30 septembre
30 novembre
31 décembre
1 septembre
1 novembre
1 décembre
31 octobre
31 janvier
28 février
1 octobre
1 janvier
31 juillet
1 février
31 mars
31 août
30 avril
1 juillet
1 mars
31 mai
30 juin
1 août
1 avril
1 mai
1 juin
Montrons d'abord qu'il n'est pas judicieux d'interpoler par un polynôme car le climat est un
phénomène cyclique.
pts = {{0, - 3.}, {89, 5.}, {166, 15.}, {258, 8.}};
Clear[g, t];
efface
g[t_] = InterpolatingPolynomial[pts, t];
polynôme d'interpolation
Expand[g[t]]
développe
-20
-40
-60
Le climat étant un phénomène cyclique, la température au 31 décembre doit être proche de celle du
premier janvier. Le premier jour de l'année suivante, la température devrait être de -3 °C, ce qui est
loin d'être le cas
g[365]
- 59.3369
Il faut interpoler par des fonctions périodiques dont la période est un sous-multiple de 365 jours,
365 365
c'est-à-dire 365, 2
, 3 , ...
Choisissons comme fonctions de base
2π 2π 4π
b0 (t) = 1; b1 (t) = cos t ; b2 (t) = sin t ; b3 (t) = cos t
365 365 365
La fonction d'interpolation est
g (t) = c0 b0 (t) + c1 b1 (t) + c2 b2 (t) + c3 b3 (t) =
2π 2π 4π
c0 + c1 cos t + c2 sin t + c3 cos t
365 365 365
Les conditions à remplir sont
g (0) = -3 , g (89) = 5, g (166) = 15 , g (258) = 8
2π 2π 4π
c0 + c1 cos 0 + c2 sin 0 + c3 cos
0 = -3 ,
365 365
365
2π 2π 4π
c0 + c1 cos 89 + c2 sin 89 + c3 cos 89 = 5,
365 365 365
2π 2π 4π
c0 + c1 cos 166 + c2 sin 166 + c3 cos 166 = 15 ,
365 365 365
2π 2π 4π
c0 + c1 cos 258 + c2 sin 258 + c3 cos 258 = 8
365 365 365
Le système d'équations est linéaire. Écrivons-le sous la forme matricielle
1 1 0 1
c0 -3
1 cos 365 sin 365 cos 356
178 π 178 π π
365 c1 5
=
1 cos 332
365
π
sin 332
365
π
cos 664
365
π
c2 15
c3 8
1 cos 516
365
π
sin 516
365
π
cos 1032
365
π
MatrixForm[N[m]]
apparence m⋯ valeur numérique
1. 1. 0. 1.
1. 0.0387223 0.99925 - 0.997001
1. - 0.959933 0.280231 0.842942
1. - 0.267814 - 0.963471 - 0.856551
Les coefficients de la matrice sont des valeurs numériques; aussi, la résolution du système ne
présente pas de difficulté particulière.
y = {- 3., 5., 15., 8.}; MatrixForm[y]
apparence matricielle
- 3.
5.
15.
8.
Clear[g, t];
efface
g[t_] = c.b[t];
g[t]
2πt 4πt 2πt
5.81979 - 9.22485 Cos + 0.405065 Cos - 0.0587724 Sin
365 365 365
15
10
g[365]
- 3.
g[212]
14.1226
Enoncé du problème
On donne
x0 , x1 , ..., xn-1 des abscisses distinctes p ≤ xj ≤ q
y0 , y1 , ..., yn-1 des ordonnées quelconques;
b0 , b1 , ..., bn-1 des fonctions de base
bj
[p, q] → , j = 0, 1, ..., n - 1
On cherche une fonction d'interpolation
g = c0 b0 + c1 b1 + ... + cn-1 bn-1
telle que
g (x0 ) = y0 , g (x1 ) = y1 , ..., g (xn-1 ) = yn-1
Calcul
g (x0 ) = y0 , g (x1 ) = y1 , ..., g (xn-1 ) = yn-1
c0 b0 (x0 ) + c1 b1 (x0 ) + ... + cn-1 bn-1 (x0 ) = y0
c0 b0 (x1 ) + c1 b1 (x1 ) + ... + cn-1 bn-1 (x1 ) = y1
...
c0 b0 (xn-1 ) + c1 b1 (xn-1 ) + ... + cn-1 bn-1 (xn-1 ) = yn-1
Le système d'équations peut s'écrire sous forme vectorielle
b0 (x0 ) b1 (x0 ) bn-1 (x0 ) y0
b0 (x1 ) b1 (x1 ) bn-1 (x1 ) y1
c0 + c1 + ... + cn-1 =
... ... ... ...
b0 (xn-1 ) b1 (xn-1 ) bn-1 (xn-1 ) yn-1
Il s'agit de résoudre un système de n équations à n inconnues :
b0 (x0 ) b1 (x0 ) ... bn-1 (x0 ) c0 y0
b0 (x1 ) b1 (x1 ) ... bn-1 (x1 ) c1 y1
=
... ... ... ... ... ...
b0 (xn-1 ) b1 (xn-1 ) ... bn-1 (xn-1 ) cn-1 yn-1
Hypothèses
La matrice est régulière. En particulier, ses vecteurs-colonnes sont linéairement indépendants et
constituent une base de ℝn
b0 (x0 ) b1 (x0 ) bn-1 (x0 )
b0 (x1 ) b1 (x1 ) bn-1 (x1 )
e0 = , e1 = , ..., en-1 =
... ... ...
b0 (xn-1 ) b1 (xn-1 ) bn-1 (xn-1 )
Notre problème consiste à exprimer le vecteur
y dans la base e0 , e1 , ..., en-1 , c'est-à-dire à
déterminer les coefficients { c0 , c1 , ..., cn-1 } tels que
y0
y1
c0 e0 + c1 e1 + ... + cn-1 en-1 =
y où
y=
...
yn-1
Exemple
Interpolation polynomiale
b0 (t) = 1, b1 (t) = t, b2 (t) = t2 , ..., bn-1 (t) = tn-1
1 x0 x20 ... xn-1
0 c0 y0
1 x1 x21 ... xn-1
1 c1 y1
=
... ... ... ... ... ... ...
1 xn-1 x2n-1 ... xn-1
n-1
cn-1 yn-1