$$\newcommand{\mtn}{\mathbb{N}}\newcommand{\mtns}{\mathbb{N}^*}\newcommand{\mtz}{\mathbb{Z}}\newcommand{\mtr}{\mathbb{R}}\newcommand{\mtk}{\mathbb{K}}\newcommand{\mtq}{\mathbb{Q}}\newcommand{\mtc}{\mathbb{C}}\newcommand{\mch}{\mathcal{H}}\newcommand{\mcp}{\mathcal{P}}\newcommand{\mcb}{\mathcal{B}}\newcommand{\mcl}{\mathcal{L}} \newcommand{\mcm}{\mathcal{M}}\newcommand{\mcc}{\mathcal{C}} \newcommand{\mcmn}{\mathcal{M}}\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)} \newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}\newcommand{\mcsn}{\mathcal{S}_n} \newcommand{\mcs}{\mathcal{S}}\newcommand{\mcd}{\mathcal{D}} \newcommand{\mcsns}{\mathcal{S}_n^{++}}\newcommand{\glnk}{GL_n(\mtk)} \newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch} \DeclareMathOperator{\sh}{sh}\DeclareMathOperator{\th}{th} \DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card} \DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im} \DeclareMathOperator{\rang}{rg}\DeclareMathOperator{\Fr}{Fr} \DeclareMathOperator{\diam}{diam}\DeclareMathOperator{\supp}{supp} \newcommand{\veps}{\varepsilon}\newcommand{\mcu}{\mathcal{U}} \newcommand{\mcun}{\mcu_n}\newcommand{\dis}{\displaystyle} \newcommand{\croouv}{[\![}\newcommand{\crofer}{]\!]} \newcommand{\rab}{\mathcal{R}(a,b)}\newcommand{\pss}[2]{\langle #1,#2\rangle} $$
Bibm@th

Splines cubiques

  Lorsqu'on cherche à interpoler sur un segment $[a,b]$ une fonction $f$ par un polynôme $P$, c'est-à-dire si on cherche un polynôme $P$ tel qu'en certains points $a_i$ on ait $P(a_i)=f(a_i)$, alors un des problèmes est le phénomène de Runge : même en augmentant le nombre de points d'interpolation, l'approximation globale peut être mauvaise. En outre, le calcul du polynôme $P$ devient compliqué, pouvant donner lieu à des erreurs d'arrondi.

  Une autre idée consiste à utiliser plusieurs polynômes de bas degré sur chaque intervalle $[a_i,a_{i+1}]$, et de recoller ces polynômes pour définir une fonction $S$ sur l'intervalle tout entier. Bien sûr, on va demander à la fonction $S$ de posséder un minimum de régularité (continuité, dérivabilité,...). Ces conditions entraînent que le degré des polynômes va augmenter. Il faut trouver un bon compromis et celui le plus communément adopté est constitué par les splines cubiques.

Définition : Soient $x_1,\dots,x_n,y_1,\dots,y_n$ des nombres réels. On appelle spline cubique associée à la famille $(x_i,y_i)$ toute fonction $S$ de classe $C^2$, polynômiale de degré au plus 3 sur chaque $[x_i,x_{i+1}$ et telle que $S(x_i)=y_i$ pour tout $i=1,\dots n$.
  Une telle fonction $S$ est donc définie par 4 coefficients sur $(n-1)$ intervalles : cela fait $4(n-1)$ inconnues à trouver. Maintenant, on impose :
  • $S(x_i)$ : cela fait deux contraintes pour chaque polynôme (les valeurs aux extrémités), soit $2(n-1)$ équations (linéaires).
  • $S'$ continue en $x_i$ : il faut égaler les deux dérivées à droite et à gauche, et cela fait $(n-2)$ équations (pour les points $x_2$ jusque $x_{n-1}$).
  • $S''$ continue en $x_i$ : à nouveau, cela fait $(n-2)$ équations linéaires.
On obtient donc un système avec $4(n-1)$ inconnues et $4n-6$ équations. Pour déterminer $S$ de façon unique, on peut encore imposer deux contraintes, qui peuvent être :
  • $S'(x_1)$ et $S'(x_n)$, notamment si avec $S$ on cherche à interpoler une fonction $f$.
  • $S''(x_1)=S''(x_n)=0$ (correspond à une contrainte de minimisation d'énergie).
  • $S'(x_1)=S'(x_n)$ et $S''(x_1)=S''(x_n)$
Il existe des algorithmes rapides pour calculer des splines cubiques.
Consulter aussi...