Interpolation spline - Spline interpolation

Dans le domaine mathématique de l'analyse numérique , l' interpolation spline est une forme d' interpolation où l'interpolant est un type spécial de polynôme par morceaux appelé spline . Autrement dit, au lieu d'ajuster un seul polynôme de haut degré à toutes les valeurs à la fois, l'interpolation spline ajuste les polynômes de faible degré à de petits sous-ensembles des valeurs, par exemple, en ajustant neuf polynômes cubiques entre chacune des paires de dix points , au lieu d'adapter un seul polynôme de degré dix à chacun d'eux. L'interpolation spline est souvent préférée à l' interpolation polynomiale car l' erreur d'interpolation peut être réduite même en utilisant des polynômes de faible degré pour la spline. L'interpolation spline évite également le problème du phénomène de Runge , dans lequel une oscillation peut se produire entre les points lors de l'interpolation à l'aide de polynômes de haut degré.

introduction

Interpolation avec des splines cubiques entre huit points. Les dessins techniques dessinés à la main pour la construction navale sont un exemple historique d'interpolation spline ; les dessins ont été construits à l'aide de règles flexibles qui ont été pliées pour suivre des points prédéfinis.

À l'origine, spline était un terme désignant les règles élastiques qui étaient pliées pour passer à travers un certain nombre de points prédéfinis, ou nœuds . Ceux-ci ont été utilisés pour faire des dessins techniques pour la construction navale et la construction à la main, comme illustré sur la figure.

Nous souhaitons modéliser des types de courbes similaires à l'aide d'un ensemble d'équations mathématiques, avec un polynôme pour chaque paire de nœuds et , où . Il y aura donc des polynômes et des nœuds : le premier polynôme commence à , et le dernier polynôme se termine à .

La courbure de toute courbe est définie comme

Pour que la spline prenne une forme qui minimise la flexion (sous la contrainte de passer par tous les nœuds), on va définir les deux et être continue partout, y compris au niveau des nœuds. Ainsi les dérivées première et seconde de chaque polynôme successif doivent avoir des valeurs identiques aux nœuds, c'est-à-dire que

Cela ne peut être réalisé que si des polynômes de degré 3 ou supérieur - des polynômes cubiques ou supérieur - sont utilisés. L'approche classique consiste à utiliser des polynômes d'exactement degré 3 — splines cubiques .

Algorithme pour trouver la spline cubique d'interpolation

Nous souhaitons trouver chaque polynôme étant donné les points passant par . Pour ce faire, nous ne considérerons qu'un seul morceau de la courbe, , qui interpolera de à . Cette pièce aura des pentes et à ses extrémités. Ou, plus précisément,

L'équation complète peut être écrite sous la forme symétrique

 

 

 

 

( 1 )

 

 

 

 

( 2 )

 

 

 

 

( 3 )

 

 

 

 

( 4 )

Mais que sont et ? Pour dériver ces valeurs critiques, nous devons considérer que

Il s'ensuit alors que

 

 

 

 

( 5 )

 

 

 

 

( 6 )

En fixant t = 0 et t = 1 respectivement dans les équations ( 5 ) et ( 6 ), on obtient de ( 2 ) qu'en effet les dérivées premières q′ ( x 1 ) = k 1 et q′ ( x 2 ) = k 2 , et aussi les dérivées secondes

 

 

 

 

( 7 )

 

 

 

 

( 8 )

Si maintenant ( x i , y i ), i = 0, 1, ..., n sont n + 1 points, et

 

 

 

 

( 9 )

i = 1, 2, ..., n , et sont n polynômes du troisième degré interpolant y dans l'intervalle x i −1xx i pour i = 1, ..., n tels que q′ i ( x i ) = q′ i +1 ( x i ) pour i = 1, ..., n  − 1, alors les n polynômes définissent ensemble une fonction différentiable dans l'intervalle x 0xx n , et

 

 

 

 

( 10 )

 

 

 

 

( 11 )

pour i = 1, ..., n , où

 

 

 

 

( 12 )

 

 

 

 

( 13 )

 

 

 

 

( 14 )

Si la suite k 0 , k 1 , ..., k n est telle que, de plus, q′′ i ( x i ) = q′′ i +1 ( x i ) est vraie pour i = 1, ... , n  − 1, alors la fonction résultante aura même une dérivée seconde continue.

De ( 7 ), ( 8 ), ( 10 ) et ( 11 ) découle que c'est le cas si et seulement si

 

 

 

 

( 15 )

pour i = 1, ..., n  − 1. Les relations ( 15 ) sont n − 1 équations linéaires pour les n + 1 valeurs k 0 , k 1 , ..., k n .

Pour les règles élastiques étant le modèle pour l'interpolation spline, on a qu'à gauche du "nœud" le plus à gauche et à droite du "nœud" le plus à droite la règle peut se déplacer librement et prendra donc la forme de une droite avec q′′ = 0 . Comme q′′ devrait être une fonction continue de x , les « splines naturelles » en plus des n − 1 équations linéaires ( 15 ) devraient avoir

c'est à dire que

 

 

 

 

( 16 )

 

 

 

 

( 17 )

Finalement, ( 15 ) avec ( 16 ) et ( 17 ) constituent n + 1 équations linéaires qui définissent de manière unique les n + 1 paramètres k 0 , k 1 , ..., k n .

Il existe d'autres conditions de fin, "spline serrée", qui spécifie la pente aux extrémités de la spline, et la populaire "spline sans nœud", qui exige que la troisième dérivée soit également continue aux x 1 et x N -1 point. Pour la spline « pas de nœud », les équations supplémentaires seront :

où .

Exemple

Interpolation avec des splines "naturelles" cubiques entre trois points

Dans le cas de trois points, les valeurs de sont trouvées en résolvant le système d'équation linéaire tridiagonale

avec

Pour les trois points

on obtient ça

et de ( 10 ) et ( 11 ) que

Sur la figure, la fonction spline constituée des deux polynômes cubiques et donnée par ( 9 ) est affichée.

Voir également

Code informatique

TinySpline : bibliothèque C open source pour les splines qui implémente l'interpolation de splines cubiques

SciPy Spline Interpolation : un package Python qui implémente l'interpolation

Interpolation cubique : bibliothèque C# open source pour l'interpolation de splines cubiques

Les références

Liens externes