Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

3 Interpolation

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 18

Chapitre 3

Interpolation

3.1 Introduction
Le problème de l’interpolation 1d est de déterminer une fonction 1 g : E ⊂ R → R, à partir de
m couples de points de la forme (xi , yi ) de manière à respecter les conditions d’interpolation :
g(xi ) = yi , i = 1, . . . , m
g est prise dans une famille de fonctions facilement calculables comme des polynômes ou des
splines (polynômes par morceaux) des fonctions trigonométriques, des fonctions rationnelles, etc.
En général la famille de fonctions est définie à partir de m fonctions ϕ1 , . . . , ϕm données et g
dépend linéairement de ces fonctions, soit g ∈ V ect{ϕ1 , . . . , ϕm } c’est à dire :
m
X
g = α1 ϕ1 + . . . αm ϕm = αj ϕj
j=1

Avec cette forme les conditions d’interpolation s’écrivent :


g(x1 ) = y1 ⇐⇒ α1 ϕ1 (x1 ) + α2 ϕ2 (x1 ) + . . . αm ϕm (x1 ) = y1
.. .. .. .. ..
. . . . .
g(xi ) = yi ⇐⇒ α1 ϕ1 (xi ) + α2 ϕ2 (xi ) + . . . αm ϕm (xi ) = yi
.. .. .. .. ..
. . . . .
g(xm ) = ym ⇐⇒ α1 ϕ1 (xm ) + α2 ϕ2 (xm ) + . . . αm ϕm (xm ) = ym
ce qui est en fait un système linéaire M α = y avec :
     
ϕ1 (x1 ) ϕ2 (x1 ) . . . ϕm (x1 ) y1 α1
 ϕ1 (x2 ) ϕ2 (x2 ) . . . ϕm (x2 )   y2 α2
    
M =  , y =  ..  et α =  .
   
.. .. .. .. ..
 . . . .   .   . 
ϕ1 (xm ) ϕ2 (xm ) . . . ϕm (xm ) ym αm
Vu sous cet angle, résoudre un problème d’interpolation revient à résoudre un système linéaire,
en particulier il faut que la matrice précédente (parfois appelée, par extension du cas polynomial,
matrice de Vandermonde) soit inversible. Une condition nécessaire pour cela est que les fonctions
ϕj soient linéairement indépendantes, c’est à dire que :
m
X m
X
αj ϕj = 0( ⇐⇒ αj ϕj (x) = 0, ∀x ∈ E) ⇐⇒ αj = 0, ∀j ∈ J1, mK
j=1 j=1

1. E est le plus souvent un intervalle [a, b] et de plus xi ∈ E, ∀i.

1
mais cette condition n’est pas suffisante pour que la matrice M soit bien inversible. L’aspect
existence et unicité des coefficients αj n’est qu’une partie des choses :
— Que choisit-on comme fonctions ϕj ?
— Peut-on jouer sur le choix des abscisses d’interpolation (leur nombre et leur position) ?
— Quel est le but du problème d’interpolation posé (on en parle tout de suite après) ? Et
va-t-on l’atteindre avec les choix fait pour les fonctions ϕj , et (peut être) pour les xi , etc.

Quelques besoins pratiques de l’interpolation


— Approcher très précisément des fonctions transcendantes comme sin, cos, arcsin, exp, log,
etc. Vous êtes vous déjà demandé comment fait votre calculatrice ou les bibliothèques stan-
dards des langages de programmation pour les calculer ? Dans la plupart des cas cela finit,
après certaines opérations 2 , par le calcul d’un polynôme d’interpolation.
Dans ce type d’application on peut en général choisir le nombre de points d’interpolation
ainsi que la position des abscisses d’interpolation et le but visé est d’offrir à l’utilisateur
une grande précision, en particulier si f est la fonction et p le polynôme qui l’approche,
on aimerait que l’erreur relative maximale ne soit pas trop grande par rapport au epsilon
machine :
∀x ∈ E : p(x) = f (x)(1 + x ) avec |x | ≤ Cu
avec par exemple C ≤ 10.
Si les fonctions transcendantes les plus utilisées ont déjà été codées et sont disponibles
dans plusieurs bibliothèques, le procédé peut néanmoins être utile si vous devez calculer de
nombreuses fois une fonction qui s’écrit à l’aide de telles fonctions élémentaires (comme sin,
exp, etc.) et si le temps de calcul pour cette fonction est crucial (applications temps réel).
On peut vouloir l’approcher directement par un polynôme d’interpolation bien choisi.
— Définir une fonction en utilisant des mesures expérimentales suffisamment précises 3 . Cela
est utile si vous avez besoin d’estimer la fonction en d’autres points que les points de mesure.
Voici un exemple où on a 6 points de mesure dont les abscisses sont dans l’intervalle [0, 1].
On veut donc définir une fonction sur l’intervale complet [0, 1] par interpolation. L’exemple
montre trois interpolants différents.

1.0 ◊ polynôme
spline cubique
0.8 ◊ spline linéaire

0.6

0.4 ◊

0.2 ◊
◊ ◊
0
0 0.2 0.4 0.6 0.8 1.0

2. Exploitation de certaines propriétés de la fonction (symétries, périodicité, etc.) de manière à réduire l’intervalle
d’approximation par un polynôme le plus possible.
3. Lorsque les mesures sont entachées d’erreur, on préfère utiliser d’autres principes d’approximation comme les
moindres carrés.

2
Rmq : dans ce cas on ne dispose pas en général du choix des xi et les abscisses sont souvent
placées de manière régulière (xi+1 − xi = ∆x constant).
Le même type de problème peut se poser en 2d (ou plus). Dans ce cas on dispose de points de
la forme ((xi , yi ), zi ) et on cherche g : E = [a, b] × [c, d] → R telle que g(xi , yi ) = zi , i = 1, . . . , m.
De même l’espace but peut être aussi de dimension 2 (ou plus). On a alors affaire à autant de
problèmes d’interpolation différents.

3.2 Interpolation polynomiale 1d


3.2.1 Fonctions polynomiales et base canonique
On note Pn l’ensemble des fonctions polynomiales de degré ≤ n :

Pn := {f ∈ F(R, R) : ∃(a0 , . . . , an ) ∈ Rn+1 avec f (x) = a0 + a1 x + . . . an xn ∀x ∈ R}

En admettant que l’ensemble F(R, R) des fonctions de R dans R est un espace vectoriel réel (ce
qui est vrai) il est alors évident que Pn en est un sous-espace vectoriel 4 car ∀p, q ∈ Pn et ∀α, β ∈ R
il est clair que αp + βq ∈ Pn (si on suppose que les “coefficients” de p sont les (a0 , . . . , an ) et ceux
de q les (b0 , . . . , bn ) alors les “coefficients” de αp + βq sont les (αa0 + βb0 , . . . , αan + βbn )).
On voit aussi que ∀p ∈ Pn , p peut s’écrire :
n
X
p= ai ei avec ei : x 7→ xi
i=0

où En := (e0 , . . . , en ) forme la base canonique de Pn . C’est la plus connue mais cette base ne se
prête pas bien aux calculs avec les flottants (dès que n est un peu grand (disons n > 3)) et d’autres
bases sont utilisées.
En fait avec la définition donnée ci-avant En apparait seulement comme une Pnfamille génératrice
i
de Pn . Pour qu’elle soit une base il faut montrer qu’elle est libre : est-ce que i=0 ai e = 0 ⇒ a0 =
· · · = an = 0 ? Réponse : oui. En effet :
n
X n
X n
X
i i
ai e = 0 ⇐⇒ ai e (x) = ai xi = 0 ∀x ∈ R
i=0 i=0 i=0

En prenant x = 0 on obtient donc que a0 = 0. Puis en dérivant on obtient que :


n
X
iai xi−1 = 0 ∀x ∈ R
i=1

De nouveau en prenant x = 0 on obtient que a1 = 0, puis en réitérant cette astuce on obtient que
tous les coefficients sont nuls. Conclusion : En est bien une base de Pn et ce dernier est donc un
espace vectoriel réel de dimension n + 1.
4. Par contre l’ensemble des fonctions polynômes de degré exactement n (ie an 6= 0) n’est pas un espace vectoriel.

3
3.2.2 Solution du problème d’interpolation dans la base canonique
Calcul des coefficients
On se donne donc n + 1 points (xi , yi ) avec des abscisses toutes distinctes (xi 6= xj si i 6= j) et
on cherche un polynôme p de Pn vérifiant les n + 1 conditions d’interpolation :

p(xi ) = yi , i ∈ J0, nK

Si on cherche p dans la base canonique on obtient donc les n + 1 équations linéaires :

a0 + a1 xi + a2 x2i + · · · + an xni = yi , i ∈ J0, nK

qui constituent un système linéaire dont les inconnues sont les coefficients aj :

x0 x20 . . . xn0
     
1 a0 y0
 1
 . x1 x21 . . . xn1   a1   y1 
 . .. .. ..   ..   .. 
 . . . . .  .
    
V a = y avec V =  , a =  et y =  .
   
 1 xi x2i . . . xni  ai  yi
 
  
 . .. .. .. ..  ..
 ..
   
. . .   .   . 
2 n
1 xn xn . . . x n an yn

On a alors existence et unicité si la matrice V est inversible. On peut montrer que le déterminant
d’une telle matrice (dite de “Vandermonde”) est égal à :
Y
det(V ) = (xj − xi )
0≤i<j≤n

et une telle matrice est donc inversible avec la condition des abscisses toutes distinctes. Cependant
on peut aussi montrer que le conditionnement de cette matrice croı̂t très rapidement avec n et
ne convient donc pas en arithmétique flottante. D’autre part, si on utilise un algorithme standard
comme Gauss, le coût du calcul des coefficients est de 13 (n + 1)3 .

Evaluation d’un polynôme en un point


Un algorithme pour évaluer p en x consisterait à écrire :

px ← a0
pour i de 1 à n
xi ← xi
px ← px + ai × xi

mais il faut préciser comment calculer xi ... On a l’algorithme de la puissance mais ici comme
on a besoin de toutes les puissances de x il suffit d’utiliser xi = x × xi−1 ce qui donne finalement :

eval poly(x, [a0 , . . . , an ]) :


px ← a0
xi ← 1
pour i de 1 à n
xi ← xi × x
px ← px + ai × xi
retourner px

4
La complexité de cet algorithme est 2n multiplications et n additions. Or on peut faire mieux
en utilisant le parenthésage suivant, explicité ci-dessous pour un polynôme de degré 4 :

p(x) = a0 + a1 x + a2 x2 + a3 x3 + a4 x4 = a0 + x(a1 + x(a2 + x(a3 + x(a4 ))))

ce qui conduit aux opérations algorithmiques suivantes :


px ← a4
px ← a3 + x × px
px ← a2 + x × px
px ← a1 + x × px
px ← a0 + x × px
et en utilisant une boucle et en généralisant à un polynôme de degré inférieur ou égal à n, on
obtient l’algorithme d’Horner :
eval poly horner (x, [a0 , . . . , an ]) :
px ← an
pour i de n − 1 à 0 par pas de −1
px ← ai + x × px
retourner px
dont la complexité est de n multiplications et n additions, on a donc gagné n multiplications.

3.2.3 Solution du problème d’interpolation dans la base de Lagrange


La base de Lagrange associée aux abscisses x0 , . . . , xn est constituée des n + 1 polynômes (de
degré exactement n) :
n  
Y x − xj
Li (x) = , i ∈ J0, nK
j=0
x i − x j
j6=i

On montre facilement qu’ils possèdent la propriété suivante :



1 pour i = j
Li (xj ) = δi,j =
0 pour i 6= j

Il est assez facile de montrer que (L0 , . . . , Ln ) est bien une base de Pn car c’est une famille libre 5 .
En effet : n n
X X
αi Li = 0 ⇐⇒ αi Li (x) = 0, ∀x ∈ R
i=0 i=0
Pn
et en prenant x = xj on obtient que αj Lj (xj ) = 0, d’où αj = 0. Ainsi i=0 αi Li = 0 ⇒ αi =
| {z }
=1
0, ∀i ∈ J0, nK.
On peut maintenant répondre à la question posée :

Théorème 1 : Il existe un unique polynôme p ∈ Pn tel que p(xi ) = yi , ∀i ∈ J0, nK et :


n
X
p= yi Li
i=0

5. Une famille libre à m vecteurs dans un e.v. de dimension m est aussi génératrice et est donc une base.

5
Preuve : Comme Li ∈ Pn ∀i, il est clair que p ∈ Pn et p vérifie bien les n + 1 conditions
d’interpolation, en effet :
n
X n
X
p(xk ) = yi Li (xk ) = yi δi,k = yk , ∀k ∈ J0, nK.
i=0 i=0

Finalement un tel polynôme est bien unique : tout polynôme q de Pn s’écrit dans la base de
Lagrange associée aux xi :
Xn
q= q(xi )Li
i=0
et donc si q vérifie les mêmes conditions d’interpolation (q(xi ) = yi ), il vient q = p (deux vecteurs
qui se décomposent de manière identique dans une même base sont égaux). 
Remarque : dans la bonne base de Lagrange (i.e. celle associée aux abscisses xi ), il n’y a pas de
coût associé à l’obtention des coefficients du polynôme d’interpolation dans cette base puisque ce
sont directement les yi (la matrice du système linéaire correspondant est la matrice identité In+1 ) !

Evaluation d’un polynôme écrit dans la base de Lagrange


Cette partie est vue en TD. On remarque alors que si le coût calcul des coefficients est nul, celui
d’une évaluation basique en un point est en O(n2 ). Malgré le désavantage de ce coût en O(n2 )
plus important que le coût d’évaluation dans la base canonique, on peut montrer que le calcul est
assez stable en arithmétique flottante.
On peut obtenir une évaluation en O(n) en factorisant certains termes 6 et aboutir à la formule
barycentrique de Lagrange (cf TD). Cette formulation reste aussi stable en arithmétique flottante
sous certaines conditions qui sont vérifiées lorsqu’on utilise les abscisses de Tchebychev (voir
plus loin). La formule barycentrique permet aussi d’utiliser des facteurs d’échelle pour éviter les
problèmes d’underflow et d’overflow.
Ainsi l’interpolation de Lagrange avec la formule barycentrique (et en utilisant les abscisses de
Tchebichev) constitue une méthode très efficace et assez simple pour approcher des fonctions assez
régulières sur un intervalle donné [a, b].

3.2.4 Base de Newton


Une autre base que celle de Lagrange est aussi couramment utilisée, il s’agit de la base de
Newton. Dans cette base (associée aux abscisses x0 , x1 , x2 , . . ., xn−1 ) un polynôme de Pn s’écrit :
p(x) = c0 + c1 (x − x0 ) + c2 (x − x0 )(x − x1 ) + · · · + cn (x − x0 )(x − x1 ) . . . (x − xn−1 )
= c0 N0 (x) + c1 N1 (x) + c2 N2 (x) + · · · + cn Nn (x)
Xn
= ci Ni (x)
i=0

où N0 (x) = 1, N1 (x) = x − x0 , N2 (x) = (x − x0 )(x − x1 ), etc. . ., soit :


i−1
Y
Ni (x) = (x − xj )
j=0
= (x − xi−1 )Ni−1 (x), si i ≥ 1.
6. Cette factorisation est en O(n2 ) et est donc “amortie” si on évalue le polynôme en de nombreux points.

6
La base de newton comporte de certains avantages :
— Evaluation rapide en un point x : on peut généraliser l’algorithme d’Horner et évaluer très
rapidement p(x) mais aussi p0 (x), p00 (x), etc.
— On peut rajouter successivements des points d’interpolation sans refaire tous les calculs.
Néanmoins l’évaluation dans cette base est moins stable que dans celle de Lagrange et il faut se
limiter à des polynômes de degré raisonnable.

3.2.5 Evaluation directe d’un polynôme d’interpolation


Lorsqu’un polynôme d’interpolation doit être évalué en un point (ou quelques points), on peut
éviter de passer par le calcul des coefficients dans une base donnée en utilisant le résultat suivant :

Théorème 2 : (Relation d’Aı̈tken) Soient α, β et x0 , x1 , . . . , xn−1 , n + 2 réels tous deux à


deux distincts. On considère les deux polynômes d’interpolation q et r de degré ≤ n associés
respectivement aux points :

{(x0 , y0 ), . . . , (xn−1 , yn−1 ), (α, a)} et {(x0 , y0 ), . . . , (xn−1 , yn−1 ), (β, b)}

alors le polynôme d’interpolation p de degré ≤ n + 1 associé aux points :

{(x0 , y0 ), . . . , (xn−1 , yn−1 ), (α, a), (β, b)}

est donné par :


(β − x)q(x) − (α − x)r(x)
p(x) = .
β−α

Preuve : cf TD. A partir de cette relation on peut construire divers algorithmes (Aı̈tken, Neville,...)
qui permettent une évaluation en O(n2 ) opérations (cf TD).

3.2.6 Convergence de l’interpolation


L’espace des fonctions continues sur un intervalle [a, b]
L’ensemble des fonctions continues sur un intervalle [a, b] noté C([a, b], R) est un espace vectoriel
que l’on peut voir comme un s.e.v. de l’e.v. des fonctions de [a, b] dans R. En effet si f et g sont
deux telles fonctions et α, β deux réels quelconques, alors la fonction h := αf + βg est aussi
continue.
Comme pour tout e.v. il est interessant de le munir d’une norme et on peut montrer assez
facilement que :
kf k∞ := max |f (x)|
x∈[a,b]

est bien une norme sur C([a, b], R). De plus l’e.v.n. ainsi obtenu est complet : toute suite de
Cauchy (fk ) de fonctions de C([a, b], R) converge bien vers une fonction continue. Ainsi on pourra
mesurer la distance entre deux fonctions de C([a, b], R) par d(f, g) := kf − gk∞ et c’est ce que
nous utiliserons dans la suite.
Remarque : on peut aussi montrer que :
Z b  12
2
kf k2 := (f (x)) dx
a

7
est une norme mais C([a, b], R) muni de celle-ci n’est pas complet.
Un autre résultat intéressant est que toute fonction de C([a, b], R) peut être approchée d’aussi
près que l’on veut par un polynôme que l’on peut même construire explicitement :

Théorème 3 : ∀f ∈ C([0, 1], R), la suite de polynômes (Bn (f )) définis par :


n  
X j
Bn (f )(x) := f Bn,j (x), où Bn,j (x) = Cnj xj (1 − x)n−j
j=0
n

vérifie :
lim kBn (f ) − f k∞ = 0
k→∞

Preuve : admise. Remarques :

— Pour construire un polynôme qui approche une fonction de C([a, b], R) il suffit d’utiliser la
transformation affine bijective suivante :

C([a, b], R) → C([0, 1], R)


g 7→ f avec f (x) := g(a(1 − x) + bx), ∀x ∈ [0, 1]

— Le défaut de cette approche est que pour obtenir une précision  (c’est à dire trouver
le polynôme Bn (f ) vérifiant kBn (f ) − f k∞ ≤ ) il faut généralement que n soit grand,
voire très grand et ceci même pour une fonction f très régulière. Ainsi ce beau résultat
mathématique est décevant en pratique, du moins pour l’approximation de fonctions (voir
remarque suivante).
— Pour n fixé, les n + 1 polynômes Bn,j , j = 0, . . . , n forment une base de Pn appelée base
de Bernstein. Ces polynômes sont utilisés pour construire les fameuses courbes de Bézier
utilisées en CAO.

Erreur d’interpolation
On va à présent analyser l’erreur que l’on commet lorsqu’on remplace une fonction f par son
polynôme d’interpolation p associé aux points {x0 , . . . , xn } distincts. Le théorème suivant fournit
une estimation de la différence.

Théorème 4 : Erreur d’interpolation : soit f une fonction (n + 1) fois dérivable et soit p son
polynôme d’interpolation dans Pn associé aux points x0 , . . . , xn distincts. Alors pour tout x ∈ R,
il existe un réel θx ∈] min(x, xi ), max(x, xi )[ tel que
n
1 Y
f (x) − p(x) = Πn+1 (x) f (n+1) (θx ), avec Πn+1 (x) = (x − xi ).
(n + 1)! i=0

Preuve : Si x = xi , alors Πn+1 (x) = 0 et la formule est juste. Fixons à présent x 6= xi ∀i et


considérons q le polynôme d’interpolation de f en x, x0 , . . . , xn . On a évidemment f (x) − p(x) =
q(x) − p(x) et q − p est un polynôme de degré ≤ n + 1 qui s’annule auxQ (n + 1) points x0 , . . . , xn .
Par conséquent, il existe une constante α telle que q(t) − p(t) = α ni=0 (t − xi ) = αΠn+1 (t),
1
pour tout t ∈ R. Il reste à montrer que α = f (n+1) (θx ). Posons r(t) = f (t) − q(t) =
(n + 1)!
f (t) − p(t) − αΠn+1 (t). On remarque que la fonction r s’annule (n + 2) fois en x, x0 , x1 , . . . , xn .
En appliquant (n + 1) fois le théorème de Rolle, on en déduit que la dérivée r0 s’annule (n + 1)

8
fois dans l’intervalle I =] min(x, xi ), max(x, xi )[. On peut à nouveau appliquer n fois le théorème
de Rolle et ainsi de suite ... De cette façon, en appliquant par récurrence le théorème de Rolle, on
obtient que la (n + 1)-ième dérivée r(n+1) s’annule une fois dans I, c’est-à-dire qu’il existe θx ∈ I
tel que r(n+1) (θx ) = 0. On en déduit que
(n+1)
0 = r(n+1) (θx ) = f (n+1) (θx ) − p(n+1) (θx ) − αΠn+1 (θx ).

(n+1) 1
Or p(n+1) ≡ 0 car deg(p) ≤ n et Πn+1 ≡ (n + 1)!. On obtient donc α = f (n+1) (θx ) ce qui
(n + 1)!
prouve le théorème. 

Problème de la convergence de l’interpolation


On a vu précédemment qu’on pouvait estimer l’erreur entre une fonction f et son polynôme
d’interpolation. La question qu’on se pose à présent est de savoir si, sur un intervalle [a, b] donné
l’erreur d’interpolation diminue lorsqu’on augmente le nombre n de points d’interpolation et à la
limite quand n tend vers l’infini, est-ce-que p converge (en un sens à préciser) vers f ? Commençons
par étudier le cas de points d’interpolation répartis (presque 7 ) de manière quelconque à savoir :

a = x0 < x1 < · · · < xn = b

D’après le théorème précédent, on a :


1
max |f (x) − p(x)| ≤ max |Πn+1 (x)| max f (n+1) (x) .
x∈[a,b] (n + 1)! x∈[a,b] x∈[a,b]

On peut alors montrer (cf futur exercice ?) l’estimation suivante sur |Πn+1 (x)| :

max |Πn+1 (x)| = hn+1 n! où h = max hi , hi = xi+1 − xi


x∈[a,b] i

On obtient donc alors la majoration de l’erreur d’interpolation suivante :


hn+1
max |f (x) − p(x)| ≤ max f (n+1) (x) .
x∈[a,b] n + 1 x∈[a,b]
En particulier si on choisit une répartition uniforme (h = (b − a)/n) ce qui semble être un choix
“raisonnable”, on a :
 n+1
1 b−a
max |f (x) − p(x)| ≤ max f (n+1) (x) .
x∈[a,b] (n + 1) n x∈[a,b]

 n+1
1 b−a
Il est clair que −→ 0 quand n → +∞ et cette convergence vers 0 est même
(n + 1) n
très rapide. Par exemple, prenons un intervalle de longueur b − a = 10, on obtient :

n 5 10 15 20 25 30
1
( b−a )n+1
(n+1) n
1.067 101 9.091 10−2 9.515 10−5 2.271 10−8 1.732 10−12 5.223 10−17

On serait donc tenté de penser que l’erreur tend vers 0 quand n → +∞. Mais attention car
la (n + 1)-ième dérivée de f dépend de n et en fait peut croı̂tre très rapidement avec n et pour
7. On impose juste que les deux extrémités correspondent à des points d’interpolation.

9
certaines fonctions, p ne converge pas vers f lorsque n tend vers +∞. L’exemple suivant illustre
une telle situation de non-convergence.

Exemple : (Runge)
1
On considère la fonction f (x) = sur l’intervalle [−5, 5]. On note pn le polynôme d’inter-
1 + x2
polation de f aux n + 1 points équidistants dans l’intervalle [−5, 5]. On observe alors (cf.
Figure
(n)
3.1) quand n augmente, des problèmes aux extrémités de l’intervalle. En fait f (5) devient

rapidement grand avec n. On montre que pour |x| ≥ 3.83 · · · , on a |f (x) − p(x)| → +∞ quand
n → +∞. 

n=10 n=20
2.1 10

f
0
1.7

-10
1.3
p10 -20
0.9
-30 p
20
0.5
-40

0.1
-50
f
-0.3 -60
-5 -4 -3 -2 -1 0 1 2 3 4 5 -5 -4 -3 -2 -1 0 1 2 3 4 5

Figure 3.1 – Phénomène de Runge : “explosion” de l’interpolation polynomiale avec points


équidistants

Nous venons de voir que la convergence du polynôme d’interpolation vers une fonction f n’est pas
assurée lorsqu’on choisit les points d’interpolation répartis de façon uniforme dans un intervalle
fermé borné. Mais existe-t-il une répartition (évidemment non uniforme) des points d’interpolation
pour laquelle il y aurait convergence ? Une réponse est fournie par les abscisses de Tchebichev.
Sans rentrer dans les détails et en considérant que l’intervalle sur lequel on veut approcher une
fonction est [−1, 1], le polynôme de Pn+1 (de la forme de Πn+1 ) qui minimise :

kΠn+1 k∞ = max |Πn+1 (x)| .


x∈[−1,1]

est appelé polynôme de Tchebichev et ses n + 1 racines sont données par :


 
(2i + 1)π
xi = cos , i ∈ J0, nK
2(n + 1)

On peut voir que celles-ci sont plus denses aux extrémités de l’intervalle (−1 et 1) et sont réparties
symétriquement autour de 0 (car xn−i = −xi ).
Pour calculer les abscisses de Tchebichev d’un intervalle quelconque [a, b] il suffit d’utiliser la
transformation affine :
b−a a+b
[−1, 1] 3 x 7−→ X = x+ ∈ [a, b]
2 2
En particulier l’exemple précédent avec la fonction de Runge converge si on utilise cette
répartition. D’une manière générale les polynômes d’interpolation construits avec les abscisses
de Tchebichev convergent vers f avec peu de restrictions :

10
Théorème 5 : Si f est absolument continue sur l’intervalle [a, b] alors la séquence des polynômes
d’interpolation pn construits avec la répartition de Tchebichev converge uniformément vers f , c’est
à dire :
lim kf − p k =0
n→+∞ | {z n ∞}
=maxx∈[a,b] |f (x)−pn (x)|

Une fonction f est absolument continue sur un intervalle [a, b] si et seulement s’il existe une
fonction g intégrable (au sens de Lebesgue) sur [a, b] telle que :
Z x
f (x) − f (a) = g(t)dt, ∀x ∈ [a, b]
a

En particulier si f est dérivable sur [a, b] elle est absolument continue sur [a, b].

Un exemple
2
On cherche à approcher la fonction par interpolation f (t) = 1 + 0.5e−t cos(πt) sur [−3, 3].
Profitant de la parité de cette fonction, les calculs se font sur [0, 3]. Dans cet exemple on utilise les
abscisses de Tchebichev et la formule barycentrique de Lagrange. Avec 20 points d’interpolation
on obtient une précision relative inférieure à 10−4 et on obtient presque la précision machine avec
45 points d’interpolation.

1.5 n =20
1.4
1.3
f(t) =1 +0.5e−t2 cos(πt)
1.2 pn (t)
1.1
1.0
0.9
0.8
0.7
0.6
0.0 0.5 1.0 1.5 2.0 2.5 3.0

10-4

10-5

10-6
er(t)

10-7

10-8

10-90.0 0.5 1.0 1.5 2.0 2.5 3.0


t

11
1.6 n =45
1.4 f(t) =1 +0.5e−t2 cos(πt)
1.2
pn (t)
1.0

0.8

0.6
0.0 0.5 1.0 1.5 2.0 2.5 3.0

10-14
er(t)

10-15

10-160.0 0.5 1.0 1.5 2.0 2.5 3.0


t

3.2.7 Interpolation de Lagrange-Hermite


Dans certains problèmes, on est amené à chercher un polynôme qui interpole une fonction f en
des points donnés (interpolation de Lagrange) ainsi que les dérivées en ces points (pentes données).
C’est l’interpolation de Lagrange-Hermite. Plus précisement, on se donne des triplets (xi , yi , yi0 ),
pour i = 0, . . . , n, où yi = f (xi ) et yi0 = f 0 (xi ) sont connus (f 0 désigne la dérivée de f ). On cherche
alors un polynôme p (polynôme d’interpolation de Lagrange-Hermite) tel que :

p(xi ) = yi
p0 (xi ) = yi0 , pour i = 0, . . . , n.

On voit clairement qu’on dispose de 2(n + 1) équations. Il faut donc 2(n + 1) inconnues et par
conséquent on cherche un polynôme de degré ≤ 2n + 1.
Le polynôme d’interpolation de Lagrange-Hermite est donné par
n
X n
X
p(x) = yi Hi (x) + yi0 Ki (x), (3.1)
i=0 i=0

où les polynômes de Lagrange-Hermite Hi et Ki sont définis par

Hi (x) = (1 − 2(x − xi )L0i (xi )) L2i (x),


Ki (x) = (x − xi )L2i (x)

et ceci pour i = 0, . . . , n. On vérifie que Hi et Ki sont bien des polynômes de degré 2n + 1.


On peut montrer le résultat d’erreur suivant (assez conforme à celui obtenu pour l’interpolation
simple) :

Théorème 6 : Erreur d’interpolation (Lagrange-Hermite) : soit f une fonction (2n + 2) fois


dérivable et soit p son polynôme d’interpolation de Lagrange-Hermite dans P2n+1 associé aux

12
points x0 , . . . , xn distincts. Alors pour tout x ∈ R, il existe un réel θx ∈] min(x, xi ), max(x, xi )[
tel que
n
1 Y
f (x) − p(x) = Π2 (x) f (2n+2) (θx ), avec Πn+1 (x) = (x − xi ).
(2n + 2)! n+1 i=0

3.3 Interpolation polynomiale par morceaux 1d


Si l’interpolation polynomiale avec abscisses de Tchebichev est un puissant moyen d’approxi-
mation elle ne répond pas à tous les besoins car avec des données expérimentales :
— les abscisses ne suivent généralement pas une telle répartition ;
— il y a des erreurs de mesures.
Lorsque les erreurs de mesure sont importantes il vaut d’ailleurs mieux ne pas interpoler (cf chapitre
suivant) mais même avec des erreurs faibles, utiliser un même polynôme sur tout l’intervalle n’est
souvent pas adapté. Une alternative est alors d’utiliser plusieurs polynômes et la plus simple
d’entre-elles est la ligne brisée.

3.3.1 La ligne brisée (interpolation affine par morceaux)


Ce procédé consiste à relier deux points d’interpolation consécutifs par un segment de droite :

y1 •

y0 •

x0 x1 x2 x3 x4

Sur chaque intervalle Ik := [xk−1 , xk ] il s’agit donc d’interpoler par un polynôme pk ∈ P1 , ce


qui donne :
    
 yk−1 x − x k x − x k−1
+ yk sous la forme “Lagrange”

xk−1 − xk  xk − xk−1

pk (x) =
yk − yk−1
 yk−1 + (x − xk−1 ) sous la forme “Newton”


xk − xk−1

Etant donné x il suffit donc de repérer 8 l’intervalle Ik = [xk−1 , xk ] qui contient x puis d’utiliser
l’une de ces deux formules. Si on suppose que l’on approche une fonction f sur un intervalle [a, b]
par ce procédé en utilisant n sous-intervalles a = x0 < x1 < · · · < xn = b (on notera Xn la
subdivision x0 , x1 , . . . , xn et donc yk = f (xk )) que peut-on attendre comme précision (pour une
fonction suffisamment régulière) ? La réponse est assez simple. Sur l’intervalle Ik en utilisant le
théorème sur l’erreur d’interpolation, on obtient que 9 :
1
max |f (x) − pk (x)| ≤ max |(x − xk−1 )(x − xk )| max |f 00 (x)|
x∈Ik 2 x∈Ik x∈Ik

8. Par dichotomie par exemple, cf TD.


9. Si f est deux fois continûment dérivable sur [a, b].

13
Il est facile de voir que le maximum de la fonction x 7→ |(x − xk−1 )(x − xk )| est obtenu pour
x = xk−12+xk ce qui nous donne :
h2k
max |f (x) − pk (x)| ≤ max |f 00 (x)| où hk = xk − xk−1
x∈Ik 8 x∈Ik
et donc en notant pf,Xn l’interpolant ainsi construit on obtient :
h2
max |f (x) − pf,Xn (x)| ≤ max |f 00 (x)| où h = max hk
x∈[a,b] 8 x∈[a,b] k

Si on prend une subdivision régulière h = (b − a)/n il est clair que le procédé converge et que
lorsque l’on double le nombre d’intervalles la majoration d’erreur précédente est divisée par 4.
C’est en général beaucoup moins rapide que si on interpole avec un polynôme avec abscisses de
Tchebichev mais il y a une certaine souplesse, en particulier au lieu de prendre une subdivision
uniforme on a tout intérêt à resserrer les abscisses d’interpolation là où la dérivée seconde de f
est grande en module.

L’interpolation affine par morceaux comme un sous-espace vectoriel de fonctions


Supposons que l’on fixe les abscisses Xn = {x0 , x1 , . . . , xn } et que l’on définisse l’ensemble
des fonctions continues sur [a, b] (noté C([a, b], R)) dont la restriction sur chaque sous-intervalle
Ik = [xk−1 , xk ], k = 1, . . . , n est un polynôme de degré inférieur ou égal à 1 :
S1Xn = {f ∈ C([a, b], R) : f|Ik ∈ P1 }
En fait il s’agit de l’ensemble des “lignes brisées” que l’on peut obtenir avec ces abscisses fixes.
Une fonction s de cet ensemble est uniquement déterminée par les valeurs (yk )k∈J0,nK de s en les
abscisses (xk )k∈J0,nK : yk = s(xk ). Il est aisé de remarquer que c’est un sous-espace vectoriel (de
C([a, b], R)). En effet si on multiplie une fonction de S1Xn par un scalaire α on reste bien dans cet
ensemble et de même si on additionne deux fonctions de S1Xn . On doit donc pouvoir exhiber une
base avec a priori n + 1 éléments. La base la plus naturelle est celle dont “les degrés de liberté”
(yk )k∈J0,nK (qui fixent une fonction s donnée de S1Xn ) vont en être les coordonnées. On va montrer
que :
Xn
s(x) = yi ϕi (x), ∀x ∈ [a, b] (3.2)
i=0
où les ϕi sont appelées fonctions “chapeaux” et sont données par :

 0
 si x ∈
/ [xi−1 , xi+1 ]
x−xi−1
ϕi (x) = xi −xi−1
si x ∈ [xi−1 , xi ] (3.3)
x−x i+1
si x ∈ [xi , xi+1 ]


xi −xi+1

avec deux exceptions pour i = 0 et i = n où l’on a juste une moitiée de chapeau :

1 ϕ0 ϕi ϕn

x0 (= a) x1 xi−1 xi xi+1 xn−1 xn (= b)

14
Rmq : on a légèrement décalé le zéro pour ϕj (légèrement au-dessus) et ϕn (légèrement au dessous)
de manière à ne pas superposer les couleurs.

Preuve : ∀x ∈ [a, b], ∃k ∈ J1, nK tel que x ∈ Ik . Si on regarde la définition des fonctions chapeaux,
seules ϕk−1 et ϕk sont non nulles sur ce sous-intervalle et la somme dans l’expression (3.2) se réduit
donc aux deux termes :
s(x) = yk−1 ϕk−1 (x) + yk ϕk (x)
Toujours d’après (3.3), on obtient, pour x ∈ [xk−1 , xk ] :
x − xk
ϕk−1 (x) =
xk−1 − xk
x − xk−1
ϕk (x) =
xk − xk−1
d’où finalement pour x ∈ [xk−1 , xk ] :
x − xk x − xk−1
s(x) = yk−1 + yk
xk−1 − xk xk − xk−1
qui correspond bien l’interpolation affine des points (xk−1 , yk−1 ) et (xk , yk ) 

Une autre façon de déterminer cette base est de montrer que l’application A qui à (yk )k∈J0,nK ∈
Rn+1
associe s ∈ S1Xn est un isomorphisme d’espaces vectoriels. La base des fonctions chapeaux
est alors obtenue comme l’image de la base canonique de Rn+1 par A : ϕi est la fonction de S1Xn
qui vaut 1 en xi et 0 sur les autres noeuds.
S’il est inutile de mettre en évidence cette base des fonctions chapeaux pour faire de
l’interpolation cela est par contre indispensable lorsqu’on veut approcher des données
par moindres carrés (cf chapitre suivant).

3.3.2 L’interpolation de Lagrange par morceaux


Une façon de généraliser une ligne brisée est de faire passer un polynôme de P2 par les points
(x0 , y0 ), (x1 , y1 ), (x2 , y2 ) puis un autre polynôme de P2 par les points (x2 , y2 ), (x3 , y3 ), (x4 , y4 ),
etc. . .En utilisant les mêmes données que dans l’exemple de la ligne brisée on obtient :

y1 •

y0 •

x0 x1 x2 x3 x4

ce qui met bien en évidence le défaut de cette approche : l’interpolant n’est pas dérivable en x2 qui
est le noeud intermédiaire entre les deux polynômes. Un autre défaut est que le nombre de points
d’interpolation doit être impair 10 ou alors l’un des morceaux doit être un segment de droite. Bref
ce type d’approximation n’est généralement pas utilisé pour interpoler des points donnés (mais
peut être utile pour d’autres besoins).
10. Si on utilise des polynômes de P3 il faut que le nombre de points soit en 3m + 1, etc...

15
3.3.3 L’interpolation par fonctions splines
Dans ce cours paragraphe nous allons survoler ce domaine très important qui a de nombreuses
applications non seulement en mathématiques appliquées mais aussi en CAO. Un point de vue qui
permet d’aborder les splines est de construire des fonctions polynomiales par morceaux mais avec
des raccords plus réguliers que l’interpolation de Lagrange par morceaux.
Une première méthode pour construire une telle fonction polynomiale par morceaux est d’utiliser
un polynôme de Lagrange-hermite (avec n = 1) sur chaque segment Ik ce qui va permettre d’obtenir
une fonction continûment dérivable. Ce point de vue est développé dans l’exercice 2 de la feuille
5. Ce procédé est pratique mais assez limité, les splines permettant d’aller beaucoup plus loin.

Définition des espaces de splines


On se donne un intervalle [a, b] et une subdivision Xn = {x0 , x1 , . . . , xn } avec a = x0 < x1 <
· · · < xn = b. L’espace SkXn des fonctions splines de degré k 11 définies sur [a, b] muni de la
subdivision Xn est :
SkXn = {f ∈ C (k−1) ([a, b], R) : f|Ij ∈ Pk }
c’est à dire est formé sur chaque intervalle Ij := [xj , xj+1 ] d’un polynôme de degré inférieur ou
égal à k et ses polynômes se “raccordent” (au moins) jusqu’à l’ordre k − 1 en chaque noeud interne
x1 , x2 , . . ., xn−1 . Si on appelle pj := f|Ij alors les conditions de raccords s’énoncent :
(`) (`)
pj (xj+1 ) = pj+1 (xj+1 ), j ∈ J0, n − 2K, ` ∈ J0, k − 1K (3.4)

On a déjà rencontré un tel espace : les lignes brisées qui sont des splines de degré 1. Comme
pour les lignes brisées il n’est pas obligatoire d’exhiber une base d’un tel espace pour faire de
l’interpolation, par exemple l’exercice 4 de la feuille 5 propose une méthode pour construire une
spline cubique (i.e. de degré 3) d’interpolation.
Il est assez simple de voir que SkXn est un espace vectoriel. On peut aussi deviner sa dimension
avec les arguments suivants 12 :
— on a donc n polynômes (il y a n intervalles) de degré ≤ k soit n × (k + 1) coefficients ;
— cependant ces n × (k + 1) coefficients ne peuvent pas être choisis de manière quelconque car
il faut respecter les (n − 1) × k conditions de raccords.
On en déduit donc que :

dim(SkXn ) = n × (k + 1) − (n − 1) × k = n + k

Bases des espaces de splines


Pour l’espace des lignes brisées on a vu que la “bonne” base est celle des fonctions chapeaux.
Cependant dès que k ≥ 2 il est plus difficile de trouver une “bonne base” de SkXn . Au tout début
de l’étude de ces espaces de fonctions on a mis en évidence qu’une base de SkXn est formée des
fonctions suivantes :

{e : x 7→ 1, e1 : x 7→ x − a, . . . , ek : x 7→ (x − a)k } ∪{gj : x 7→ (x − xj )k+ , j = 1, . . . , n − 1}


| 0 {z }
base canonique “décalée” de Pk
11. On dit aussi splines d’ordre k + 1.
12. Ce raisonnement “empirique” peut être rendu rigoureux. . .

16
où la notation + désigne la partie positive d’une fonction ( (f (x))+ = f (x) si f (x) ≥ 0 et (f (x))+ =
0 sinon) et donc : 
k 0 pour x < xj
(x − xj )+ := k
(x − xj ) pour x ≥ xj
C’est un bon exercice de voir que ces n + k fonctions sont bien dans l’espace SkXn (en particulier
tout polynôme de Pk est bien dans SkXn , dans ce cas les noeuds internes ne sont pas “actifs”, c’est
à dire qu’il n’y a pas de discontinuité dans la k ème dérivée) et qu’elles forment une famille libre
(et donc une base puisque le nombre de fonctions est égal à la dimension de l’espace). Cependant
cette base est très mauvaise pour les calculs en arithmétique flottante.
Les “bonnes” bases de ces espaces sont formées de splines particulières appelées B-splines et
dans le cas de S1Xn se sont exactement les fonctions chapeaux. Si on réexamine ces fonctions on
remarque qu’elles possèdent les propriétés suivantes :
1. ϕj est non nulle uniquement sur l’intervalle [xj−1 , xj+1 ] sur lequel elle est positive ;
Pn
2. j=0 ϕj (x) = 1, ∀x ∈ [a, b].
Avant d’aller plus loin notons que s’il est naturel de “centrer” ϕj en xj , cela ne l’est plus à partir
de k ≥ 2 et la tradition est de numéroter une fonction B-spline avec le numéro du noeud à partir
duquel elle devient non nulle. Avec cette convention, on note Bi1 := ϕi+1 et dans ce cas le “support”
de Bi1 est [xi , xi+2 ]. Cependant ceci ne fonctionne pas “tel que” pour les fonctions chapeaux des
deux extrémités :
1
1. B−1 = ϕ0 a comme support [x0 , x1 ] (et pas [x−1 , x1 ])
1
2. Bn−1 = ϕn a comme support [xn−1 , xn ] (et pas [xn−1 , xn+1 ])
Et il est donc naturel de rajouter des noeuds a priori en dehors de l’intervalle [a, b] de manière
à avoir une sorte d’uniformité dans la définition des B-splines. Par exemple pour les fonctions
chapeaux :

1 1 1
B−1 Bi1 Bn−1

x−1 x0 (= a) x1 xi xi+1 xi+2 xn−1 xn (= b) xn+1

Ainsi la définition des B-splines de degré k se fait sur ce même modèle :


1. on rajoute k noeuds x−k , . . . , x−1 à gauche de a et k noeuds xn+1 , . . . , xn+k à droite de b ;
2. on définit alors n + k fonctions Bik , i = −k, . . . , n − 1 ; le support de Bik étant [xi , xi+k+1 ],
cette fonction devant être positive sur cet intervalle ;
3. elles vérifient la propriété :
n−1
X
Bik (x) = 1, ∀x ∈ [a, b]
i=−k

On montre que les n + k B-splines de degré k peuvent être définies à partir des n + k + 1
B-splines de degré k − 1 que l’on peut définir à partir des noeuds x−k , . . . , xn+k par la relation :
x − xi xi+k+1 − x k−1
Bik (x) = Bik−1 (x) + B (x), i = −k, . . . , n − 1 (3.5)
xi+k − xi xi+k+1 − xi+1 i+1

17
Par exemple pour obtenir les B-splines quadratiques (k = 2), on rajoute deux noeuds x−2 et
x−1 à gauche de a et deux autres xn+1 et xn+2 à droite de b. On peut alors définir n + 3 fonctions
chapeaux :
si x ∈

 0 / [xi , xi+2 ]
x−xi
1
Bi (x) = −xi
pour x ∈ [xi , xi+1 ] i = −2, . . . , n
 xi+1
xi+2 −x
xi+2 −xi+1
pour x ∈ [x i+1 , xi+2 ]
qui permettent alors de définir à l’aide de (3.5) les n + 2 fonctions B-splines qui forment une base
de S2 . Pour Bi2 , on utilise donc Bi1 et Bi+1
1
:
1. sur [xi , xi+1 ] seule Bi1 est non nulle , (3.5) donne :

x − xi x − xi (x − xi )2
Bi2 (x) = = , x ∈ [xi , xi+1 ]
xi+2 − xi xi+1 − xi (xi+2 − xi )(xi+1 − xi )

2. sur [xi+1 , xi+2 ] :


x − xi xi+2 − x xi+3 − x x − xi+1
Bi2 (x) = +
xi+2 − xi xi+2 − xi+1 xi+3 − xi+1 xi+2 − xi+1
1
3. et sur [xi+2 , xi+3 ] seule Bi+1 est non nulle, ce qui donne :

xi+3 − x xi+3 − x (xi+3 − x)2


Bi2 (x) = =
xi+3 − xi+1 xi+3 − xi+2 (xi+3 − xi+1 )(xi+3 − xi+2 )

18

Vous aimerez peut-être aussi