Exercice 6 (B-splines)

Les B-splines sont des fonctions qui servent pour la représentation de courbes et sont très utilisées pour l'approximation. Elles peuvent se définir d'une manière itérative.

On fixe un entier n et un ensemble ordonné de n+2 réels distincts (appelés n\oeuds)

\begin{displaymath}a_0<a_1<\cdots<a_{n+1}. \end{displaymath}

On définit les B-splines d'ordre 0 associées aux noeuds par

\begin{displaymath}\forall \: i \in [\![0,n]\!], \: B_i^0(u) = \left\{\begin{arr...
...u \in [a_i,a_{i+1}[,  0 & \mathrm{sinon} \end{array} \right. \end{displaymath}

et, de manière itérative, les B-splines d'ordre j par

\begin{displaymath}\forall \: 0<j\leq n, i \in [\![0,n-j]\!], B_i^j(u) = \alpha_...
...(u) B_i^{j-1}(u) + (1-\alpha_{i+1}^{j-1}(u)) B_{i+1}^{j-1}(u), \end{displaymath}

avec

\begin{displaymath}\alpha_{i}^{j-1}(u) = (u-a_i)/(a_{i+j} - a_{i}). \end{displaymath}

Les B-splines d'ordre j sont des polynômes d'ordre j par morceaux entre les n\oeuds successifs et continûment dérivables à l'ordre j-1 pour j>0. Pour j>1, la dérivée d'une B-spline d'ordre j vaut

\begin{displaymath}B_i^j(u) =\frac{j}{a_{i+j}-a_i} B_i^{j-1}(u) - \frac{j}{a_{i+j+1}-a_{i+1}} B_{i+1}^{j-1}(u). \end{displaymath}

  1. Construire une fonction matlab qui, pour un ensemble de m noeuds distincts et ordonnées (m>1) et un réel u fixé, évalue toutes les B-splines d'ordre n<m-1 en u.
  2. On choisit un ensemble de 4 n\oeuds équi-répartis sur l'intervalle [0,1]. Évaluer et représenter graphiquement sur [0,1] les B-splines d'ordres n<3 associées à ces n\oeuds.
  3. Écrire une fonction matlab qui, pour un ensemble de m noeuds distincts et ordonnées (m>1) et un réel u fixé, évalue toutes les dérivées des B-splines d'ordre 1<n<m-1 en u.

Frederic Richard, Aix-Marseille University, 2015