Академический Документы
Профессиональный Документы
Культура Документы
SPLINES CUBIQUES 1
f (x2 )
f (x4 )
f (x1 )
f (x3 )
f (x0 )
x0 x1 x2 x3 x4
p2 (x)
f (x2 ) p1 (x)
p3 (x)
f (x3 )
f (x4 )
p0 (x)
f (x1 )
f (x0 )
x0 x1 x2 x3 x4
rentiable que possible. Dans chaque intervalle [xi , xi+1 ] (de longueur hi = xi+1 − xi ),
nous allons utiliser un polynôme de degré 3 de la forme :
fi00 f 000
pi (x) = fi + fi0 (x − xi ) + (x − xi )2 + i (x − xi )3 pour i = 0, 1, 2, · · · , n − 1 (1)
2! 3!
et relier ces différents polynômes de façon à ce que la courbe résultante soit deux fois
différentiable. La situation est décrite à la figure 2 pour n = 4. C’est l’interpolation
par splines cubiques. On remarque que chacun de ces polynômes se présente commme
un développement de Taylor autour du point xi . Ce n’est nullement obligatoire mais
cette forme permet d’interpréter plus facilement les coefficients à déterminer fi ,
fi0 , fi00 et fi000 qui sont alors respectivement les valeurs de la spline et de ses trois
premières dérivées en xi . On constate en effet facilement que pi (xi ) = fi , p0i (xi ) = fi0
p00i (xi ) = fi00 et enfin p000 000
i (xi ) = fi .
Puisque l’on a (n + 1) points d’interpolation, il y a n intervalles [xi , xi+1 ] qui
résultent en 4n coefficients inconnus (fi , fi0 , fi00 et fi000 pour i = 0, 1, 2, · · · , n − 1).
Ces 4n coefficients doivent être déterminés le plus efficacement possible pour que la
méthode reste attrayante. Comme nous allons le constater, une résolution astucieuse
conduit à un système linéaire tridiagonal de dimension (n + 1) qui pourra être résolu
par l’algorithme décrit à la section ??. Nous allons en effet exprimer toutes ces
inconnues en fonction des dérivées secondes fi00 aux noeuds. On complète donc notre
ensemble d’inconnues en introduisant la dérivée seconde fn00 au noeud xn de sorte que
nous aurons un grand total de 4n + 1 inconnues que nous réduirons en un système
de dimension n + 1.
Voyons combien de conditions ou d’équations nous pouvons imposer à ces 4n + 1
coefficients. Ces équations proviennent des conditions de régularité que l’on souhaite
imposer à la courbe résultante.
– On définit tout d’abord que fn00 est tout simplement la dérivée seconde de la
0.1. SPLINES CUBIQUES 3
fi00 f 000
pi (xi+1 ) = f (xi+1 ) = fi + fi0 (xi+1 − xi ) + (xi+1 − xi )2 + i (xi+1 − xi )3
2! 3!
fi00 2 fi000 3
= f (xi ) + fi0 hi + h + h
2! i 3! i
On peut ainsi isoler fi0 pour obtenir :
ou encore :
00
fi+1 = fi00 + fi000 (xi+1 − xi ) = fi00 + fi000 hi
et en isolant fi000 , on trouve :
00 − f 00
fi+1 i
fi000 = (4)
hi
et par la suite :
00
hi fi00 hi fi+1
fi0 = f [xi , xi+1 ] − − (5)
3 6
4
ou encore :
0 fi000 2
fi+1 = fi0 + fi00 hi + h
2 i
On peut ensuite utiliser les expressions 4 et 5 pour tout exprimer en fonction des
inconnues fi00 . On a alors :
00 00 00 µ 00 ¶
hi+1 fi+1 hi+1 fi+2 hi fi00 hi fi+1 00 fi+1 − fi00
f [xi+1 , xi+2 ]− − = f [xi , xi+1 ]− − +fi hi + hi
3 6 3 6 2
qui devient, en regroupant les termes :
Une dernière simplification est possible si l’on divise chaque terme de cette dernière
équation par :
ce qui donne :
hi hi+1
fi00 + 2fi+1
00
+ f 00 = 6f [xi , xi+1 , xi+2 ]
(hi + hi+1 ) (hi + hi+1 ) i+2
(6)
pour i = 0, 1, 2, · · · , n − 2
On remarque que le terme de droite fait intervenir les deuxièmes différences divisées
que nous avons définies à la section ??. Dans le cas où les abscisses sont équidistantes,
c’est-à-dire hi = h quel que soit i, la matrice du système linéaire 6 se trouve simplifiée
de beaucoup :
1 00 00 1 00
fi + 2fi+1 + fi+2 = 6f [xi , xi+1 , xi+2 ]
2 2 (7)
pour i = 0, 1, 2, · · · , n − 2
En effet, on obtient alors une matrice tridiagonale dont la diagonale principale ne
contient que des 2, tandis que les deux autres diagonales sont constituées de coef-
ficients valant 12 . Cette matrice ne dépend donc pas de la valeur de h, qui n’affecte
que le terme de droite
Nous avons donc imposé un total de 4n − 1 contraintes à nos 4n + 1 inconnues de
départ. Nous avons également exprimé toutes les inconnues du système en fonction
des dérivées secondes fi00 de la spline et de fait il ne reste que n + 1 inconnues
pour les n − 1 équations du système 6. On doit donc ajouter, de façon plus ou moins
arbitraire, deux équations supplémentaires pour compléter le système et avoir autant
d’équations que d’inconnues. Nous présentons maintenant quelques possibilités dont
le choix précis dépend du problème et de la connaissance que l’on a de ce qui se
passe aux extrémités de la courbe.
0.1. SPLINES CUBIQUES 5
ce qui revient à imposer une courbure constante dans le premier et dans le der-
nier intervalle. Ces contraintes s’ajoutent aussi aux équations 6 et complètent
ainsi le système de (n + 1) équations en (n + 1) inconnues.
– On peut aussi imposer les dérivées premières p00 (x0 ) = a et p0n−1 (xn ) = b aux
deux extrémités (en supposant toujours que nous les connaissions). En x0 , on
utilise directement la relation 5 :
h0 f000 h0 f100
f00 = f [x0 , x1 ] − − =a
3 6
qui devient :
6
2f000 + f100 = (f [x0 , x1 ] − a)
h0
En xn cependant, on ne peut utiliser directement la relation 5 puisqu’elle n’est
définie que pour i allant de 0 à n − 2. Cependant, de la définition de pn−1 (x) :
000
fn−1
0 00
p0n−1 (xn ) = fn−1 + fn−1 hn−1 + h2
2 n−1
ce qui fait qu’en développant fn−10 000
et fn−1 à l’aide des formules 5 et 2, on
trouve :
hn−1 00
p0n−1 (xn ) = f [xn−1 , xn ] + (fn−1 + 2fn00 ) (10)
6
Imposer b = p0n−1 (xn ) revient alors à :
00 6
fn−1 + 2fn00 = (b − f [xn−1 , xn ])
hn−1
ce qui revient à :
f0000 = f1000 et fn−2
000 000
= fn−1
et enfin, en utilisant 4 :
Au noeud x1 , les polynômes p0 (x) et p1 (x) coı̈ncident ainsi que leurs trois
premières dérivées. Puisque ce sont des polynômes de degré 3, ils sont donc
identiques et il n’y a en fait qu’un seul polynôme de degré 3 dans les deux
premiers intervalles. C’est pourquoi on dit que le noeud x1 n’est pas vraiment
un noeud (« not-a-knot » ). Il en est de même pour les polynômes pn−2 (x) et
pn−1 (x) adjacents au noeud xn−1 .
– Une dernière situation intéressante et fréquemment utile concerne la représen-
tation de fonctions périodiques. Dans ce cas, on doit vérifier dès le départ que
f (x0 ) = f (xn ) mais cela ne suffit pas à imposer la périodicité de la spline. On
doit aussi imposer la périodicité des dérivées première et deuxième soit f00 = fn0
et f000 = fn00 . Cette dernière équation est facilement intégrée au système tandis
que pour la première, on a en vertu des équations 5 et 10 :
Remarque 0.1
D’autres choix sont possibles. Tout dépend de l’information disponible pour un pro-
blème donné. On remarque de plus que pour les deux derniers type de conditions
aux extrémités, les systèmes linéaires obtenus ne sont plus tridiagonaux. ¨
Remarque 0.2
0.1. SPLINES CUBIQUES 7
Pour effectuer une interpolation à l’aide des splines cubiques, il faut en premier
lieu calculer les dérivées secondes fi00 en résolvant le système 6 complété par les
conditions aux extrémités 8, 9, 11, 12 ou encore 13. Par la suite, on doit déterminer
l’intervalle dans lequel se situe le point d’interpolation x et calculer le polynôme
dans cet intervalle en utilisant la formule 1 dans laquelle on remplace :
fi = f (xi )
00
hi fi00 hi fi+1
fi0 = f [xi , xi+1 ] − − (14)
00 − f 00
3 6
f
f 000 = i+1 i
i
hi
¨
Remarque 0.3
Bien que l’expression 1 de la spline cubique ne fasse intervenir les troisièmes dérivées,
nous n’avons à aucun moment imposé la continuité de la dérivée troisième (sauf pour
la condition « not-a-knot » ). Par conséquent, la courbe résultante n’est que deux
fois différentiable. ¨
Exemple 0.1
Soit les 4 points suivants : (1 , 1), (2 , 4), (4 , 9), (5 , 11). On trouve toute
l’information nécessaire au calcul de la spline cubique dans la table suivante.
f100 − f000 3
f0000 = =−
h0 8
et on a :
49 0 3
(x − 1) + (x − 1)2 − (x − 1)3
p0 (x) = 1 +
16 2 48
Ce polynôme n’est défini que dans l’intervalle [1 , 2]. On peut par exemple l’évaluer
en x = 1,5 pour obtenir 2,523 4375.
De même, si l’on a besoin de la valeur de la spline en x = 3, qui est situé dans le
deuxième intervalle (soit [2 , 4]), on peut obtenir l’équation de la spline dans cet
intervalle en posant i = 1 dans l’équation 1. On a alors :
f1 = 4
f200 − f100
f1000 = =0
h1
et on a :
23 3
(x − 2) − (x − 2)2
p1 (x) = 4 +
8 16
La valeur de la spline en x = 3 est donc 6,6875. La spline complète est illustrée à la
figure 3. J
Exemple 0.2
Si l’on reprend l’exemple où la vitesse d’un véhicule est mesurée toutes les 5 secondes,
on obtient la spline de la figure ??. On remarque immédiatement que les fortes
oscillations observées à la figure ?? avec un polynôme de degré 9 ont maintenant
disparu. On peut alors interpoler la valeur de la vitesse du véhicule partout dans
l’intervalle [0 , 45] sans risque d’obtenir des valeurs aberrantes. J
11
1 2 4 5 x
75
Vitesse 70
(km/h) 65
60
55
50
45
40
35
30
25
20
0 5 10 15 20 25 30 35 40 45
Temps (s)
contenir des boucles et prendre des formes tout à fait quelconques. Nous ne pou-
vons donc pas utiliser directement la méthodologie que nous venons de développer.
Comme nous le verrons, il suffit cependant d’une très légère modification.
On souhaite ainsi, à l’aide de quelques points donnés dans un plan ou dans
l’espace à 3 dimensions, construire des trajectoires complexes permettant de faire
la conception d’objets de formes très diverses. Pour y arriver, on peut avoir recours
aux splines cubiques paramétrées que nous allons maintenant décrire.
La paramétrisation d’une courbe s’obtient par une équation de la forme :
Le choix le plus simple est bien sûr ti = i, mais il ne tient aucun compte des distances
respectives entre les points (xi1 , xi2 , xi3 ). Un choix plus judicieux consiste à prendre
t0 = 0 et :
La distance entre les valeurs du paramètre t est ainsi variable et dépend di-
rectement de la distance entre les points d’interpolation, ce qui assure un meilleur
équilibre de la courbe résultante.
Pour obtenir la spline paramétrée passant par n points donnés, il suffit de calculer
les 3 splines passant respectivement par les points (ti , xi1 ), (ti , xi2 ) et (ti , xi3 ) (en
dimension 2, on laisse tomber la troisième spline). Il suffit donc de suivre les étapes
suivantes :
– créer le vecteur t contenant les valeurs des ti suivant l’équation 15. On notera
tmax la valeur maximale du vecteur t. Les ti étant croissants, on a tmax = tn ;
– créer un vecteur tt qui varie entre 0 et tmax , mais avec une partition beaucoup
plus fine que celle de t. En effet, la spline paramétrée sera évaluée entre les
points d’interpolation et c’est ce qui assurera une courbe plus lisse. Typique-
ment, le vecteur tt variera également entre 0 et tmax et contiendra jusqu’à 10
fois plus de points que le vecteur t ;
– calculer les 3 splines différentes passant par les points (ti , xi1 ), (ti , xi2 ) et (ti , xi3 ).
On fera en sorte d’évaluer ces splines à tous les points du vecteur tt ;
Pour illustrer ce processus, considérons (en dimension 2) les points (xi1 , xi2 ) sui-
0.1. SPLINES CUBIQUES 11
0,8
x2
0,6
0,4
0,2
−0,2
−0,4
−0,6
−0,8
0 0,5 1 1,5 2 2,5 3 3,5 4
x1
vants :
Points de la spline
xi1 xi2 xi1 xi2
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 illustrés à la figure 5. Les points ainsi reliés par des segments de droite,
la courbe qui en résulte n’est pas très élégante et ne permettrait pas une conception
harmonieuse. Le vecteur t résultant de l’équation 15 est de longueur 9 et prend les
valeurs :
On a alors tmax = 9,2412. Le vecteur tt est tout simplement une partition de l’inter-
valle [0 , tmax ] par incréments d’environ 0,5. On calcule alors les 2 splines passant
par les points (ti , xi1 ) et (ti , xi2 ) qui sont illustrées à la figure 6. On constate donc
que chacune de ces splines est de la forme étudiée à la section 0.1.1. Si l’on trace, à la
figure 7, la spline paramétrée, on constate une courbe très lisse (2 fois différentiable).
12
4
x1
3
-1
0 1 2 3 4 5 6 7 8 9 10
t
1
x2
0,5
−0,5
-1
0 1 2 3 4 5 6 7 8 9 10
t
Figure 6 – Splines passant par les points (ti , xi1 ) et (ti , xi2 )
0,8
x2
0,6
0,4
0,2
0,0
−0,2
−0,4
−0,6
−0,8
−0,5 0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0
x1