Ecole Nationale Des Sciences Applique de Khouribga
Initiation au logiciel Matlab
Pr. Abdelkabir LAHRECH
Anne 2011-2012
1
MATLAB
MATLAB signifie MATrix LABoratory. Cest un logiciel de calcul numrique cr en 1984. Il permet de faon interactive de faire des calculs matriciels; de simuler des systmes; danalyser des donnes; de visualiser les rsultats en 2D et 3D MATLAB inclut un ensemble de fonctions (fichiers .m) Plusieurs fonctions prdfinies pour analyser et reprsenter des donnes MATLAB peut tre intgr avec du code C ou FORTRAN ;
2
MATLAB
En MATLAB, il existe deux modes de fonctionnement : mode interactif : MATLAB excute les instructions au fur et mesure quelles sont donnes par lutilisateur mode excutif : MATLAB excute ligne par ligne un programme en langage MATLAB crit dans un fichier .m Fichiers .m : ce sont des programmes ( en langage MATLAB (crits par lutilisateur) ; Fichiers .dat : ce sont des fichiers de donnes en langage MATLAB Un programme est une suite dinstructions Les instructions contiennent des oprateurs, des mots-clefs ou des fonctions
Dmarrer MATLAB
cliquer sur licne Matlab sur le bureau ou dans le groupe Matlab du menu Dmarrer/Programmes. voici ce que vous devez voir apparatre
Se reprer dans lenvironnement de travail de MATLAB
dossier travail
Donnes
fentre de commande ou espace de travail
Les instructions sont excutes au fur et mesure quelles sont entres par l utilisateur Historique des commandes soit sous forme de squences dexpressions ou scripts enregistres dans des fichiers-texte appels m-files et excutes depuis la fentre de commande ;
5
Commandes systme
pwd : nom du rpertoire courant cd : changer de rpertoire dir, ls : contenu du rpertoire courant mkdir : crer un nouveau rpertoire delete : effacer un fichier copyfile : copier un fichier
Aide en ligne sous MATLAB
INSTRUCTION HELP help " nom de la fonction " donne des renseignements sur l'utilisation de la fonction. Exemple
Tapez : help cos
>> COS Cosine. COS(X) is the cosine of the elements of X.
Tapez : y= cos(pi) >>cos(pi) y= -1
7
Variables utilises par MATLAB(1)
1. Variables spciales
Tapez : eps % (lerreur de la machine (epsilon) )
>> ans = 2.2204e-16
Tapez : i ou j
>> i = 0 + 1.0000 i
Tapez realmax % ( le plus grand nombre positif )
>> realmax = 1.7977e+308
Tapez realmin % (le plus petit nombre positif )
>> realmin = 2.2251e-308
Remarque : En MATLAB il ny a pas dinstructions pour dclarer une variable. Une nouvelle variable est dfinie en donnant son nom 8 et sa valeur numrique
Variables utilises par MATLAB(2)
2. Scalaire : une matrice 1x1
Tapez : s = 8
>> s = 8
% nombre rel positif
Tapez : s = 2.5 + i*8.06
>> s = 2.5000 + 8.0600i
% nombre complexe
Tapez : s
>> s =
% son conjugu complexe
2.5000 - 8.0600i
9
Variables utilises par MATLAB(3)
3. vecteurs et matrices
Tapez : A = [1 2 3 4]
>> A 1 2 3 4
% vecteur ligne
Tapez : A = [1 ; 2 ; 3 ; 4]
>> A = 1 2 3 4
% vecteur colonne
Tapez : A (4)
>> ans 4
% on accde la composante 4
10
Variables utilises par MATLAB(4)
Tapez : A = [1 2 3 ; 6 5 7] % matrice 2x3
>> A 1 6 2 3 5 7
Tapez : size(A)
>> ans 2 3
% dimensions de la matrice A
Tapez : A
>> ans 1 2 3
% matrice transpos de A
6 5 7
11
Variables utilises par MATLAB (5)
4. Matrices prdfinies Matrice identit : eye( nlin ,ncol) Tapez : Id = eye( 2,2) % matrice identit dordre 2
>> Id 1 0 0 1
Matrice Unit : ones(nlin ,ncol) (tous les lments valent 1) Tapez : unite = ones( 2,2)
>> unite 1 1 1 1
12
Variables utilises par MATLAB (6)
Matrice nulle : zeros( nlin,ncol) Tapez : Id = zeros( 2,2)
>> Id 0 0 0 0
Matrice alatoire randn(nlin,ncol) (moyenne =0, cart type =1) Tapez : y = randn( 1000,1) % matrice remplie % alatoirement
13
Fonctions mathmatiques dans MATLAB (1)
Fonction trigonomtriques
sin : sinus cos : cosinus tan : tangente asin : sinus inverse (arcsin) acos : cosinus inverse (arccos) atan : tangente inverse (arctan) asinh : sinus hyperbolique inverse sinh : sinus hyperbolique (sh) cosh : cosinus hyperbolique (ch) acosh : cosinus hyperbolique inverse tanh : tangente hyperbolique (th) atanh : tangente hyperbolique inverse
14
Fonctions mathmatiques dans MATLAB (2)
Fonction mathmatiques de base
exp : exponentielle log10 : logarithme base 10 log : logarithme base e sqrt : racine carre abs : valeur absolue, module (nb. complexe) real : partie relle imag : partie imaginaire angle: argument (nb. complexe) round: arrondir
15
Fonctions portant sur les Matrices (1)
det(A) : renvoie le dterminant de la matrice carre A eig(A) : renvoi les valeurs propre (eigenvalues) de la matrice carre A
inv(A) : renvoie linverse de la matrice carre A trace(A) : renvoie trace de la matrice carre A rank(A) : renvoie le rang de la matrice carre A
16
Fonctions portant sur les Matrices (2)
norm(A) : norme 2 de la matrice A norm(A,2) : mme chose que norm(A)
A = AA tels que
T
(A ) = max
i = 1, n
et i , les valeurs propres de A
norm(A, 1) : norme 1 de la matrice A
A 1 = max
j
a
i =1
n
ij
norm(A, inf) : norme infini de la matrice A
A = max
i
a
j =1
ij
17
Manipulation de matrices
Extraction de sous -matrices
A ( 2 , 5 ) Extraction dun lment A (: , 5 ) Extraction dune colonne
A (1: 3 , 5) Extraction dune sous colonne A (1,:) Extraction dune ligne
diag(A) Extraction de la diagonale
18
Polynmes sous MATLAB
Les polynmes dans MATLAB sont dcrits par des vecteurs lignes dont les lments sont gaux aux coefficients par puissance dcroissante. Par exemple, pour entrer le polynme P(x) = x3 + 4x2 + 2x+ 3, Tapez P = [1 4 2 3]. Ce polynme peut tre valu en utilisant la commande polyval. Par exemple pour calculer le polynme P en x =2, on crit : polyval(P,2) roots(P) racines de P polyval(P,x) valuation de P en x conv(P1,P2) multiplication polynomiale deconv(P1,P2) division polynomiale
19
Oprateurs arithmtiques (1)
Matlab peut effectuer plusieurs oprations entre matrices. Les oprations fondamentales peuvent tre partages en deux catgories
1) Oprations matricielles
Les oprations matricielles usuelles sont dfinies par : + - * / ^
A+B : addition
[aij + bij ]
A - B : soustraction [ aij bij ]
A*B : multiplication [ aik * bkj ]
k
A/ B : division
[ A * B 1 ]
A^ 3 : puissance A * A * A seulement pour matrices carres
20
Oprateurs arithmtiques (2)
2) Oprations lment par lment
Pour excuter des oprations entre matrices lment par lment il faut faire prcder loprateur dun point . Les oprateurs lment par lment sont donc : .* ./ .^
A .* B : multiplication terme terme [aij * bij ] A ./ B : division terme terme
aij / bij
A .^ 3 : puissance terme terme a 3 ij
21
Oprateurs logiques et de relation
Oprateurs de comparaison
== ~= < > >= <= & | ~
gal (x==y) diffrent de (x~=y) strictement plus petit que (x <y) strictement plus grand que (x >y) plus grand ou gal (x >= y) plus petit ou gal (x <= y)
Oprateurs logique
et logique (x & y) ou logique (x |y) non logique (~y)
22
Exercices
Exercice 1
On note :
1 u1 = 2 , 3
5 u2 = 2 , 1
1 u3 = 3 7
Dfinir ces vecteurs sous matlab Calculer u1 + u2 , u1 + 3u 2 5u3 u3 / 3 Calculer u1
2
u2
u3
Exercice 2
On note :
2 3 A= 6 5 ,
Dfinir ces matrices sous matlab
2 3 4 B = 7 6 5 2 8 7
Calculer les dterminants, inverses, valeurs propres et vecteurs propres des matrices A et B
23
Gnration Automatique de nombres
Pour gnrer systmatiquement des vecteurs on utilise l'oprateur " : "
1. composantes espaces linairement d un pas constant syntaxe : c = dbut : pas : fin
Tapez : C= 0 : 0.5 : 3 >> C = 0
0.5000
1.000
1.500
2.000
2.5000
3.000
2. composantes espaces logarithmiquement (10debut 10fin ) syntaxe : c = logspace(log10(dbut), log10(fin), Npoints)
24
Formats daffichage
Il existe plusieurs types de format d'affichage dans Matlab. Voici ceux que l'on utilise le plus couramment.
format short % format par dfaut cinq chiffres format long % format long 15 chiffres
format short e % format court 5 chiffres avec
notation en virgule flottante
format long e % format long 15 chiffres avec notation en virgule flottante
25
Formats d affichage
Exemple
Suivant le format pi, scrira : format short format long format short e format long e 3.1416 3.14159265358979 3.1416e+000 3.141592653589793e+000
26
Commandes Graphiques(1)
Les donnes peuvent tre traces en utilisant des commandes graphiques puissantes. plot(x,y) : trac cartsien en coordonnes X-Y normal affiche le vecteur y en fonction du vecteur x semilogx(x,y) : trac en chelle semi-logarithmique (abscisse) semilogy(x,y) : trac en chelle semi-logarithmique (ordonne) stairs(x,y) : graphe en escalier stem(x,y) : graphe de raie bar(x,y) : graphe en barres
27
Commandes Graphiques (2)
title( ) : titre du graphique xlabel() : lgende pour labscisse ylabel( ) : lgende pour lordonne axis([ xmin xmax ymin ymax]) : dfinit lchelle des axes x et y ginput(n) : renvoie la position de la souris sur un graphique pour acqurir les coordonnes intressantes gtext() : placement de texte avec la souris grid : met une grille au graphe
28
Exemple
On veut tracer la courbe suivante :
Tapez le programme suivant : X= 0 : 10 : 100 ; Y= [ 4 4 6 9 13 17 22 30 37 51 56 ] ; figure(1) plot( X,Y); xlabel(Ouverture de la vanne (%)); ylabel(Dbit en m3/h); title(Caractristique dune vanne); grid
29
Graphique multiple
On peut tracer plusieurs graphiques dans la mme fentre en utilisant linstruction subplot pour diviser la fentre en plusieurs parties diviser la fentre en deux parties (2 x 1)
diviser la fentre en deux parties (1 x 2)
30
Exemple
On veut tracer la courbe suivante : Tapez le programme suivant : X= 0 : 10 : 100 ; Y= [ 4 4 6 9 13 17 22 30 37 51 56 ] ; figure(2) subplot(211), plot(X); subplot(212) plot(Y) ; grid
31
Exemple
figure1
figure2
32
Commandes Graphiques
Exercice 1
visualiser la courbe suivante : >> x = 0:pi/100:2*pi; >> y = sin(x); >> plot(x,y) >> xlabel(temps); ylabel(amplitude)
33
Commandes Graphiques
Exercice 2
visualiser les courbes : >> x = 0:pi/100:2*pi; >> y = sin(x); >> plot(x,y) >> xlabel(temps); ylabel(amplitude) >> t = 0:pi/100:2*pi; >> y1=sin(t); >> y2=sin(t+pi/2); >> plot(t,y1,t,y2) >> grid on
34
Commandes Graphiques
Exercice 3
visualiser les courbes : >> plot(sin(pi*(0:0.2:10))) >> plot(sin(pi*(0:0.2:10)),g) >> hold on >> plot(sin(pi*(0:0.2:10)),*r) >> title(cosinus); >> xlabel(temps); ylabel(amplitude)
35
Contrle de la fentre dcran
home : Repositionne le curseur en haut de l'cran load: Rcuprer des variables du disque save: Sauver des variables sur disque clear: Effacer des fonctions et des variables Exemple
Effacer l'cran en tapant home Retaper y et vous aurez le rsultat affich Enlevez de la mmoire les rsultats en tapant clear Retapez y et vous aurez : ??? Undefined function or variable y.
36
Scripts et fonction
On dfinit la fonction myfunction de la manire suivante: function [vars1 ,, varsn,]=myfunction(vare1,,varen) O : squence dinstructions
vars1,,varsn sont les variables de sortie de la fonction vare1,,varen sont les variables dentre de la fonction squence dinstructions est le corps de la fonction Il est impratif que la fonction ayant pour nom myfunction soit enregistre dans un fichier de nom myfunction.m On l'utilise sous Matlab en tapant : [vars1 ,, varsn,] = myfunction(vare1,,varen)
37
Boucle FOR : parcours dun intervalle
La boucle for parcourt un vecteur d'indices et effectue a chaque pas toutes les instructions dlimites par l'instruction end. Syntaxe : for indice = born_inf : born_sup squence dinstructions end O : born_inf est une variable appele lindice de la boucle born_sup et born_sup sont deux constantes relles (appeles paramtres de la boucle) squence dinstructions est le traitement effectuer pour les valeurs dindices variant entre born_inf et born_sup avec un incrment de 1 38
Boucle WHILE : tant que faire
La boucle while effectue une suite de commandes jusqu'a ce qu'une condition soit satisfaite. Syntaxe : While expression logique squence dinstructions end O : expression logique est une expression dont le rsultat peut tre vrai ou faux squence dinstruction est le traitement effectuer tant que expression logique est vraie
39
Instruction conditionne : IF
Linstruction conditionn a la forma suivante Syntaxe : if expression logique squence dinstructions 1 else squence dinstructions 2 O : end expression logique est une expression dont le rsultat peut tre vrai ou faux squence dinstruction 1 est le traitement effectuer si expression logique est vraie squence dinstruction 2 est le traitement effectuer si expression logique est faux
40
Instruction conditionne : switch
Une autre alternative lutilisation dune squence dinstructions conditionnes pour effectuer un choix. Il sagit de linstruction switch Syntaxe : switch expression (une variable numrique ou une variable chane de caractres) case value1 instructions 1 (instructions effectues si expression=value1) case value2 instructions 2 ... otherwise instructions 3 end
41
Exemple
On veut tracer la fonction suivante :
f ( x) = x 3 2 sin( x) + 1 dans l' intervalle [-1 , 1]
Pour tracer le graphe de f(x), il faut passer par les tapes suivantes : Dfinir la fonction f(x) : Dfinir un vecteur de points dans lintervalle donne >> x= -1 : 0.1 : 1 on a dfini un vecteur de 21 points equidistribus dans lintervalle donn avec un pas de 0.1 valuer la fonction dans lintervalle [-1 , 1] ( on peut utiliser la commande eval Tracer le graphe en utilisant la commende plot ; grid
Tracer le graphe des fonctions :
f1 ( x) = sin( 2 x) 1 + x et f 2 ( x) = x 3 sin( x) dans l' intervalle [-1 , 1] sur le mme graphe
42