Algorithme de Neville

En analyse numérique, l'algorithme de Neville[1] est un algorithme d'interpolation polynomiale dû à Eric Harold Neville (en).

L'algorithme de Neville est une méthode récursive du calcul de la valeur du polynôme d'interpolation en un point donné, avec lequel il est aisé d'ajouter des points d'interpolation au fur et à mesure. Il est moins adapté pour fournir une expression du polynôme d'interpolation. Il est parfois confondu avec l'algorithme d'Aitken[2].

Description de l'algorithme

Soit un jeu de n+1 points donnés (xi, yi) où les xi sont distincts deux à deux, et le polynôme d'interpolation p(x) de degré au plus n vérifiant:

p ( x i ) = y i , i = 0 , , n . {\displaystyle p(x_{i})=y_{i},\,i=0,\ldots ,n.}

L'algorithme de Neville évalue ce polynôme pour le point d'abscisse x.

Soit pi,j(x) le polynôme de degré j qui passe par les points (xk, yk) pour k = i, i + 1, …, i+j.

Les pi,j(x) satisfont à la relation de récurrence

p i , 0 ( x ) = y i , {\displaystyle p_{i,0}(x)=y_{i},\,} 0 i n , {\displaystyle 0\leq i\leq n,\,}
p i , j + 1 ( x ) = ( x i x ) p i 1 , j ( x ) + ( x x i j 1 ) p i , j ( x ) x i x i j 1 , {\displaystyle p_{i,j+1}(x)={\frac {(x_{i}-x)p_{i-1,j}(x)+(x-x_{i-j-1})p_{i,j}(x)}{x_{i}-x_{i-j-1}}},\,} 0 j < n  et  0 i < n j . {\displaystyle 0\leq j<n{\text{ et }}0\leq i<n-j.\,}

Cette relation de récurrence permet de calculer p0,n(x), qui est la valeur cherchée. Il nécessite O(n2) opérations en virgule flottante.

Par exemple, pour n = 4, on peut utiliser la relation de récurrence pour remplir le tableau triangulaire ci-dessous, de gauche à droite.

p 0 , 0 ( x ) = y 0 {\displaystyle p_{0,0}(x)=y_{0}\,}
p 0 , 1 ( x ) {\displaystyle p_{0,1}(x)\,}
p 1 , 0 ( x ) = y 1 {\displaystyle p_{1,0}(x)=y_{1}\,} p 0 , 2 ( x ) {\displaystyle p_{0,2}(x)\,}
p 1 , 1 ( x ) {\displaystyle p_{1,1}(x)\,} p 0 , 3 ( x ) {\displaystyle p_{0,3}(x)\,}
p 2 , 0 ( x ) = y 2 {\displaystyle p_{2,0}(x)=y_{2}\,} p 1 , 2 ( x ) {\displaystyle p_{1,2}(x)\,} p 0 , 4 ( x ) {\displaystyle p_{0,4}(x)\,}
p 2 , 1 ( x ) {\displaystyle p_{2,1}(x)\,} p 1 , 3 ( x ) {\displaystyle p_{1,3}(x)\,}
p 3 , 0 ( x ) = y 3 {\displaystyle p_{3,0}(x)=y_{3}\,} p 2 , 2 ( x ) {\displaystyle p_{2,2}(x)\,}
p 3 , 1 ( x ) {\displaystyle p_{3,1}(x)\,}
p 4 , 0 ( x ) = y 4 {\displaystyle p_{4,0}(x)=y_{4}\,}

On obtient ainsi p0,4(x), la valeur à l'abscisse x du polynôme d'interpolation passant par les 5 points donnés.

Démonstration

Soit pi,j(x) le polynôme de degré j qui passe par les points (xk, yk) pour k = i, i + 1, …, i+j, et soit fi,j le coefficient du terme de degré j de ce polynôme, c'est-à-dire:

p i , j ( x ) = f i , j x j + . . .   {\displaystyle p_{i,j}(x)=f_{i,j}x^{j}+...~}

pi,j(x) passe par les points numérotés i, i + 1, …, i+j

pi+1,j(x) passe par les points numérotés i + 1, …, i+j,i+j+ 1

pi,j+1(x) passe par les points numérotés i, i + 1, …, i+j,i+j+ 1

Les polynômes pi,j+1(x) et pi,j(x) ont les points i, i + 1, …, i+j en commun. Il suit que la soustraction pi,j+1(x) - pi,j(x) de ces deux polynômes s'annulera pour les j+1 abscisses de ces points. Autrement dit les abscisses x i {\displaystyle x_{i}} , ... , x i + j {\displaystyle x_{i+j}} sont racines du polynôme pi,j+1(x) - pi,j(x). Comme pi,j+1(x) - pi,j(x) est un polynôme de degré j+1, il possède au plus j+1 racines. Donc finalement nous connaissons toutes ses racines, ce sont les abscisses: x i {\displaystyle x_{i}} , ... , x i + j {\displaystyle x_{i+j}} . Nous pouvons dès lors écrire ce polynôme sous forme factorisée:

p i , j + 1 ( x ) p i , j ( x ) = f i , j + 1 ( x x i ) ( x x i + 1 ) . . . ( x x i + j )   {\displaystyle p_{i,j+1}(x)-p_{i,j}(x)=f_{i,j+1}(x-x_{i})(x-x_{i+1})...(x-x_{i+j})~}

En employant la même méthode, on trouve aussi :

p i , j + 1 ( x ) p i + 1 , j ( x ) = f i , j + 1 ( x x i + 1 ) ( x x i + 2 ) . . . ( x x i + j + 1 )   {\displaystyle p_{i,j+1}(x)-p_{i+1,j}(x)=f_{i,j+1}(x-x_{i+1})(x-x_{i+2})...(x-x_{i+j+1})~}

En divisant ces deux relations membre à membre, on obtient :

p i , j + 1 ( x ) p i , j ( x ) p i , j + 1 ( x ) p i + 1 , j ( x ) = x x i x x i + j + 1 {\displaystyle {\frac {p_{i,j+1}(x)-p_{i,j}(x)}{p_{i,j+1}(x)-p_{i+1,j}(x)}}={\frac {x-x_{i}}{x-x_{i+j+1}}}}

dont on peut isoler pi,j+1 pour retrouver la relation de récurrence de Neville :

p i , j + 1 ( x ) = ( x i x ) p i + 1 , j ( x ) + ( x x i + j + 1 ) p i , j ( x ) x i x i + j + 1   {\displaystyle p_{i,j+1}(x)={\frac {(x_{i}-x)p_{i+1,j}(x)+(x-x_{i+j+1})p_{i,j}(x)}{x_{i}-x_{i+j+1}}}~}

Par ailleurs, en employant la même méthode que précédemment, on peut obtenir:

p i + 1 , j ( x ) p i , j ( x ) = ( f i + 1 , j f i , j ) ( x x i + 1 ) ( x x i + 2 ) . . . ( x x i + j )   {\displaystyle p_{i+1,j}(x)-p_{i,j}(x)=(f_{i+1,j}-f_{i,j})(x-x_{i+1})(x-x_{i+2})...(x-x_{i+j})~}

et en utilisant l'égalité évidente :

p i , j + 1 ( x ) p i , j ( x ) = p i , j + 1 ( x ) p i + 1 , j ( x ) + p i + 1 , j ( x ) p i , j ( x )   {\displaystyle p_{i,j+1}(x)-p_{i,j}(x)=p_{i,j+1}(x)-p_{i+1,j}(x)+p_{i+1,j}(x)-p_{i,j}(x)~}

on obtient :

f i , j + 1 ( x x i ) = f i , j + 1 ( x x i + j + 1 ) + ( f i + 1 , j f i , j )   {\displaystyle f_{i,j+1}(x-x_{i})=f_{i,j+1}(x-x_{i+j+1})+(f_{i+1,j}-f_{i,j})~}

qui fournit un algorithme récursif de calcul de ces coefficients :

f i , 0 = y i , {\displaystyle f_{i,0}=y_{i},\,} 0 i n , {\displaystyle 0\leq i\leq n,\,}
f i , j + 1 = f i + 1 , j f i , j x i + j + 1 x i {\displaystyle f_{i,j+1}={\frac {f_{i+1,j}-f_{i,j}}{x_{i+j+1}-x_{i}}}} 0 j < n  et  0 i < n j .   {\displaystyle 0\leq j<n{\text{ et }}0\leq i<n-j.\ }

Ces coefficients sont appelés différences divisées, notées :

f i , j = f [ x i , , x i + j ] , {\displaystyle f_{i,j}=f[x_{i},\ldots ,x_{i+j}],}

et sont utilisés pour calculer le polynôme d'interpolation de Newton.

Exemple

Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ?

L'algorithme de Neville est plus économique numériquement que l'interpolation newtonienne lorsque le nombre de points à évaluer est faible (typiquement, inférieur aux nombre de points d'interpolation). Au delà, il vaut mieux calculer une fois pour toutes les différences divisées, et utiliser la méthode de Newton.

L'algorithme de Neville est utilisé notamment dans la méthode de Romberg, une méthode d'intégration numérique.

Voir aussi

  • Interpolation polynomiale
  • Interpolation lagrangienne
  • Interpolation newtonienne
  • Extrapolation de Richardson

Notes

  1. Iterative Interpolation, Eric Harold Neville, Indian Math. Soc., Jn., v. 20, 1933, p. 87-120.
  2. On interpolation by iteration of proportional parts, without the use of differences, A. C. Aitken, Edinburgh Math. Soc., Proc., ser. 2, v. 3, 1932, p. 56-76.

Bibliographie

  • (en) William Press, Saul Teukolsky, William Vetterling et Brian Flannery, Numerical Recipes, Cambridge University Press, , 2e éd., 994 p. (ISBN 978-0-521-43108-8, DOI 10.2277/0521431085, lire en ligne), « §3.1 Polynomial Interpolation and Extrapolation »

Liens externes

  • (en) Eric W. Weisstein, « Neville's Algorithm », sur MathWorld
  • Module for Neville Interpolation by John H. Mathews
  • icône décorative Portail de l'analyse