Declaration des variables
Matlab permet de créer et d’initialiser des variables. La declaration des variables en Matlab suit les regles suivantes:
• toutes les variables sont des matrices • pas de d´eclaration de type >> a=5 variable scalaire (1×1) >> b=[4 6] vecteur ligne (1×2) >> c=[-5; 2] vecteur colonne (2×1) >> d=[2 3; -1 7] matrice carr´ee (2×2) Dans ces exemples on a utilis´e les op´erateurs suivants:
• separateur de ligne: point virgule ou return • separateur de colonne: virgule ou espace blanc
Il faut noter que Matlab montre les nombres avec quatre chiffres apr`es la virgule, tandis que la representation interne est faite avec 16 chiffres. Pour changer la facon de montrer les nombres en Matlab, on utilise la commande format. Par exemple, si avant de taper >> pi (en Matlab la variable pi est une approximation de π), nous ´ecrivons >> format long nous obtiendrons 3.1416;
>> format short nous obtiendrons 3.14159265358979;
>> format long e nous obtiendrons 3.141592653589793e+00;
>> format short e nous obtiendrons 3.1416e+00.
4 Workspace
Matlab permet de connaˆıtre plusieurs informations sur les variables d´eclar´ees. Tapez:
>> who pour afficher toutes les variables.
>> whos pour afficher toutes les variables avec indication sur leur taille.
>> size(a) pour afficher les dimensions de la matrice a.
>> clear var pour effacer la variable var.
>> clear (ou >> clear all) pour effacer toutes les variables. Pour ces opérations vous pouvez aussi utiliser l’interface graphique de Matlab.
Opérations fondamentales
Matlab peut effectuer plusieurs opérations entre matrices. Les opérations fondamentales peuvent ˆêtre partagées en deux catégories.
Opérations matricielles
Les opérations matricielles usuelles sont d´efinies par +, -, *, /, ^
>> C = A + B est la somme matricielle, Cij = Aij + Bij >> C = A * B est le produit matriciel, Cij =Pk AikBkj >> C = A / B est la division matricielle, C = AB−1
>> C = A^3 est la troisième puissance matricielle (C = A*A*A) Il faut remarquer que cettes opérations sont bien d´efinies seulement si les matrices ont des dimensions cohérentes. Pour l’addition A+B, A et B doivent avoir la même taille; pour le produit A*B, le nombre des colonnes de A et le nombre des lignes de B doivent ˆêtre ´égaux; les opérations A/B et B^3 demandent une matrice B carrée. Par exemple:
>> A = [1 2 3; 4 5 6]; B = [7 8 9; 10 11 12]; C = [13 14; 15 16; 17 18]; >> A + B ans =
8 10 12 14 16 18
>> A + C
??? Error using ==> + Matrix dimensions must agree.
>> A * C ans =
94 100 229 244
>> A * B ??? Error using ==> * Inner matrix dimensions must agree. Notez que Matlab renvoie un message d’erreur si le dimensions des matrices ne s’accordent pas avec l’opération commandée.
Opérations ´el´ement par ´el´ement
Pour exécuter des op´erations entre matrices ´el´ement par ´el´ement il faut faire précéder l’opérateur d’un point. Les op´erateurs ´el´ement par ´el´ement sont donc .* ./ .^
>> C = A .* B est le produit ´élément par ´élément, Cij = AijBij
>> C = A ./ B est la division ´élément par ´élément, Cij = Aij Bij
>> C = A.^3 est la troisième puissance ´élément par ´élément, Cij = A3 ij
Manipulation des matrices
Après avoir d´efini la matrice A (par exemple la matrice carr´ee A de taille n), Matlab permet les op´erations suivantes sur les sous-matrices de A.
Extraction de sous-matrices
>> A(2,3) extraction de l’ ´el´ement A23
>> A(:,5) extraction de la colonne [A13;…;An3]
>> A(1:4,3) extraction de la sous-colonne [A13;…;A43]
>> A(1,:) extraction de la ligne [A1j,…,A1n]
>> diag(A) extraction de la diagonale [A11;…;Ann]
Construction de matrices particulières
Matlab permet, en plus, de d´efinir des matrices particuli`eres (une fois d´efinis les entiers n, m et le vecteur v).
>> A = eye(n) matrice identit´e n×n
>> A = diag(v) matrice diagonale avec v comme diagonale
>> A = zeros(n,m) matrice de z´eros avec n lignes et m colonnes
>> A = ones(n,m) matrice de un avec n lignes et m colonnes
>> A = rand(n,m) matrice al´eatoire avec n lignes et m colonnes
>> x = [but:pas:fin] vecteur ligne de points ´equidistribu´es avec pas pas entre but et fin
Fonctions matricielles
Soit A une matrice, Matlab permet d’effectuer directement les op´erations suivantes.
>> C = A’ transpos´ee de A, Cij = Aji
>> C = inv(A) inverse de A (matrice carr´ee), C = A−1
>> d = det(A) d´eterminant de A (matrice carr´ee)
>> r = rank(A) rang de A
>> nrm = norm(A) norme 2 de A
>> v = eig(A) valeurs propres de A (matrice carr´ee) Soit A une matrice carr´ee de taille n et soit b un vecteur de taille n, alors le vecteur x, solution du syst`eme lin´eaire Ax = b est d´efini par
>> x = A^-1 * b
Cette commande est th´eoriquement correcte, cependant si on est int´eress´e seulement `a la solution x et pas `a l’inverse A^-1, il est pr´ef´erable utiliser un backslash
>> x = A \ b
Cette commande r´esout le syst`eme lin´eaire avec des algorithmes fiables et optimales.
Graphisme 2D
Matlab offre plusieurs possibilit´es pour tracer un graphe en 2D. On va en pr´esenter deux: la commande plot et la commande fplot. Avant d’expliquer ces deux commandes en détail, on souligne qu’avec plot on doit toujours utiliser des vecteurs, alors qu’avec fplot non. On considère maintenant la fonction f(x) = x3 −2sinx + 1 et on voit comment on peut tracer son graphe dans l’intervalle [−1,1], en utilisant les commandes plot et fplot.
Commande plot
Pour tracer le graphe de f(x) il faut passer par les ´étapes suivantes : • Définir la fonction f(x) : >> f = ’x.^3 – 2*sin(x) + 1’;
le mot f contient la d´efinition de la fonction choisie (les guillemets font partie de la d´efinition dans la syntaxe Matlab). • D´efinir un vecteur de points dans l’intervalle donn´e: >> x = [-1:0.1:+1];
on a d´efini un vecteur de 21 points equidistribu´es dans l’intervalle donné, avec un pas de 0.1. • ´Evaluer la fonction f dans l’intervalle [−1,1], en utilisant la commande eval: >> y = eval(f);
on note que dans la d´efinition de la fonction f on a du ´écrire .^ (puissance ´el´ement par ´élément) et pas ^ (puissance matricielle), parce qu’il faut ´évaluer la fonction en chaque ´el´ement du vecteur x. C’est-`a-dire: y(i) = x(i)3 −2sin(x(i)) + 1, pour i = 1,…,21; La variable y est donc un vecteur qui contient les valeurs de f pour chaque entr´ee du vecteur x. • Tracer le graphe : >> plot(x,y); grid;
cette commande ouvre une fenetre avec le graphe. La commande grid dessine une grille de repere.