You are on page 1of 20

Atelier Informatique

Compte rendu sur







Elaboré par : Nidhal AKROUT
Elève ingénieur de l’école polytechnique


Année universitaire 2012 – 2013
République Tunisienne
Ministère de l’Enseignement
Supérieur et de la Recherche
Scientifique
Ecole Polytechnique de
Tunisie
I I. . I In nt tr ro od du uc ct ti io on n e et t d dé éf fi in ni it ti io on n : :
MATLAB
®
est un langage de haut niveau et un environnement interactif pour le calcul
numérique, la visualisation et la programmation. MATLAB permet d’analyser des
données, de développer des algorithmes et de créer des modèles et des applications. Le
langage, les outils et les fonctions mathématiques intégrées vous permettent d’explorer de
nombreuses approches et d’atteindre la solution plus rapidement qu’avec des feuilles de
calcul ou des langages de programmation traditionnels, comme C/C++ ou Java

.
MATLAB peut être utilisé pour toute une série d’applications, y compris le traitement de
signaux et les communications, le traitement des images et des vidéos, les systèmes de
contrôle, les tests et mesures, la finance sur ordinateur et la biologie sur ordinateur. Plus
d’un million d’ingénieurs et de scientifiques dans l'industrie et l'enseignement utilisent
MATLAB, le langage de l'informatique technique.
http://www.mathworks.fr/products/matlab/index.html
I II I. . P Pr ré és se en nt ta at ti io on n d de e l la a m ma an ni ip pu ul la at ti io on n : :
Cette manipulation a pour but de :
 Se familiariser avec la manipulation des matrices, et le calcul matriciel.
 Introduire des graphes.
 Faire quelques résolutions des problèmes et d'équations différentielles de premier,
second, troisième et quatrième ordre.
I II II I. . M Ma an ni ip pu ul la at ti io on n : :
1 1. . P Pa ar rt ti ie e A A : :
a a. . M Ma an ni ip pu ul la at ti io on n d de es s m ma at tr ri ic ce es s : :
Matlab fonctionne avec un seul type de structure de donnée : des matrices à éléments
numériques réels ou complexes.
On peut déclarer une matrice avec différentes manières.

o Saisie directe d'une matrice :

 Pour passer d’une colonne à une autre en utilise l’espace et pour passer d’une ligne à une
autre, on utilise le « ; »



>> A= [1 2 3 ; 4 5 6 ; 7 8 9 ]
A =
1 2 3
4 5 6
7 8 9

o Saisie d’un vecteur :

 Pendant l’affichage d’une matrice, matlab calcule les formules et donne une valeur finale.

o Extension d’un vecteur :

 On peut faire agrandir un vecteur en ajoutant une nouvelle composante abs(X(1)) à la
position 5.

o Construction d’une matrice plus grande :

 On peut concaténer des matrices de différentes tailles (vecteur et matrice 3x3) à condition
que le résultat finale soit une matrice rectangulaire.

o Extraction d’une matrice plus petite :

>> A=A(1:3,:)
A =
1 2 3
4 5 6
7 8 9
>> B = [A;r]
B =
1 2 3
4 5 6
7 8 9
10 11 12

>> C = [A A]
C =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
>> X(5)= abs(X(1))
X =
-1.3000 1.7321 1.2000 0 1.3000
>> X=[-1.3 sqrt(3) (1+2+3)/5]
X =
-1.3000 1.7321 1.2000
 L’extraction d’une matrice à partir d’une autre se fait en choisissant les lignes et les
colonnes à extraire.
Dans ce cas : « 1 :3 » extraction de la ligne 1 à la ligne 3.
« : » extraction de toutes les colonnes.

o Génération des matrices :

 Il s’agit d’un vecteur ligne dont les éléments sont entre 1 et 5 de pas =1 (par défaut).


 Dans ce cas, on a précisé le pas qui est égale à π/2. Le pas est donc encadré entre la
nombre supérieur et le nombre inférieur séparé par « : »


 Les deux bornes doivent s’inverser si le pas est négatif.


 La fonction sin s’applique à chaque élément du vecteur.


 De même pour les matrices, cette commande applique la fonction sin, ou autre fonction, à
chaque élément de la matrice, mais pas à la matrice toute entière.

>> sin(A)
ans =
0.8415 0.9093 0.1411
-0.7568 -0.9589 -0.2794
0.6570 0.9894 0.4121
>> sin(x)
ans =
0.8415 0.9093 0.1411 -0.7568 -0.9589
>> z= 6:-1:1
z =
6 5 4 3 2 1
>>y= 0:pi/5:pi
y =
0 0.6283 1.2566 1.8850 2.5133 3.1416
>> x=1:5
x =
1 2 3 4 5

 L’opérateur « .* » désigne une multiplication élément par élément, soit d’un vecteur ou d’une
matrice.


 Pour la déclaration d’une matrice vide.




b b. . F Fo on nc ct ti io on ns s q qu ui i g gé én nè èr re en nt t d de es s m ma at tr ri ic ce es s : :


 Déclaration d’une matrice nulle à 2 lignes et 3 colonnes.


 Déclaration d’une matrice dont tous les éléments égaux à 1.


>> rand(2:3)
ans =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
>> ones(2:3)
ans =
1 1 1
1 1 1
>> zeros(2:3)
ans =
0 0 0
0 0 0
>> V= [ ]
V =
[ ]
>> V= [ ]
V =
[ ]
>> y= exp(-x) .* sin(x)
y =
0.3096 0.1231 0.0070 -0.0139 -0.0065
 C’est une matrice dont les éléments sont pris aléatoirement.

 C’est la matrice identité 3x3


 Donne un vecteur ligne formé par 100 éléments linéairement espacés.


 Donne un vecteur ligne formé par 50 éléments logarithmiquement espacés.


 Ceci permet de tracer des graphes en 3D pour les fonctions à deux variables en précisant
le domaine et la précision du graphe par la modification du pas.
N.B. Le symbole « ; » masque le résultat.




On obtient donc le graphe suivant :




c c. . M Ma at tr ri ic ce es s s sp pé éc ci ia al le es s : :

 Ca donne une matrice diagonale. Les éléments de la diagonale sont -2 -1 0 1 2

On peut citer d’autre exemple de matrice sont utiles dans l’analyse numérique comme la
matrice companion « compan », la matrice de Hilbert « hilb », la matrice de Vandermond
« vander »…



>> diag(-2:2) ;

>> [X,Y] = meshgrid(-2 : .2 : 2, -2 : .2 : 2) ;
>> Z = X .* exp(-X.^2 - Y.^2) ;
>> surf(X,Y,Z)
>> logspace(1,5)
>> linspace(1,5)
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
-2
-1
0
1
2
-2
0
2
-0.5
0
0.5
d d. . C Co om mm ma an nd de e : :
« who » : affiche toute les variables utilisées
« whos » : affiche et donne des information sur les variables
Exemple :




e e. . L L’ ’u ut ti il li is sa at ti io on n d du u h he el lp p : :
La commande help permet de donner quelque information et des exemples sur la fonction
souhaitée.

Exemple :



f f. . L Le es s f fo on nc ct ti io on ns s: :
 Bibliothèque :

 On applique la fonction racine carré au logarithme décimal de 2

>> x= sqrt(log(2))
x =
0.8326
>> help compan
COMPAN Companion matrix.
COMPAN(P) is a companion matrix of the polynomial
with coefficients P.

Class support for input P:
float: double, single

Reference page in Help browser
doc compan
>> whos
Name Size Bytes Class Attributes
A 3x3 72 double
Y 21x21 3528 double
d 1x7 14 char

 Elle permet de déterminer la matrice de passage de la matrice A en la stockant dans V et
la matrice diagonale en la stockant dans D.


 La commande max permet de déterminer pour chaque colonne le nombre maximum en le
mettant dans le vecteur Y et en indiquant l’indice de ligne où il se trouve ce maximum.


 L’apostrophe après la matrice désigne son transposé.




>> Z = Y’
Z =
4
6
8

>>X =
1 6 3
4 5 6
1 0 8
>> [Y,i]= max(X)
Y =
4 6 8
i =
2 1 3
>> [V,D]= eig(A)
V =
-0.2320 -0.7858 0.4082
-0.5253 -0.0868 -0.8165
-0.8187 0.6123 0.4082
D =
16.1168 0 0
0 -1.1168 0
0 0 -0.0000
 Opération arithmétique :

 Les opérations classiques tels que « + » « * » « / » « ^ » reste les même. Mais il faut
faire attention en manipulant des matrices.
c.à.d, et comme l’explique l’exemple précédent, il y a une grande différence entre « * » et
« .* ». Ce point qui se situe avant l’opération fait changer une telle opération entre des
matrices en une opération entre les éléments des matrices.
L’utilité d’une multiplication élément par élément apparait dans le calcul du produit
scalaire, par exemple.

>> A= [1 2 3 ; 4 5 6 ; 7 8 9 ]
A =
1 2 3
4 5 6
7 8 9
>> B= ones(3)
B =
1 1 1
1 1 1
1 1 1
>> A*B
ans =
6 6 6
15 15 15
24 24 24
>> A.*B
ans =
1 2 3
4 5 6
7 8 9

 La fonction « exp » est appliquée à chaque élément de A

 En ajoutant la lettre « m » à la fin de la fonction, cette dernière s’applique désormais à la
matrice : exponentielle d’une matrice.
La même chose pour d’autre fonction prédéfinie comme « sqrt » « log » …


 Opération relationnelle :

 Il existe plusieurs opération relationnelles tels que :
« >= » supérieur ou égal
« == » égale (car le symbole « = » est réservé pour l’affectation)
« ~= » différent
La valeur booléenne est représenté en Matlab en binaire : 0 pour dire faux et 1 pour vrai.

Exercice :
Calcul et représentation graphique des fonctions de Bessel de première et deuxième espèces : Jn(x) et
Yn(x), n= 0,1,2,3 :





>> 3<4
ans =
1
>> expm(A)
ans =
1.0e+006 *
1.1189 1.3748 1.6307
2.5339 3.1134 3.6929
3.9489 4.8520 5.7552
>> exp(A)
ans =
1.0e+003 *
0.0027 0.0074 0.0201
0.0546 0.1484 0.4034
1.0966 2.9810 8.1031

1
ère
espèce :



2 espèce :


0 1 2 3 4 5 6 7 8 9 10
-0.5
0
0.5
1
0 1 2 3 4 5 6 7 8 9 10
-7
-6
-5
-4
-3
-2
-1
0
1
x 10
5
>> hold on
fplot ('bessely(0,x)',[0 10])
fplot ('bessely(1,x)',[0 10],'y')
fplot ('bessely(2,x)',[0 10],'g')
fplot ('bessely(3,x)',[0 10],'r')
>> hold on
fplot ('besselj(0,x)',[0 10])
fplot ('besselj(1,x)',[0 10],,'g')
fplot ('besselj(2,x)',[0 10], 'y')
fplot('besselj(3,x)',[0 10],'r')
hold off

Puis on compare les résultats obtenus avec les valeurs calculées par excel. Onc charge ces
résultat par la commande « load ». On trouve presque les mêmes résultats


2. P Pa ar rt ti ie e B B : :
I I. . L Le es s f fo on nc ct ti io on ns s e et t l le es s é éq qu ua at ti io on ns s: :
Une classe de fonctions Matlab ne fonctionne pas avec des matrices numériques, mais avec
des fonctions mathématiques. Ces fonctions sont représentées par Matlab avec des Script
ayant l’extension .m
Il faut d’abord enregistrer la fonction avant de l’appeler dans l’espace de travail.
Exemple :
Dans ce petit exemple, on va calculer la fonction pour des valeurs différente de et tracer
son graphe. Avec
=
1
−0.3
2
+0.01
+
1
−0.9
2
+0.04
−6

Pour définir une fonction, on utilise [File- New- Script] (pour la version 7)








Puis on saisie le code de la fonction dans la fenêtre correspondante et on enregistre le fichier
pour qu’il soit détecté par Matlab.






Enfin, on revient à la fenêtre principale de Matlab où on précise le domaine de calcul
souhaité de cette fonction et on trace la courbe dans ce domaine.

Et on trouve le graphe suivant :

Ceci est valable pour une variable réelle, mais ce n’est pas le même cas pour les matrices.

 On applique la fonction sinus à la matrice A.


 Permet de calculer l’intégrale numérique de la fonction exemp entre 0.5 et 1


 Déterminer le minimum d’une fonction. Pour les fonctions à plusieurs variables, on doit
utiliser la commande « fmins ».


 Détermine les racines de fonctions à une variable. Les racines sont les antécédents des
points proches de 0.

-1 -0.5 0 0.5 1 1.5 2
-20
0
20
40
60
80
100
x0= fzero('exemp',0) ;
x= fmin('exemp',0.5,1) ;
q= quad('exemp',0.5,1) ;
>> Y = funm(A,'sin')
Y =
-0.6928 -0.2306 0.2316
-0.1724 -0.1434 -0.1143
0.3479 -0.0561 -0.4602

>> x = -1 : .02 : 2 ;
>> plot(x,exemp(x)) ;


I II I. . E Eq qu ua at ti io on ns s d di if ff fé ér re en nt ti ie el ll le es s: :
Matlab nous permet, à partir des diverses commandes, de résoudre les équations
différentielles. Pour la commande « ode23 » : 2
ème
/3
ème
ordre avec la méthode de Runge –
Kutta, et la commande « ode45 » : 4
ème
/5
ème
ordre avec la méthode de Runge – Kutta –
Fehlberg.
Exemple : « Equation différentielle de Van der Pol »
Cette équation est de second ordre +
2
−1 + = 0. On peut la résoudre en se faisant
un changement de variables et en se référant à un système de deux équations.

1
=
1
1 −
2
2

2

2
=
1



Pour résoudre une telle équation différentielle il faut parcourir ces mêmes étapes.
On doit créer tout d’abord une fonction avec script.

Puis on commence par faire l’initialisation de x0

 x0 doit être un vecteur colonne afin d’initialiser x1 et x2.


 Cette instruction permet de résoudre l’équation vdpol sur l’intervalle t ϵ [0 20] en x0.
Puis on trace la courbe :


>> plot ( t , x )
>> [t,x] = ode23('vdpol',[0 20],x0);
>> x0 = [0 0.25]'
x0 =
0
0.2500

On remarque ici la présence de deux courbes qui représentent la variation des deux fonctions
x(t) et x’(t).En fait x est un vecteur qui a 2 composantes x et x’. Pour visualiser seulement la
variation de x, on doit extraire la deuxième composante de x.

Et on obtient enfin :

I II II I. . L Le es s i in ns st tr ru uc ct ti io on ns s d de e c co on nt tr rô ôl le e: :
Matlab, comme le reste des langages de programmation, offre un ensemble d’instruction de
contrôle.
Exemple :
 Boucle Pour :
for v = début :fin
instructions
end

0 2 4 6 8 10 12 14 16 18 20
-3
-2
-1
0
1
2
3
0 2 4 6 8 10 12 14 16 18 20
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
>> plot( t , x( : , 2 ) )
 Boucle Tant que :
while expression
instructions
end
I IV V. . A Ap pp pl li ic ca at ti io on ns s: :
Exercice 1 :
o Recherche des racines de la fonction =
3
− 2 −5


On commence par écrire un script




Puis on utilise la fonction « fzero » pour le calcul des racines :
>> fzero('f',0)
ans =
2.0946

o Représentation graphique de la suite de fonction

= cos avec
= 0,1,2,3 et 0 < < 20 :


On déclare cette fonction comme un script



Puis on utilise la commande « plot » :

>> for i=1:3
plot(x,T(i,x));
hold on;
end

o Représentation et calcul de l’intégrale sur tout le domaine de définition de la fonction
=
1
1 +²

On suit le même démarche :









Pour le calcul de l’intégrale, on utilise la commande « quad ».


0 2 4 6 8 10 12 14 16 18 20
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
x 10
4
-50 -40 -30 -20 -10 0 10 20 30 40 50
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
>> quad ( 'g ' , -99 , 99 )
ans =
3.1214
>> plot(-50:50,g(-50:50));
o Calcul de deux manières différentes les sin de la matrice =
1 2
3 5


1
ere
méthode :

 C’est, en effet la méthode classique qu’on a déjà vue.

2
ème
méthode :
On se ramène à la diagonalisation de la matrice A et on applique la fonction sin aux éléments de D,
c.à.d. la diagonale.

 Pour les autres fonction comme log et exp, on peut utiliser la commande « expm » ou
« logm » comme une 3
ème
méthode..

>> [V,D]=eig(A)
V =
-0.8646 -0.3613
0.5025 -0.9325
D =
-0.1623 0
0 6.1623
>> V * sin(D) * inv(V)
ans =
3.0166 2.7092
-4.0638 -2.4018

>> funm ( A , 'sin' )
ans =
3.0166 2.7092
-4.0638 -2.4018
>> A= [1 2 ; 3 5]
A =
1 2
3 5

o Résolution d’une équation différentielle régissant le mouvement d’une pendule simple
+
2

= +sin −

avec = 10 ; = 0.5 ; = 0.02 ;
= 10 ; = 9.8


On commence par la fonction suivante :

Puis

et on obtient le graphe suivant :


 La courbe montre que la limite de cette fonction est égale a π en +∞. Donc on a pris un
repère dont le zéro des angles est dirigé vers le haut.
 Pour changer l’amortissement, on peut changer la valeur de B. Dans ce cas B=1


o Calcul des entiers dont les carrés sont entre M et N
Pour cas ou M= 3 et N = 40, on déclare le bloc suivant :
>> x0= [0 pi/3];
>> [t,x]=ode23('teta',[0 100],x0);
>> plot( t , x( : , 2 ) )




V V. . C Co on nc cl lu us si io on n : :
Ainsi, Matlab est un logiciel qui offre à l’utilisateur tant d’avantages surtout au niveau du calcul
matriciel, la manipulation des fonctions et le traçage des courbes mathématiques.




>>M=3;
N=40;
i=1;
for x=min(M,N):max(M,N)
if (floor(sqrt(x)))^2==x
X(i)=sqrt(x);
i=i+1;
end
end
X