Vous êtes sur la page 1sur 12

0.1.

SPLINES CUBIQUES 1
f(x
2
)
f(x4)
f(x
1
)
f(x3)
f(x
0
)
x
0
x
1
x
2
x
3
x
4
Figure 1 Interpolation lineaire par morceaux
0.1 Splines cubiques
Dans bon nombre dapplications, il est imperatif dobtenir des courbes tr`es re-
guli`eres passant par un grand nombre de points. Cest le cas en conception assistee
par ordinateur (CAO), o` u lon cherche `a representer des objets aux formes lisses.
Nous avons dej`a constate que lutilisation de polynomes de degre eleve est delicate
et m`ene parfois `a des oscillations de grande amplitude. Les polynomes de degre eleve
sont alors peu adequats.
On peut mesurer la regularite dune fonction par le biais de ses derivees. En eet,
plus une fonction est dierentiable, plus la courbe qui lui est associee est lisse et plus
la fonction est reguli`ere. Le probl`eme, lorsque lon utilise des polynomes de faible
degre, provient du fait quil faut en utiliser plusieurs pour relier tous les points. Cest
le cas de linterpolation lineaire par morceaux, illustree `a la gure 1, qui consiste `a
relier chaque paire de points par un segment de droite. On utilise aussi lappellation
splines lineaires. On imagine assez mal comment une telle courbe pourrait permettre
de faire la conception dune carrosserie de voiture ou dune aile davion. Il faut donc
etre plus prudent `a la jonction des dierents segments de courbe. La spline lineaire
est continue mais nest pas derivable et nous allons maintenant montrer que lon
peut faire beaucoup mieux.
Les splines cubiques representent un compromis tr`es interessant entre la regula-
rite de la courbe obtenue et le degre des polynomes utilises. Nous etudierons dans
un premier temps les courbes de la forme y = f(x) et par la suite nous verrons
comment aborder les courbes parametrees.
0.1.1 Courbes de la forme y = f(x)
On consid`ere donc, ici encore, (n + 1) points dinterpolation (x
i
, f(x
i
)), i =
0, 1, 2, , n par lesquels on souhaite faire passer une courbe autant de fois die-
2
p0(x)
f(x
2
)
f(x
3
)
f(x
1
)
f(x0)
p
1
(x)
p2(x)
p
3
(x)
x1 x2 x3 x4 x0
f(x
4
)
Figure 2 Splines cubiques : n polynomes de degre 3
rentiable que possible. Dans chaque intervalle [x
i
, x
i+1
] (de longueur h
i
= x
i+1
x
i
),
nous allons utiliser un polynome de degre 3 de la forme :
p
i
(x) = f
i
+f

i
(xx
i
) +
f

i
2!
(xx
i
)
2
+
f

i
3!
(xx
i
)
3
pour i = 0, 1, 2, , n1 (1)
et relier ces dierents polynomes de facon `a ce que la courbe resultante soit deux fois
dierentiable. La situation est decrite `a la gure 2 pour n = 4. Cest linterpolation
par splines cubiques. On remarque que chacun de ces polynomes se presente commme
un developpement de Taylor autour du point x
i
. Ce nest nullement obligatoire mais
cette forme permet dinterpreter plus facilement les coecients `a determiner f
i
,
f

i
, f

i
et f

i
qui sont alors respectivement les valeurs de la spline et de ses trois
premi`eres derivees en x
i
. On constate en eet facilement que p
i
(x
i
) = f
i
, p

i
(x
i
) = f

i
p

i
(x
i
) = f

i
et enn p

i
(x
i
) = f

i
.
Puisque lon a (n + 1) points dinterpolation, il y a n intervalles [x
i
, x
i+1
] qui
resultent en 4n coecients inconnus (f
i
, f

i
, f

i
et f

i
pour i = 0, 1, 2, , n 1).
Ces 4n coecients doivent etre determines le plus ecacement possible pour que la
methode reste attrayante. Comme nous allons le constater, une resolution astucieuse
conduit `a un syst`eme lineaire tridiagonal de dimension (n+1) qui pourra etre resolu
par lalgorithme decrit `a la section ??. Nous allons en eet exprimer toutes ces
inconnues en fonction des derivees secondes f

i
aux noeuds. On compl`ete donc notre
ensemble dinconnues en introduisant la derivee seconde f

n
au noeud x
n
de sorte que
nous aurons un grand total de 4n + 1 inconnues que nous reduirons en un syst`eme
de dimension n + 1.
Voyons combien de conditions ou dequations nous pouvons imposer `a ces 4n+1
coecients. Ces equations proviennent des conditions de regularite que lon souhaite
imposer `a la courbe resultante.
On denit tout dabord que f

n
est tout simplement la derivee seconde de la
0.1. SPLINES CUBIQUES 3
spline en x
n
. On a ainsi une premi`ere equation :
f

n
= p

n1
(x
n
) = f

n1
+ f

n1
(x
n
x
n1
) = f

n1
+ f

n1
h
n1
qui peut aussi secrire :
f

n1
=
f

n
f

n1
h
n1
(2)

`
A sa premi`ere extremite, le polynome p
i
(x) passe (x
i
, f(x
i
)), cest-`a-dire :
p
i
(x
i
) = f
i
= f(x
i
) pour i = 0, 1, 2, , n 1
ce qui nous donne n equations ;
De meme, on obtient n nouvelles equations en regardant `a la deuxi`eme extre-
mite de chaque sous-intervalle. Pour i = 0, 1, 2, , n 1 :
p
i
(x
i+1
) = f(x
i+1
) = f
i
+ f

i
(x
i+1
x
i
) +
f

i
2!
(x
i+1
x
i
)
2
+
f

i
3!
(x
i+1
x
i
)
3
= f(x
i
) + f

i
h
i
+
f

i
2!
h
2
i
+
f

i
3!
h
3
i
On peut ainsi isoler f

i
pour obtenir :
f

i
=
f(x
i+1
) f(x
i
)
h
i

i
2!
h
i

f

i
3!
h
2
i
= f[x
i
, x
i+1
]
f

i
2!
h
i

f

i
3!
h
2
i
(3)
On impose maintenant la continuite des derivees secondes aux (n1) noeuds
interieurs x
i+1
, i = 0, 1, , n 2, cest-`a-dire n 1 nouvelles equations :
p

i+1
(x
i+1
) = p

i
(x
i+1
)
ou encore :
f

i+1
= f

i
+ f

i
(x
i+1
x
i
) = f

i
+ f

i
h
i
et en isolant f

i
, on trouve :
f

i
=
f

i+1
f

i
h
i
(4)
Cette relation nest a priori vraie que pour i = 0, 1, n 2. En vertu de
lequation 2, elle est egalement vraie pour i = n 1 de sorte que lon peut
remplacer dans lequation 3 qui devient :
f

i
= f[x
i
, x
i+1
]
f

i
2!
h
i

_
f

i+1
f

i
3!
_
h
i
et par la suite :
f

i
= f[x
i
, x
i+1
]
h
i
f

i
3

h
i
f

i+1
6
(5)
4
Il ne reste plus qu`a imposer la continuite de la derivee premi`ere aux memes
(n 1) points interieurs ((n 1) nouvelles equations) :
p

i+1
(x
i+1
) = p

i
(x
i+1
)
ou encore :
f

i+1
= f

i
+ f

i
h
i
+
f

i
2
h
2
i
On peut ensuite utiliser les expressions 4 et 5 pour tout exprimer en fonction des
inconnues f

i
. On a alors :
f[x
i+1
, x
i+2
]
h
i+1
f

i+1
3

h
i+1
f

i+2
6
= f[x
i
, x
i+1
]
h
i
f

i
3

h
i
f

i+1
6
+f

i
h
i
+
_
f

i+1
f

i
2
_
h
i
qui devient, en regroupant les termes :
h
i
f

i
+ 2(h
i
+ h
i+1
)f

i+1
+ h
i+2
f

i+2
= 6(f[x
i+1
, x
i+2
] f[x
i
, x
i+1
])
Une derni`ere simplication est possible si lon divise chaque terme de cette derni`ere
equation par :
h
i
+ h
i+1
= x
i+1
x
i
+ x
i+2
x
i+1
= x
i+2
x
i
ce qui donne :
h
i
(h
i
+ h
i+1
)
f

i
+ 2f

i+1
+
h
i+1
(h
i
+ h
i+1
)
f

i+2
= 6f[x
i
, x
i+1
, x
i+2
]
pour i = 0, 1, 2, , n 2
(6)
On remarque que le terme de droite fait intervenir les deuxi`emes dierences divisees
que nous avons denies `a la section ??. Dans le cas o` u les abscisses sont equidistantes,
cest-`a-dire h
i
= h quel que soit i, la matrice du syst`eme lineaire 6 se trouve simpliee
de beaucoup :
1
2
f

i
+ 2f

i+1
+
1
2
f

i+2
= 6f[x
i
, x
i+1
, x
i+2
]
pour i = 0, 1, 2, , n 2
(7)
En eet, on obtient alors une matrice tridiagonale dont la diagonale principale ne
contient que des 2, tandis que les deux autres diagonales sont constituees de coef-
cients valant
1
2
. Cette matrice ne depend donc pas de la valeur de h, qui naecte
que le terme de droite
Nous avons donc impose un total de 4n1 contraintes `a nos 4n+1 inconnues de
depart. Nous avons egalement exprime toutes les inconnues du syst`eme en fonction
des derivees secondes f

i
de la spline et de fait il ne reste que n + 1 inconnues
pour les n1 equations du syst`eme 6. On doit donc ajouter, de facon plus ou moins
arbitraire, deux equations supplementaires pour completer le syst`eme et avoir autant
dequations que dinconnues. Nous presentons maintenant quelques possibilites dont
le choix precis depend du probl`eme et de la connaissance que lon a de ce qui se
passe aux extremites de la courbe.
0.1. SPLINES CUBIQUES 5
La mani`ere la plus simple de completer le syst`eme dequations consiste `a im-
poser les valeurs des derivees secondes aux deux extremites soit p

0
(x
0
) = a et
p

n1
(x
n
) = b :
f

0
= a et f

n
= b (8)
Cela supppose bien entendu que lon connat les valeurs a et b de la derivee
seconde aux extremites de la courbe. Si a = b = 0, on qualie de spline
naturelle la courbe qui en resulte. Ces deux equations sajoutent aisement au
syst`eme 6.
Un autre choix possible consiste `a imposer que :
_
f

0
= f

1
ou encore f

0
f

1
= 0
f

n1
= f

n
ou encore f

n1
f

n
= 0
(9)
ce qui revient `a imposer une courbure constante dans le premier et dans le der-
nier intervalle. Ces contraintes sajoutent aussi aux equations 6 et compl`etent
ainsi le syst`eme de (n + 1) equations en (n + 1) inconnues.
On peut aussi imposer les derivees premi`eres p

0
(x
0
) = a et p

n1
(x
n
) = b aux
deux extremites (en supposant toujours que nous les connaissions). En x
0
, on
utilise directement la relation 5 :
f

0
= f[x
0
, x
1
]
h
0
f

0
3

h
0
f

1
6
= a
qui devient :
2f

0
+ f

1
=
6
h
0
(f[x
0
, x
1
] a)
En x
n
cependant, on ne peut utiliser directement la relation 5 puisquelle nest
denie que pour i allant de 0 `a n2. Cependant, de la denition de p
n1
(x) :
p

n1
(x
n
) = f

n1
+ f

n1
h
n1
+
f

n1
2
h
2
n1
ce qui fait quen developpant f

n1
et f

n1
`a laide des formules 5 et 2, on
trouve :
p

n1
(x
n
) = f[x
n1
, x
n
] +
h
n1
6
(f

n1
+ 2f

n
) (10)
Imposer b = p

n1
(x
n
) revient alors `a :
f

n1
+ 2f

n
=
6
h
n1
(b f[x
n1
, x
n
])
et on doit donc ajouter au syst`eme 6 les equations :
_

_
2f

0
+ f

1
=
6
h
0
(f[x
0
, x
1
] a)
f

n1
+ 2f

n
=
6
h
n1
(b f[x
n1
, x
n
])
(11)
6
Une autre avenue interessante est la condition dite not-a-knot en anglais.
Cela consiste `a eliminer, mais de mani`ere virtuelle seulement, les noeuds din-
terpolation x
1
et x
n1
. Pour ce faire, on impose en ces deux noeuds la conti-
nuite de la troisi`eme derivee soit :
p

0
(x
1
) = p

1
(x
1
) ainsi que p

n2
(x
n1
) = p

n1
(x
n1
)
ce qui revient `a :
f

0
= f

1
et f

n2
= f

n1
et enn, en utilisant 4 :
f

1
f

0
h
0
=
f

2
f

1
h
1
ainsi que
f

n1
f

n2
h
n2
=
f

n
f

n1
h
n1
On doit donc ajouter au syst`eme 6 les equations :
h
1
f

0
(h
0
+ h
1
)f

1
+ h
0
f

2
= 0
h
n1
f

n2
(h
n2
+ h
n1
)f

n1
+ h
n2
f

n
= 0
(12)
Au noeud x
1
, les polynomes p
0
(x) et p
1
(x) concident ainsi que leurs trois
premi`eres derivees. Puisque ce sont des polynomes de degre 3, ils sont donc
identiques et il ny a en fait quun seul polynome de degre 3 dans les deux
premiers intervalles. Cest pourquoi on dit que le noeud x
1
nest pas vraiment
un noeud ( not-a-knot ). Il en est de meme pour les polynomes p
n2
(x) et
p
n1
(x) adjacents au noeud x
n1
.
Une derni`ere situation interessante et frequemment utile concerne la represen-
tation de fonctions periodiques. Dans ce cas, on doit verier d`es le depart que
f(x
0
) = f(x
n
) mais cela ne sut pas `a imposer la periodicite de la spline. On
doit aussi imposer la periodicite des derivees premi`ere et deuxi`eme soit f

0
= f

n
et f

0
= f

n
. Cette derni`ere equation est facilement integree au syst`eme tandis
que pour la premi`ere, on a en vertu des equations 5 et 10 :
f[x
0
, x
1
]
h
0
f

0
3

h
0
f

1
6
= f[x
n1
, x
n
] +
h
n1
6
(f

n1
+ 2f

n
)
On doit donc imposer les deux conditions suivantes pour avoir la periodicite :
_

_
f

0
f

n
= 0
h
0
3
f

0
+
h
0
6
f

1
+
h
n1
6
f

n1
+
h
n1
3
f

n
= f[x
0
, x
1
] f[x
n1
, x
n
]
(13)
Remarque 0.1
Dautres choix sont possibles. Tout depend de linformation disponible pour un pro-
bl`eme donne. On remarque de plus que pour les deux derniers type de conditions
aux extremites, les syst`emes lineaires obtenus ne sont plus tridiagonaux.
Remarque 0.2
0.1. SPLINES CUBIQUES 7
Pour eectuer une interpolation `a laide des splines cubiques, il faut en premier
lieu calculer les derivees secondes f

i
en resolvant le syst`eme 6 complete par les
conditions aux extremites 8, 9, 11, 12 ou encore 13. Par la suite, on doit determiner
lintervalle dans lequel se situe le point dinterpolation x et calculer le polynome
dans cet intervalle en utilisant la formule 1 dans laquelle on remplace :
_

_
f
i
= f(x
i
)
f

i
= f[x
i
, x
i+1
]
h
i
f

i
3

h
i
f

i+1
6
f

i
=
f

i+1
f

i
h
i
(14)

Remarque 0.3
Bien que lexpression 1 de la spline cubique ne fasse intervenir les troisi`emes derivees,
nous navons `a aucun moment impose la continuite de la derivee troisi`eme (sauf pour
la condition not-a-knot ). Par consequent, la courbe resultante nest que deux
fois dierentiable.
Exemple 0.1
Soit les 4 points suivants : (1 , 1), (2 , 4), (4 , 9), (5 , 11). On trouve toute
linformation necessaire au calcul de la spline cubique dans la table suivante.
Donnees pour le calcul de la spline
i x
i
f(x
i
) f[x
i
, x
i+1
] f[x
i
, x
i+1
, x
i+2
] h
i
0 1 1 1
3
1 2 4
1
6
2
5
2
2 4 9
1
6
1
2
3 5 11
La premi`ere equation (i = 1) du syst`eme 6 devient :
_
1
3
_
f

0
+ 2f

1
+
_
2
3
_
f

2
= 6
_

1
6
_
et la deuxi`eme equation (i = 2) secrit :
_
2
3
_
f

1
+ 2f

2
+
_
1
3
_
f

3
= 6
_

1
6
_
Pour obtenir la spline naturelle (f

0
= f

3
= 0), on resout le syst`eme :
_

_
1 0 0 0
1
3
2
2
3
0
0
2
3
2
1
3
0 0 0 1
_

_
_

_
f

0
f

1
f

2
f

3
_

_
=
_

_
0
1
1
0
_

_
8
dont la solution est f

0
= 0, f

1
= 3/8, f

2
= 3/8 et f

3
= 0.
Pour obtenir lequation de la spline dans le premier intervalle, on doit utiliser les
relations 1 et 14. On obtient :
f
0
= 1
f

0
= f[x
0
, x
1
]
h
0
f

0
3

h
0
f

1
6
= 3
(1)(0)
3

(1)(3/8)
6
=
49
16
f

0
=
f

1
f

0
h
0
=
3
8
et on a :
p
0
(x) = 1 +
49
16
(x 1) +
0
2
(x 1)
2

3
48
(x 1)
3
Ce polynome nest deni que dans lintervalle [1 , 2]. On peut par exemple levaluer
en x = 1,5 pour obtenir 2,523 4375.
De meme, si lon a besoin de la valeur de la spline en x = 3, qui est situe dans le
deuxi`eme intervalle (soit [2 , 4]), on peut obtenir lequation de la spline dans cet
intervalle en posant i = 1 dans lequation 1. On a alors :
f
1
= 4
f

1
= f[x
1
, x
2
]
h
1
f

1
3

h
1
f

2
6
=
5
2

(2)(3/8)
3

(2)(3/8)
6
=
23
8
f

1
=
f

2
f

1
h
1
= 0
et on a :
p
1
(x) = 4 +
23
8
(x 2)
3
16
(x 2)
2
La valeur de la spline en x = 3 est donc 6,6875. La spline compl`ete est illustree `a la
gure 3.
Exemple 0.2
Si lon reprend lexemple o` u la vitesse dun vehicule est mesuree toutes les 5 secondes,
on obtient la spline de la gure ??. On remarque immediatement que les fortes
oscillations observees `a la gure ?? avec un polynome de degre 9 ont maintenant
disparu. On peut alors interpoler la valeur de la vitesse du vehicule partout dans
lintervalle [0 , 45] sans risque dobtenir des valeurs aberrantes.
0.1.2 Splines parametrees
Les logiciels de conception assistee par ordinateur (CAO) doivent frequemment
relier des points que lutilisateur specie `a lecran en cliquant `a laide de la souris. La
courbe resultante nest pas forcement de la forme y = f(x) en ce sens quelle peut
0.1. SPLINES CUBIQUES 9
1 2 4 5
1
4
9
x
11
Figure 3 Spline passant par 4 points
0 5 10 15 20 25 30 35 40 45
20
25
30
35
40
45
50
55
60
65
70
75
Vitesse
Temps (s)
(km/h)
Figure 4 Spline cubique associee `a la vitesse dun vehicule
10
contenir des boucles et prendre des formes tout `a fait quelconques. Nous ne pou-
vons donc pas utiliser directement la methodologie que nous venons de developper.
Comme nous le verrons, il sut cependant dune tr`es leg`ere modication.
On souhaite ainsi, `a laide de quelques points donnes dans un plan ou dans
lespace `a 3 dimensions, construire des trajectoires complexes permettant de faire
la conception dobjets de formes tr`es diverses. Pour y arriver, on peut avoir recours
aux splines cubiques parametrees que nous allons maintenant decrire.
La parametrisation dune courbe sobtient par une equation de la forme :
(t) = (
1
(t),
2
(t),
3
(t)), t [a, b]
On decrit la courbe en faisant varier le param`etre t entre a et b. Pour construire
une courbe parametree passant par les points (x
i
1
, x
i
2
, x
i
3
) pour i = 0, 1, 2, , n, il
faut dabord construire la suite t
i
des valeurs du param`etre t de telle sorte que :
(t
i
) = (x
i
1
, x
i
2
, x
i
3
)
Le choix le plus simple est bien s ur t
i
= i, mais il ne tient aucun compte des distances
respectives entre les points (x
i
1
, x
i
2
, x
i
3
). Un choix plus judicieux consiste `a prendre
t
0
= 0 et :
t
i
= t
i1
+||x
i
x
i1
||
2
pour i 1 (15)
La distance entre les valeurs du param`etre t est ainsi variable et depend di-
rectement de la distance entre les points dinterpolation, ce qui assure un meilleur
equilibre de la courbe resultante.
Pour obtenir la spline parametree passant par n points donnes, il sut de calculer
les 3 splines passant respectivement par les points (t
i
, x
i
1
), (t
i
, x
i
2
) et (t
i
, x
i
3
) (en
dimension 2, on laisse tomber la troisi`eme spline). Il sut donc de suivre les etapes
suivantes :
creer le vecteur t contenant les valeurs des t
i
suivant lequation 15. On notera
t
max
la valeur maximale du vecteur t. Les t
i
etant croissants, on a t
max
= t
n
;
creer un vecteur tt qui varie entre 0 et t
max
, mais avec une partition beaucoup
plus ne que celle de t. En eet, la spline parametree sera evaluee entre les
points dinterpolation et cest ce qui assurera une courbe plus lisse. Typique-
ment, le vecteur tt variera egalement entre 0 et t
max
et contiendra jusqu`a 10
fois plus de points que le vecteur t ;
calculer les 3 splines dierentes passant par les points (t
i
, x
i
1
), (t
i
, x
i
2
) et (t
i
, x
i
3
).
On fera en sorte devaluer ces splines `a tous les points du vecteur tt ;
tracer la spline parametree passant par les points du vecteur tt.
Pour illustrer ce processus, considerons (en dimension 2) les points (x
i
1
, x
i
2
) sui-
0.1. SPLINES CUBIQUES 11
0 0,5 1 1,5 2 2,5 3 3,5 4
0,8
0,6
0,4
0,2
0
0,2
0,4
0,6
0,8
x
1
x
2
Figure 5 Points relies par des segments de droite
vants :
Points de la spline
x
i
1
x
i
2
x
i
1
x
i
2
4,00 0,666 667 0,25 0,458 333
2,25 +0,375 000 1,00 0,666 667
1,00 +0,666 667 2,25 0,375 000
0,25 +0,458 333 4,00 +0,666 667
0,00 0,458 333
et qui sont illustres `a la gure 5. Les points ainsi relies par des segments de droite,
la courbe qui en resulte nest pas tr`es elegante et ne permettrait pas une conception
harmonieuse. Le vecteur t resultant de lequation 15 est de longueur 9 et prend les
valeurs :
t = [0 , 2,0366 , 3,3201 , 4,0985 , 4,6206 , 5,1427 , 5,9211 , 7,2047 , 9,2412]
On a alors t
max
= 9,2412. Le vecteur tt est tout simplement une partition de linter-
valle [0 , t
max
] par increments denviron 0,5. On calcule alors les 2 splines passant
par les points (t
i
, x
i
1
) et (t
i
, x
i
2
) qui sont illustrees `a la gure 6. On constate donc
que chacune de ces splines est de la forme etudiee `a la section 0.1.1. Si lon trace, `a la
gure 7, la spline parametree, on constate une courbe tr`es lisse (2 fois dierentiable).
12
0 1 2 3 4 5 6 7 8 9 10
-1
0
1
2
3
4
t
x
1
0 1 2 3 4 5 6 7 8 9 10
-1
0,5
0
0,5
1
t
x
2
Figure 6 Splines passant par les points (t
i
, x
i
1
) et (t
i
, x
i
2
)
0,5 0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0
0,8
0,6
0,4
0,2
0,0
0,8
0,2
0,4
0,6
x
1
x
2
Figure 7 Spline parametree

Vous aimerez peut-être aussi