next up previous
Next: About this document Up: No Title Previous: Polynome interplateur de Lagrange

Calcul numérique d'une dérivée.

En calcul numérique (i.e. dans un ordinateur), il est impossible de calculer explicitement la valeur de la dérivée en un point. On évalue en fait un approximation de la dérivée à partir d'un ensemble discret de valeurs et par interpolation. Prenons par exemple 2N+1 points. Sur ces 2N+1 points, nous approximons la fonction f par le polynome interolateur de degré N qui passe par les 2N+1 points. La valeur de la dérivée de la fonction est approximée alors par la valeur de la dérivée de l'approximation interpolée.

Par exemple, à partir des calculs précédants, on obtient l'approximation bien connue de la dérivée (que l'on identifie ici à la corde), et de la dérivée seconde: plus comme la dé

> subs(X=0,F2);subs(X=0,diff(F2,X));

equation89

> subs(X=0,diff(diff(F2,X),X));

equation93

Le report de ces expressions dans un développement de Taylor de f nous donne une idée de l'ordre des approximations faites:

> tayl_set:={'f(i*q)=subs(x=i*q,convert(taylor(f(x),x=0,5),`+`))'$i=-2..2}:
> subs(X=0,diff(F2,X)) = expand(subs(tayl_set,subs(X=0,diff(F2,X))));

equation97

> subs(X=0,diff(diff(F2,X),X))) = 
  expand(subs(tayl_set,subs(X=0,diff(diff(F2,X),X))));

equation105

Le même raisonnement réalisé avec un polynome interpolateur d'ordre 4 nous conduit aux expressions suivantes:

> F:=sum(a[i]*X^i,i=0..4):
> eq_set := {'f(q*i) = subs(X=q*i,F)'$i=-2..2}:
> solve(eq_set,{'a[i]'$i=0..4}):
> F4:=subs(",F):
> subs(X=0,diff(F4,X));

equation113

> subs(X=0,diff(diff(F4,X),X));

equation117

> tayl_set:={'f(i*q)=subs(x=i*q,convert(taylor(f(x),x=0,7),`+`))'$i=-2..2}:
> expand(subs(tayl_set,subs(X=0,diff(F4,X))));

equation121

> expand(subs(tayl_set,subs(X=0,diff(diff(F4,X),X))));

equation126



Stephan Tassart
Fri Feb 7 17:51:32 MET 1997