Vous êtes sur la page 1sur 9

TP : Atelier Mathématique ISET Nabeul

Institut Supérieur des Etudes Technologiques de Nabeul


Filière : 1ére Année Licence, Génie Electrique
Matière : Atelier Mathématique

Travaux Pratiques N°05


Calcul numérique avec MATLAB

Objectifs :

L'objectif de ce TP est de présenter brièvement des routines de calcul numérique fournies


dans la version de base de MATLAB.

 Savoir rechercher des zéros d’une fonction ;


 Graphe de la dérivée d’une fonction f ’(x) ;
 Calcul d'intégrale ;
 Calculer le minimum d’une fonction.

1. Recherche des zéros d'une fonction


Problème : On cherche x0 tel que f(x0)=0.
La fonction fzero permet de résoudre ce problème. Il faut fournir d'une part la fonction
f elle-même, et d'autre part une estimation de f.
L'efficacité de l'algorithme est comme toujours dépendante de la valeur estimée choisie. La
fonction f peut-être définie par une directive inline ou bien écrite dans un fichier.

Exemple:
Par exemple on cherche le zéro de : Une approche graphique permet souvent de trouver une
estimation de x0 . La figure suivante montre ainsi que les fonctions x x et x cos(x) se
coupent en un point sur [-pi , pi] . Une valeur raisonnable pour l'estimation de x0 est par
exemple 0.

Imen AZZOUZ Page 1


TP : Atelier Mathématique ISET Nabeul

Estimation de x0 par approche graphique

On peut donc écrire, en utilisant inline :


1 >> f = inline('x-cos(x)')

2 >> fzero(f,0)

4 Zero found in the interval: [-0.9051, 0.9051].

5 ans =

6 0.7391

On remarquera que la variable f envoyée à la fonction fzero est elle-même une fonction. Toutes
les routines de calcul numérique de MATLAB nécessitant l'écriture d'une fonction par
l'utilisateur fonctionnent selon ce principe.
On peut également écrire la fonction dans un fichier f.m :
1 function y = f(x)

3 y = x-cos(x);

et ensuite on écrira :
1 >> fzero('f',0)

2 Zero found in the interval: [-0.9051, 0.9051].

3 ans =

4 0.7391

Imen AZZOUZ Page 2


TP : Atelier Mathématique ISET Nabeul

Attention:
On remarquera ici que le symbole f est mis entre quotes. Cela vient du fait qu'ici, la définition
de la fonction f est faite dans un fichier. Il est préférable en général de définir les fonctions
dans des fichiers car cela offre une plus grande souplesse.
Un dernier point important : comment faire lorsque la définition de la fonction dépend en plus
d'un paramètre ?
Par exemple, on veut chercher le zéro de la fonction où m est un paramètre susceptible de
varier entre deux exécutions. On ne peut pas rajouter un argument à la définition de notre
fonction f car fzero impose que f ne dépende que d'une variable. Une solution serait
d'affecter m dans le corps de la fonction mais elle est mauvaise car :
 lorsque l'on veut changer la valeur de m il faut modifier la fonction,
 cette fonction sera peut-être appelée des dizaines voire des centaines de fois par fzero, et
on répétera à chaque fois la même instruction d'affectation de m.
Exemple :
1 function y = f(x)

3 global m

4 y = x-cos(m*x);

et on cherchera son zéro en écrivant :

1 >> global m

2 >> m = 1;

3 >> fzero(f,0)

Notons enfin que l'on aura tout intérêt à mettre les trois lignes ci-dessus dans un fichier de
commandes, et à lancer ce fichier de commandes en bloc.

2. Minimum d’une fonction f(x)

Fonction :

Fmin (version 4.2.)

Fminbnd (version 6.5.)

Exemple :

Imen AZZOUZ Page 3


TP : Atelier Mathématique ISET Nabeul

Il faut commencer par créer le fichier .m associé à cette fonction :

Dessinons maintenant le graphe de cette fonction :

>> fplot( 'f1' , [ -10 10 ] )

>> grid on

Cherchons le minimum de cette fonction dans l’intervalle 0 à 5 :

>> fmin ( 'f1' , 0 , 5 )

ans =

2.1177

>> f1(ans)

ans =

0.0903

Travail demandé 2 :

Soit les fonctions :

5
𝑓1 𝑡 = cos 2𝑡 + 1 − 3𝑡 +
𝑡2

Imen AZZOUZ Page 4


TP : Atelier Mathématique ISET Nabeul

5𝑡
𝑓2 𝑡 = sin t 2 + 3𝑡 + 4𝑡 2 +
𝑡+3

1. Présenter graphiquement les fonctions dans deux courbes séparées.


2. Trouver les racines des fonctions.
3. Déterminer les minimums des fonctions.

3. Calcul d'intégrale

Fonctions :

quad : algorithme de Simpson

quad8 : algorithme de Newton-Cote (version 4.2.)

quadl (version 6.5.)

Exemple :

Il faut commencer par créer le fichier .m de la fonction à intégrer :

>> fplot( 'f4', [ 0 1 ])

>> grid on

Imen AZZOUZ Page 5


TP : Atelier Mathématique ISET Nabeul

>> quad( 'f4' , 0 , 1 ) >> format long e

ans = >> quad( 'f4' , 0 , 1 )

3.1416 ans =

3.141592502458707e+000

La valeur exacte de cette intégrale est pi.

>> pi

ans =

3.141592653589793e+000

Il y a un petit écart ...

Améliorons la précision avec une tolérance de calcul de 1e-10

>> quad( 'f4' , 0 , 1 , 1e-10 )

ans =

3.141592653589792e+000

... ce qui est beaucoup mieux !

>> quad8( 'f4' , 0 , 1 , 1e-10)

ans =

3.141592653589793e+000

Imen AZZOUZ Page 6


TP : Atelier Mathématique ISET Nabeul

4. Graphe de la dérivée d’une fonction f ’(x)

 Prenons l'exemple suivant :

Commençons par créer le fichier .m de la fonction :

>> [ x y ] = fplot ( 'f2' , [ 0 2*pi Une approximation de la dérivée


]) est donnée par :

x= >> dy = diff(y)./diff(x)

0 dy =

0.0126 -0.0276

0.0251 -0.0804

… -0.1292

6.2455 …

6.2643 0.1370

6.2832 0.0438

y= >> plot (x , dy)

0.5000 ??? Error using ==> plot

0.4997 Vectors must be the same


lengths.
0.4986
>> length(x)

ans =
0.4966
307

Imen AZZOUZ Page 7


TP : Atelier Mathématique ISET Nabeul

0.4992 >> length(dy)

0.5000 ans =

306

Problème !

Le vecteur dy a un élément de moins que le vecteur x, ce que n'apprécie pas la fonction plot.

Nous allons contourner la difficulté en ignorant le dernier élément du vecteur x :

>> plot ( x (1 : length(x)-1 , : ) , dy , '. ')

>> grid on

Comparons avec la dérivée exacte (couleur bleue) :

>> hold on

>> fplot ( 'cos(x) - 1.5*sin(3*x) - cos(5*x)' , [ 0 2*pi ] , 'b.' )

En vert, la fonction f2(x) :

>> fplot ( 'f2' , [ 0 2*pi ] , 'g.' )

Imen AZZOUZ Page 8


TP : Atelier Mathématique ISET Nabeul

Travail demandé :

Soit la fonction suivante :

1
𝑔 𝑥 = 𝑥 2 + 4 sin 𝑥 +
𝑋+2

1. Tracer le graphe de cette fonction


2. Déterminer les zéros de cette fonction

Soit la fonction suivante :

1
𝑕 𝑥 = 𝑥2 +
𝑥2 + 2
a- Tracer le graphe de cette fonction
b- Calculer le dérivé de cette fonction entre [1 5]
c- Calculer l’intégrale entre [0 3] de cette fonction

Imen AZZOUZ Page 9

Vous aimerez peut-être aussi