3.5 Approximation par fonctions splines
99
−60
−40
−20
0
20
40
60
−3.5
−3.4
−3.3
−3.2
−3.1
−3
−2.9
−2.8
−2.7
Figure 3.12. Comparaison entre la spline cubique (trait plein) et le polynôme
d’interpolation de Lagrange (trait discontinu) dans le cas de l’Exemple 3.8
noeuds xi, i = 0, . . . , 12 sont les différentes valeurs de la latitude. Si on veut
calculer s3(zi), pour zi = −55 + i, i = 0, . . . , 120, on peut procéder ainsi :
x = [ -55:10:65];
y = [ -3.25 -3.37 -3.35 -3.2 -3.12 -3.02 -3.02 ...
-3.07 -3.17 -3.32 -3.3 -3.22 -3.1];
zi = [ -55:1:65];
s = spline (x ,y , zi );
Le graphe de s3, tracé sur la Figure 3.12, semble mieux convenir que celui du
polynôme d’interpolation de Lagrange calculé avec les mêmes noeuds.
Exemple 3.9 (Robotique) Pour trouver la trajectoire du robot dans le plan
xy satisfaisant les contraintes décrites dans le Problème 3.4, on subdivise l’intervalle de temps [0, 5] en deux sous-intervalles [0, 2] et [2, 5]. On cherche alors
dans chaque sous-intervalle deux splines x = x(t) et y = y(t) qui interpolent les
données et qui ont des dérivées nulles aux extrémités. On utilise le Programme
3.1 pour obtenir la solution voulue :
x1 = [0 1 4]; y1 = [0 2 4];
t1 = [0 1 2]; ti1 = [ 0 : 0 .0 1:2];
x2 = [0 3 4]; y2 = [0 1 4];
t2 = [0 2 3]; ti2 = [ 0 : 0 .0 1:3]; d =[0 ,0];
six1 = c u b i cs pline(t1 , x1 , ti1 ,0 ,d );
siy1 = c u b i cs pline(t1 , y1 , ti1 ,0 ,d );
six2 = c u b i cs pline(t2 , x2 , ti2 ,0 ,d );
siy2 = c u b i cs pline(t2 , y2 , ti2 ,0 ,d );
La trajectoire est tracée sur la Figure 3.13.
L’erreur commise en approchant une fonction f (quatre fois continûment différentiable) par sa spline cubique naturelle s 3 satisfait l’inégalité
suivante ([dB01])
max
x∈I
|f
(r) (x) − s
(r)
3 (x)| ≤ C r H
4−r max
x∈I
|f
(4) (x)|, r = 0, 1, 2,
99
−60
−40
−20
0
20
40
60
−3.5
−3.4
−3.3
−3.2
−3.1
−3
−2.9
−2.8
−2.7
Figure 3.12. Comparaison entre la spline cubique (trait plein) et le polynôme
d’interpolation de Lagrange (trait discontinu) dans le cas de l’Exemple 3.8
noeuds xi, i = 0, . . . , 12 sont les différentes valeurs de la latitude. Si on veut
calculer s3(zi), pour zi = −55 + i, i = 0, . . . , 120, on peut procéder ainsi :
x = [ -55:10:65];
y = [ -3.25 -3.37 -3.35 -3.2 -3.12 -3.02 -3.02 ...
-3.07 -3.17 -3.32 -3.3 -3.22 -3.1];
zi = [ -55:1:65];
s = spline (x ,y , zi );
Le graphe de s3, tracé sur la Figure 3.12, semble mieux convenir que celui du
polynôme d’interpolation de Lagrange calculé avec les mêmes noeuds.
Exemple 3.9 (Robotique) Pour trouver la trajectoire du robot dans le plan
xy satisfaisant les contraintes décrites dans le Problème 3.4, on subdivise l’intervalle de temps [0, 5] en deux sous-intervalles [0, 2] et [2, 5]. On cherche alors
dans chaque sous-intervalle deux splines x = x(t) et y = y(t) qui interpolent les
données et qui ont des dérivées nulles aux extrémités. On utilise le Programme
3.1 pour obtenir la solution voulue :
x1 = [0 1 4]; y1 = [0 2 4];
t1 = [0 1 2]; ti1 = [ 0 : 0 .0 1:2];
x2 = [0 3 4]; y2 = [0 1 4];
t2 = [0 2 3]; ti2 = [ 0 : 0 .0 1:3]; d =[0 ,0];
six1 = c u b i cs pline(t1 , x1 , ti1 ,0 ,d );
siy1 = c u b i cs pline(t1 , y1 , ti1 ,0 ,d );
six2 = c u b i cs pline(t2 , x2 , ti2 ,0 ,d );
siy2 = c u b i cs pline(t2 , y2 , ti2 ,0 ,d );
La trajectoire est tracée sur la Figure 3.13.
L’erreur commise en approchant une fonction f (quatre fois continûment différentiable) par sa spline cubique naturelle s 3 satisfait l’inégalité
suivante ([dB01])
max
x∈I
|f
(r) (x) − s
(r)
3 (x)| ≤ C r H
4−r max
x∈I
|f
(4) (x)|, r = 0, 1, 2,
