Splines cubiques

Download Report

Transcript Splines cubiques

PROGRAMMATION
SCIENTIFIQUE EN C
PRO-1027
Interpolation de fonctions
 Faiblesse
de l’interpolation polynomiale
 Interpolation par splines cubiques
 Travail pratique 3 b)
– Affichage de 2 courbes avec xgraph
 Mini-test
#2
Faiblesse de l’interpolation polynomiale
 Le
nombre de points de contrôle influence directement le degré du polynôme d’interpolation
 Si nous avons n points de contrôle, le polynôme
d’interpolation sera alors de degré n-1



Faiblesse de l’interpolation polynomiale












Faiblesse de l’interpolation polynomiale


  

 

Faiblesse de l’interpolation polynomiale
• Correction possible: interpolation par bout







Interpolation par splines cubiques
 Pour
un ensemble de points de contrôle (xi,f(xi)),
i=1,...,n nous savons qu’un polynôme de degré
maximal n-1 peut être utilisé comme fonction
d’interpolation
 La précision de l’interpolation est généralement
améliorée en augmentant le degré du polynôme
d’interpolation
 Par contre, si f(xi) change brusquement pour des
variations constantes de xi la précision de l’interpolation avec un polynôme de degré supérieur diminue
Interpolation par splines cubiques
 Le
polynôme d’interpolation oscille alors autour de
ces changements abruptes
 Dans ces circonstances nous devrions employer des
polynômes d’interpolation d’ordre inférieurs tels que
des splines
Interpolation par splines cubiques
 Splines
linéaires
– Les points de contrôle (xi,f(xi)), i=1,...,n sont interpolés
par des droites reliants chaque paire de points de contrôle adjacente et leur forme respective est donnée par:
f1 ( x )  f ( x1 ) 
f 2 ( x )  f ( x2 ) 
f ( x2 )  f ( x1 )
x2  x1
 x  x1 
f ( x3 )  f ( x2 )
x3  x2
Pour x1  x  x2
 x  x2 
Pour x2  x  x3
 x  xi 
Pour xi  x  xi 1

f i ( x )  f ( xi ) 
f ( xi 1 )  f ( xi )
xi 1  xi

f n 1 ( x )  f ( xn 1 ) 
f ( xn )  f ( xn 1 )
xn  xn 1
 x  xn 1 
Pour xn 1  x  xn
Interpolation par splines cubiques
 Splines
linéaires
– De plus, pour être valide l’ensemble des splines
linéaires doivent satisfairent
f i 1 ( xi )  f i ( xi )
Pour i  2, , n  1
Interpolation par splines cubiques
 Splines
cubiques
– Plutôt que d’utiliser une droite comme fonction interpolante de chaque intervalle (xi,xi+1) nous pouvons
utiliser une fonction de degré 3 de la forme:
Si ( x)  ai x  bi x  ci x  d i
3
2
Pour i  1, , n  1
Interpolation par splines cubiques
 Splines
cubiques
– Nous cherchons l’ensemble des splines cubiques
Si(x) qui interpolent chaque intervalle (xi,xi+1), i=
1,...,n-1
3
2

S1 ( x)  a1 x  b1 x  c1 x  d1 , x  x1 , x2 

3
2
S
(
x
)

a
x

b
x
 c2 x  d 2 , x  x2 , x3 

2
2
2
S ( x)  


 S ( x )  a x 3  b x 2  c x  d , x  x , x 
n 1
n 1
n 1
n 1
n 1
n
 n 1
Interpolation par splines cubiques
 Splines
cubiques
– Les splines Si-1 et Si sont reliées au point de contrôle xi, i
= 2,...,n-1, alors
Si 1 ( xi )  f ( xi )  yi  Si ( xi )
Interpolation par splines cubiques
 Splines
cubiques
– Les dérivées première et seconde S' et S'' sont aussi
supposées continues aux points xi.
– Pour trouver les splines Si(x) sur chaque intervalle
[xi,xi+1], nous posons d’abord:
zi  Si ' ' ( xi )
Pour i  1, n
Interpolation par splines cubiques
 Splines
cubiques
– Puisque Si est cubique sur l’intervalle [xi,xi+1], Si'' est
alors linéaire sur l’intervalle i et prend la forme:
S i ' ' ( xi )  zi
S i ' ' ( xi 1 )  zi 1
Si ' ' ( x) 
zi
hi
 xi 1  x  
hi  xi 1  xi
zi 1
hi
 x  xi 
Interpolation par splines cubiques
 Splines
cubiques
– En intégrant deux fois Si''(x) nous obtenons:
Si ( x) 
zi
6hi
 xi 1  x 
3

zi 1
6hi
 x  xi 3  c( x  xi )  d ( xi 1  x)
– Sachant que Si(xi) = f(xi) = yi et Si(xi+1) = f(xi+1) = yi+1,
nous pouvons déduire les constantes c et d
Interpolation par splines cubiques
 Splines
cubiques
– Nous pouvons alors réécrire Si(x):
Si ( x) 
zi
6hi
xi 1  x 
3

zi 1
6hi
x  xi 
3
 yi 1 zi 1hi
 

6
 hi

 yi zi hi 
( x  xi )  


 h  6 ( xi 1  x)

 i

– Cherchons maintenant les inconnues zi sachant que:
Si 1 ' ( xi )  Si ' ( xi )
Interpolation par splines cubiques
 Splines
cubiques
– En dérivant Si(x) nous obtenons:
S i ' ( xi )  
hi
3
S i 1 ' ( xi )  
zi 
hi 1
3
hi
6
zi 1 
zi 1 
hi 1
6
yi

yi 1
hi
hi
zi 1 
yi 1
hi 1

yi
hi 1
Interpolation par splines cubiques
 Splines
cubiques
– En égalant ces 2 expressions dérivées:
hi 1 zi 1  2hi  hi 1 zi  hi zi 1 
6
hi
 yi 1  yi  
6
hi 1
 yi  yi 1 
– Cette dernière équation est calculée pour chaque point de
contrôle i=2,....,n-1
Interpolation par splines cubiques
 Splines
cubiques
– Nous pouvons alors déduire un système d’équations
linéaires de n-2 équations et n inconnus z1,...zn.
– Ce système étant sous-déterminé nous posons alors z1
= zn = 0
– Ce qui représente les conditions aux frontières de
l’intervalle [x1, xn]
Interpolation par splines cubiques
 Splines
cubiques
– Nous pouvons alors écrire ce système d’équations linéaires de n-2
u 2 h2
  z 2   v2 
équations

h
 2






u3
h3
h3
u4
h4



hn 3
un2
hn  2
hi  xi 1  xi
ui  2hi  hi 1 
bi 
6
hi
( yi 1  yi )
vi  bi  bi 1

 

z3
v3

 

  z 4   v4 






 

hn  2   z n  2  vn  2 

 

u n 1   z n 1   vn 1 
Interpolation par splines cubiques
 Algorithme
Lire les xi
Lire les yi
Pour m valeurs de x dans l’intervalle [minx, maxx] FAIRE
Trouver l’intervalle i dans lequel se trouve la valeur de x
Calculer Si(x)
Écrire x et Si(x) dans un fichier
FIN POUR
Mini-test #2
 Faire
la partie 3 b) sur les splines
 Réviser les méthodes de recherche de zéros de
fonction
Travail pratique 3 b)
 Recherche
du chemin interpolant un ensemble de
points par les splines cubiques(exemple du taxi)