Académique Documents
Professionnel Documents
Culture Documents
TP : Différentiation Numérique
Objectif
Dans ce TP, nous allons approximer, sous Matlab, la dérivée première f 0 (x) et la dérivée seconde
f 00 (x). Notons que l’expression analytique de f (x) peut être connue comme elle peut être inconnue.
Compte rendu
Vous devez rédiger un compte-rendu dans lequel vous répondrez à toutes les questions de ce TP. La
qualité de la rédaction, de la synthèse, de l’analyse des résultats obtenus sont des critères importants
pour la note.
Principe
On considère une fonction f : [a, b] → R de classe suffisamment élevée, x ∈]a, b[ fixé. On veut
approcher (au mieux !) les dérivées de la fonction f au point x. Or
f (x + h) − f (x)
f 0 (x) = lim
h→0 h
avec h > 0 (petit), on obtient
f (x + h) − f (x)
f 0 (x) ' .
h
Nous constatons que cette approximation de f 0 (x) fait intervenir la valeur de f en x et x + h, ce
qui nous conduit à approcher les nombres f 0 (x), f 00 (x), · · · , f (n) (x) en utilisant un ensemble discret de
points. Une des méthodes les plus anciennes utilisées pour obtenir des formules de dérivation numérique
consiste à construire des quotients différentiels à l’aide des développements de Taylor.
h2 00
f (x + h) = f (x) + h f 0 (x) + f (ξ), ξ ∈ [x, x + h].
2!
On obtient
f 0 (x) ' f 0 (x) = f (x + h) − f (x) ,
c’est la formule de différences finies progressives.
d
h
h
Ed = − f 00 (ξ), ξ ∈ [x, x + h],
c’est l’erreur commise.
2
2
f (xi+1 ) − f (xi )
f 0 (xi ) ' fd0 (xi ) = , i = 0, · · · , N − 1. (1)
h
On remarque que la relation (1) n’est pas définie pour i = N , on perd donc le dernier point de
grille quand on utilise cette relation pour approcher f 0 (xi ).
2. La formule de différences finies régressive donne :
f (xi ) − f (xi−1 )
f 0 (xi ) ' fg0 (xi ) = , i = 1, · · · , N. (2)
h
On remarque que la relation (2) n’est pas définie pour i = 0, on perd donc le premier point de
grille quand on utilise cette relation pour approcher f 0 (xi ).
3. La formule de différences finies centrées donne :
f (xi+1 ) − f (xi−1 )
f 0 (xi ) ' fc0 (xi ) = , i = 1, · · · , N − 1. (3)
2h
On remarque que la relation (3) n’est pas définie pour i = 0 et i = N , on perd donc le premier
et le dernier point de grille quand on utilise cette relation pour approcher f 0 (xi ). Constatons
aussi que
fg0 (xi ) + fd0 (xi )
fc0 (xi ) = , i = 1, · · · , N − 1.
2
3
Soient la fonction f : x → sin(x) et le segment [0, π/2] que l’on divise en 10 intervalles.
1. Représenter les dérivées fd0 , fc0 , fg0 en chacun des points de la subdivision.
2. Ajoutez le traçage de graphe de la fonction dérivée f 0 sur une même figure avec une couleur
différente et une légende. Que remarquez-vous ?
3. Quelle est la méthode la plus performante pour le calcul de la dérivée numérique ?
4. Matlab dispose d’une fonction prédéfinie de calcul de la dérivée appelée diff. Pour trouver la
dérivée de la fonction f (x) = sin(x), on écrira :
syms x ;
f = sin(5 ∗ x) ;
df = dif f (f )
Ici la commande syms crée des variables et des fonctions symboliques.
5. Matlab propose la fonction polyder pour calculer la dérivée d’un polynôme telle que :
dP
= n an xn−1 + (n − 1) an−1 xn−2 + . . . + a1 .
dx
Parce que la dérivée du polynôme est obtenue à partir de la formule précédent, la fonction
polyder n’est pas une opération de différentiation numérique. Sa syntaxe peut prendre la
forme suivante b = polyder(P ), renvoie un vecteur b contenant les coefficients de la dérivée du
polynôme P . Adapter cette fonction en utilisant le polynôme P (x) = 3x5 − 2x3 + x + 5.