Définition
Soit une subdivision σn de l’intervalle [a,b] :
a=x0, x1, ..., xn=b |
On dit que s est une fonction spline de degré l si s est une application de [a,b] dans ℝ vérifiant :
Théorème
L’ensemble des fonctions splines de degré l sur σn est un
ℝ-espace vectoriel de dimension n+l.
En effet :
Sur [a,x1], s est un polynôme A de degré inférieur ou égal à
l, donc sur [a,x1], s=A(x)=a0+a1x+...alxl et A est une combinaison
linéaire de 1,x,...xl.
Sur [x1,x2], s est un polynôme B de degré inférieur ou égal à
l, donc sur [x1,x2], s=B(x)=b0+b1x+...blxl.
Puisque s admet des dérivées continues jusqu’à l’ordre l−1 on doit
avoir :
∀ 0 ≤ j ≤ l−1, B(j)(x1)−A(j)(x1)=0 |
donc B(x)−A(x)=α1(x−x1)l ou encore B(x)=A(x)+α1(x−x1)l.
Soit la fonction :
q1(x) = | ⎧ ⎨ ⎩ |
|
Donc :
s|[a,x2]=a0+a1x+...alxl+α1q1(x).
Sur [x2,x3], s est un polynôme C de degré inférieur ou égal à
l, donc sur [x2,x3], s=C(x)=c0+c1x+...clxl.
Puisque s admet des dérivées continues jusqu’à l’ordre l−1 on doit
avoir :
∀ 0 ≤ j ≤ l−1, C(j)(x2)−B(j)(x2)=0 |
donc C(x)−B(x)=α2(x−x2)l ou encore C(x)=B(x)+α2(x−x2)l.
Soit la fonction :
q2(x) = | ⎧ ⎨ ⎩ |
|
Donc :
s|[a,x3]=a0+a1x+...alxl+α1q1(x)+α2q2(x)
Et ainsi de suite, on définit les fonctions :
∀ 1 ≤ j ≤ n−1, qj(x) = | ⎧ ⎨ ⎩ |
|
ainsi,
s|[a,b]=a0+a1x+...alxl+α1q1(x)+....+αn−1qn−1(x)
et
s est une combinaison linéaire des n+l fonctions indépendantes
1,x,..xl,q1,..qn−1.
Interpolation avec des fonctions splines
On peut demander d’interpoler une fonction f sur σn par une fonction
spline s de degré l,
ce qui va imposer à s de vérifier s(xk)=yk=f(xk) pour tout
0≥ k≥ n. On a donc n+1 conditions, il reste donc l−1 degrés de
liberté. On peut donc encore imposer l−1 conditions supplémentaires qui
seront des conditions sur les derivées de s en a et b.
Il existe alors
trois types d’interpolation (interpolation d’Hermite, interpolation naturelle,
interpolation périodique) qui sont obtenues en rajoutant trois types de
contraintes. On peut montrer que pour chacun de ces types d’interpolation la
solution au problème d’interpolation est unique.
Supposons l impair, l=2m−1, il y a donc 2m−2 degrés de liberté. On rajoute les contraintes suivantes :
∀ 1≤ j≤ m−1, s(j)(a)=f(j)(a), s(j)(b)=f(j)(b) |
∀ m ≤ j ≤ 2m−2, s(j)(a)=s(j)(b)=0 |
∀ 1≤ j≤ 2m−2, s(j)(a)=s(j)(b) |
Supposons l pair, l=2m, il y a donc 2m−1 degrés de liberté. On rajoute les contraintes suivantes :
∀ 1≤ j≤ m−1, s(j)(a)=f(j)(a), s(j)(b)=f(j)(b) |
s(m)(a)=f(m)(a) |
∀ m ≤ j ≤ 2m−2, s(j)(a)=s(j)(b)=0 |
s(2m−1)(a)=0 |
∀ 1≤ j≤ 2m−1, s(j)(a)=s(j)(b) |
Une spline naturelle de degré donné passant par des points donnés est une fonction spline vérifiant l’interpolation naturelle.
L’instruction spline calcule une spline naturelle de degré donné passant par des points dont les listes des abscisses par ordre croissant et des ordonnées sont passées en argument. Elle renvoie la fonction spline sous forme d’une liste de polynômes, chaque polynôme étant valide dans un intervalle. On donne dans l’ordre croissant la liste des abscisses, la liste des ordonnées, le nom de variables souhaité pour les polynômes et le degré.
Par exemple, on veut une spline naturelle de degré 3, passant par les points x0=0,y0=1, x1=1,y1=3 et x2=2, y2=0, on tape :
On obtient une liste de deux polynômes fonction de x :
[ −5*x3/4+13*x/4+1, 5*(x−1)3/4−15*(x−1)2/4+(x−1)/−2+3 ] |
valables respectivement sur les intervalles [0,1] et [1,2].
Par exemple, on veut une spline naturelle de degré 4, passant par les points x0=0,y0=1, x1=1,y1=3, x2=2, y2=0 et x3=3, y3=−1, on tape :
On obtient une liste de trois polynômes fonction de x :
[(−62*x4+304*x)/121+1, |
(201*(x−1)4−248*(x−1)3−372*(x−1)2+56*(x−1))/121+3, |
(−139*(x−2)4+556*(x−2)3+90*(x−2)2+−628*(x−2))/121] |
valables respectivement sur les intervalles [0,1], [1,2] et [2,3].
Par exemple, pour avoir l’interpolation naturelle de cos sur [0,π/2,3π/2], on tape :
On obtient :
[((3π3+(−7π2)x+4x3)1/3)/(π3), |
((15π3+(−46π2)*+36π x2−8x3)1/12)/(π3)] |