Vous êtes sur la page 1sur 8

I.N.S.S.E.T. U. P. J. V.

Licence Maths et SPI 2me anne

Initiation Matlab M. Marcoux

TP 5 : Drivation numrique

1. Introduction
Le calcul de la drive dune fonction relle quelconque peut tre trs long et trs difficile. Pour se rendre compte de la difficult, il suffit dimaginer davoir calculer la drive de la fonction :

cos x f ( x) = x

sin( x 2 )

En calculant numriquement la drive, on ne dispose plus de son expression, mais on obtient sa valeur quelle que soit labscisse. De plus, les algorithmes de calcul de la drive sont utilisables quelle que soit la fonction f.

Lobjectif de cette sance est calculer numriquement la drive dune fonction relle. La qualit de lestimation numrique de la drive sera value. Les points suivants seront abords : Ecriture de script fonction Calcul numrique Estimation derreurs de calcul

Bibliographie : Pour de plus amples informations et des complments sur lanalyse numrique en gnral, vous pouvez vous reporter par exemple aux ouvrages suivants : Algorithmique numrique, par Claude Brzinski, Ed. Marketing, 1988 Elements danalyse numrique, par Marc Atteia, Cepadues, 1990 Introduction lanalyse numrique, par Jacques Rappaz, Presses polytechniques et universitaires romandes, 1998

2. Rappels mathmatiques et prparation


a) Discrtisation des variables
Soit une fonction f ( x) donne tudier. Sa drive est note
d f ( x) , o x est une variable relle. dx

Dans la pratique, un ordinateur ne sait traiter que des objets discrets ou finis, il nest donc pas possible de travailler sur toutes les valeurs possibles de x (qui sont en nombre infini). Le premier travail faire est donc de discrtiser la variable x. On utilise alors une variable discrtise x n dfinie par x n = n h , o h est le pas de discrtisation. On note : f n = f ( x n ) f ( xn ) f ( xn +1 )

xn

x n +1

Plus la valeur de h est faible, plus la fonction discrte f n est proche de la fonction relle
f ( x) .

Cependant, chaque valeur x n occupe un espace de mmoire et est reprsent avec une prcision limite.

Remarque : Plutt que de reprsenter les nombres avec un nombre limit de chiffres aprs la virgule, ils sont reprsents sous la forme de flottant : x = m * 10 b o m est la mantisse, et b lexposant ; quivalent la notation scientifique des calculatrices.

Cette reprsentation reste nanmoins limite en prcision et les approximations peuvent gnrer des erreurs de calcul.

b) Rappel sur la drivation


d f ( x) . dx

La drivation dune fonction f ( x) est note : Elle est dfinie par la limite droite :

d f ( x) f ( x + h) f ( x ) = lim h 0 dx h

La drive peut galement et redfinie partir de la limite gauche :


d f ( x) f ( x) f ( x h) = lim h 0 dx h

Il est galement possible de calculer une limite symtrique :


d f ( x) f ( x + h) f ( x h ) = lim h 0 2h dx

c) Formules de drivation numrique


En calculant la drive numrique, on ne cherche pas obtenir lexpression littrale de la drive, mais valuer celle-ci pour tous les points. Cette valuation est directement ralise partir de la suite numrique f n . On note df n lvaluation de la drive ralise au point x n .

En adaptant les quations prcdentes, on obtient trois mthodes de calcul de df n : Avec Evaluation droite : df n = Evaluation gauche : df n =
f n+1 f n h f n f n 1 h

Evaluation symtrique : df n = f n = f ( xn ) ,

f n+1 f n 1 2h
f n 1 = f ( x n h)

f n +1 = f ( x n + h) et

Graphiquement, la drive dune fonction correspond la pente de celle-ci en un point donn.

Les questions se poser lors de lvaluation numrique de la drive dune fonction sont : Quelle mthode choisir ? Quelle valeur choisir pour le pas de discrtisation h ?

d) Fonction tudie
Soit la fonction f ( x) = x e sin( x ) ,

Calculez analytiquement lexpression de sa drive g ( x) =

d f ( x) dx

3. Manipulation
Allez dans le rpertoire correspondant votre nom (c:\TPMatlab\votrenom\). Crez un rpertoire TP5 et allez dans celui-ci

a) Calcul des drives numriques

Calcul et affichage de la fonction f ( x) = x e sin( x ) , ainsi que de sa drive droite

Crez un script fonction dans un fichier nomm "f.m", permettant le calcul des valeurs de f ( x) en tout point x Dans la fentre de commande, vrifiez que f est une nouvelle fonction utilisable en affichant f (0) et f (3 / 2) Crez ensuite un script "derive1.m" permettant le calcul de g ( x) selon la mthode de la drive droite. Ce script traitera les variables suivantes : le pas de discrtisation h, un vecteur x contenant les valeurs de -10 10 par pas de h et un vecteur ff contenant les valeurs de f. Lutilisation de la notion de boucle est recommande (boucle for)

Remarque ; Le calcul de g ( x) ne fait pas appel la connaissance de lexpression de g ( x) , do lintrt de la drivation numrique. Intgrez dans le script le traage des courbes de f et g, sur une mme figure, avec des couleurs diffrentes et une lgende Tracez des courbes de f et g pour un pas h = 0.1 et sauvegardez cette figure au format jpeg sous le nom derive1

Calcul de la drive avec les deux autres mthodes : Copiez votre fichier script "derive1.m" dans un fichier "derive2.m" que vous allez modifier pour ajouter les autres mthodes de drivation Dans la boucle, ajoutez le calcul dun vecteur df2 contenant la valeur de la drive numrique de f, en valuant la drive gauche. Ajoutez le calcul dun vecteur df3 contenant le calcul de la drive numrique symtrique de f Ajoutez le traage des graphes de df1, df2 et df3 sur une mme figure avec des couleurs diffrentes et une lgende Tracez les graphes de df1, df2 et df3 pour un pas h = 0.1 Sauvegardez ce graphe au format jpeg sous le nom derive2

Le script que vous venez de raliser est valable quelle que soit la fonction f. Pour tudier une autre fonction, la seule modification faire est de rcrire le script "f.m". Ce qui est trs rapide.

b) Comparaison des trois mthodes


Nous allons maintenant comparer les trois mthodes de calcul de la drive numrique.

Sil est possible dapprcier la qualit des trois algorithmes en observant les graphes des drives, il est indispensable de chiffrer cette qualit. La qualit dun algorithme de drivation svalue en comparant les rsultats avec la vraie drive de la fonction tudie, lorsqu'elle est connue.

La qualit dune mthode de drivation numrique peut alors sestimer en chaque point, en calculant la diffrence entre la fonction g analytique (de la prparation) et la drive numrique value pour ce point. Ainsi :

erreur = df n g n

Crez les instructions permettant de calculer et de tracer lerreur sur le calcul de la drive en utilisant la premire mthode de drivation, en suivant les recommandations suivantes : o Crez un script fonction dans un fichier nomm "g.m" qui code la fonction g, la drive exacte de f, calcule dans la prparation o Sauvegardez le script "derive1.m" sous le nom "erreur1.m" o Dans la boucle, ajoutez le calcul des lments suivants : Un vecteur gg contenant la valeur de la fonction g au point x(k ) , k tant lindice de la boucle Un vecteur erreur1 contenant la valeur absolue de la diffrence entre la fonction g et la drive numrique value avec la mthode 1 (limite droite) o Modifiez le script pour tracer le graphe de erreur1 o Enregistrez le rsultat obtenu dans une figure A partir du script prcdent, crez un script "erreur2.m" permettant de calculer et tracer lerreur sur le calcul de la drive value avec les deux autres mthodes o Ajoutez le calcul des vecteurs erreur2 et erreur3 contenant respectivement les valeurs absolues de la diffrence entre la fonction g et les drives numriques values avec les mthodes 2 et 3 (limite gauche et symtrique) o Tracez les graphes de erreur2 et erreur3 o Enregistrez les rsultats obtenus dans des figures Conclure o Observez les erreurs et conclure sur les mthodes. o Quelle est la mthode la plus performante

c) Choix du pas de discrtisation


Si la mthode de la drive symtrique est la plus prcise, il reste dterminer la valeur optimale du pas de discrtisation h. Lobjectif de cette partie est dobserver lvolution de la qualit de la drivation numrique en fonction du pas h. Observez le comportement des drives numriques pour quelques valeurs de h : o Lancez le script "erreur2" et notez la valeur maximale de lerreur pour chacune des trois mthodes. o Modifiez et lancez le script pour faire le calcul avec un pas h = 0.05 , puis avec un pas h = 0.01 o Comment volue lerreur ? Comment obtenir une erreur encore plus faible, votre avis ?

Comme dans lordinateur les nombres sont reprsents avec une prcision limite, des erreurs de calcul peuvent survenir lors de la manipulation de trs petits nombres. Dans ces conditions, lutilisation de trs faibles valeurs de h va gnrer des erreurs de calculs importantes, qui vont venir perturber la qualit de la drivation numrique. Crez un script fonction dans un fichier nomm "optimum1.m" Pour labscisse x = 2 , calculez la drive numrique (limite droite) de la fonction f pour des valeurs de h de plus en plus faibles. Ceci consiste donc valuer la drive de f ( x) pour des valeurs de h dcroissantes.

Comparez ces valeurs la vraie drive donne par g o Dans le script, laide de linstruction format, forcer laffichage des nombres sur 15 dcimales o Crez le vecteur N contenant les nombres de 1 50 o Calculez le vecteur h tel que h(k ) = 1 2 N ( k ) . o Observez les valeurs de h dans la fentre de commande.

o Posez x = 2 o Faire une boucle pour parcourir tous les lments de h. Dans cette boucle : Crez un vecteur df1 qui contient la drive selon la mthode 1 (limite droite) de la fonction f au point x = 2 Crez un vecteur erreur1 contenant la valeur absolue de la diffrence entre la fonction g et la drive numrique value avec la mthode 1 (limite droite), au point x = 2 o Affichez sous forme dun tableau 2 colonnes les vecteurs h et erreur1 (commande disp). La premire ligne doit afficher h(1) et erreur (1) , la seconde h(2) et erreur (2) , etc o Tracez le graphe de erreur1 en fonction de h en chelle log en utilisant la commande loglog Copier le script "optimum1.m" dans un fichier "optimum2.m"

o Modifiez ce script pour calculer les erreurs avec les deux autres mthodes de drivation numrique o Affichez tous les graphes les uns sur les autres, dans la mme figure. Les trois courbes seront soit de couleur diffrentes, soit de type diffrent (trait plein, pointill, hach, ) o Mettre les labels aux axes (commandes label) o Indiquer une lgende (commande legend) o Donner enfin un titre au graphique Conclure o Commentez les courbes obtenues. o Pour quelle valeur de h et avec quelle mthode obtient-on la meilleur estimation de la drive de la fonction f ?