next up previous contents
suivant: Programmation Dynamique monter: Quelques méthodes numériques en précédent: Méthode de la Section   Table des matières

Interpolation de Lagrange

Étant donné une fonction $ f : {\mathbb{R}}\to{\mathbb{R}}$ et $ x_0,\ldots,x_n$ $ n+1$ points dans $ {\mathbb{R}}$. Lagrange à résolu le problème de déterminer le polynome $ P$ vérifiant :

$\displaystyle P(x_i)=f(x_i),\quad i=0,\ldots,n.
$

On montre que ce polynome $ P$ s'écrit sous la forme suivante :

$\displaystyle P(x)=f[x_0]+\sum_{j=1}^{n}f[x_0,\ldots,x_j]\Pi_{i=0}^{j-1}(x-x_i) ;
$

avec :

$\displaystyle f[x_i]=f(x_i),\quad f[x_i,\ldots,x_{i+k+1}]=\frac{f[x_{i+1},\ldots,x_{i+k+1}]-f[x_i,\ldots,x_{i+k}]}{x_{i+k+1}-x_i}.$ (2)

Nous allons ranger les éléments $ f[x_i,\ldots,x_{i+k+1}]$ dans une matrice $ A$ de la manière suivante : Autrement dit $ A(i+k+2,k+2)=f[x_i,\ldots,x_{i+k+1}]$. En notant $ points=[x_0,\ldots,x_n]$ ( $ points(i)=x_{i-1}$), l'équation (2) devient :

$\displaystyle A(i+k+2,k+2)=\frac{A(i+k+2,k+1)-A(i+k+1,k+1)}{points(i+k+2)-points(i+1)}.
$

On procède alors à un changement de variable en posant $ I=i+k+2$ et $ J=k+2$ il vient donc :

$\displaystyle A(I,J)=\frac{A(I,J-1)-A(I-1,J-1)}{points(I)-points(I-J+1)}
$

Pour des raisons d'efficacité nous avons programmé deux fonctions. La première calcule la matrice $ A$, la seconde calcule le polynome $ P$ en utilisant $ A$.
function [y]=interpolation(x,d,points)
// Polynome d'interpolation de Lagrange d'une fonction f
   n=size(points,'*')
   
  y=d(1)
  T=x-points(1);
  for i=2:n
    y=y+d(i)*T;
    T=T*(x-points(i));
  end
  
endfunction



function [d]=prepross(f,points)
  n=size(points,'*')
  A=zeros(n,n);
 
   
 for k=1:n
  A(k,1)=f(points(k));
 end
  d(1)=A(1,1);
  for j=2:n
     for i=j:n
      A(i,j)=(A(i,j-1)-A(i-1,j-1))/(points(i)-points(i-j+1));
     end
     d(j)=A(j,j);
  end
endfunction
L'exemple suivant montre le résultat en bleue de l'interpolation de la fonction $ x\mapsto sin(x)$ en rouge aux points $ [0 0.5 1 1.5 2]$

Figure: Interpolation de Lagrange de la fonction $ sinus$
\includegraphics[scale=0.5]{interpolation}


next up previous contents
suivant: Programmation Dynamique monter: Quelques méthodes numériques en précédent: Méthode de la Section   Table des matières
barty 2004-04-29