USTO-MB Module : Logiciels Appliqués 1
Département de Génie-Civil
MASTER : Voies et Ouvrages d’Art
Polycopié N° 1
Initiation au logiciel Matlab.
1- Présentation de MATLAB.
MATLAB est beaucoup plus qu'un langage de programmation. Il s'agit d'une console d'exécution
(shell ) permettant d'exécuter des fonctions, d'attribuer des valeurs à des variables, etc. La console
MATLAB permet d'effectuer des opérations mathématiques, de manipuler des matrices et de tracer
facilement des graphiques.
Le langage MATLAB n'est pas un langage compilé, à chaque appel d'un SCRIPT (ou d'une
FUNCTION), le logiciel lit et exécute les programmes ligne par ligne.
Figure 1: Ecran MATLAB
L’utilisateur peut grâce à l'invite MATLAB affecter des valeurs à des variables et effectuer des
opérations sur ces variables. Par exemple :
>> x = 4 1
x=
4
>> y = 2
y=
2
>> x + y
ans =
6
>> x * y
ans =
8
1
Ici, il faut noter que lorsque l'utilisateur ne fixe pas de variable de sortie, MATLAB place le résultat
d'une opération dans ans. Il est toujours possible de connaître les variables utilisées et leur type à
l'aide de la fonction whos. Par exemple, pour les manipulations précédentes :
>> whos
Name Size Bytes Class 2
ans 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 3 elements using 24 bytes
>>
La solution de x+y est donc perdue. Il est donc préférable de toujours donner des noms aux
variables de sortie :
>> x = 4; 3
>> y = 2;
>> a = x + y
a=
6
>> b = x * y
b=
8
La fonction clear permet d'effacer des variables. Par exemple :
>> clear x % on efface x de la mémoire 4
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
y 1x1 8 double array
Grand total is 3 elements using 24 bytes
>>
Le signe de pourcentage % permet de mettre ce qui suit sur une ligne en commentaire (MATLAB
n'en tiendra pas compte à l'exécution).
Pour les variables de type caractère : char, la déclaration se fait entre apostrophes. Il est possible de
concaténer (lier) des mots à l'aide des crochets.
>> mot1 = 'Génie'
>> mot2 = 'Civil';
5
>> mot1_2 = [mot1 ' ' mot2] % l'emploi de ' ' permet d'introduire un espace
mot1_2 =
Génie Civil
2
L’exemple suivant montre un programme qui calcul la racine carrée d'un nombre entré par
l'utilisateur et qui affiche le résultat dans une phrase en utilisant la fonction input pour entrer une
donnée, la fonction racine carrée sqrt , la fonction num2str qui convertit les nombres en chaîne de
caractères et la fonction disp pour afficher le résultat.
a = input('Entrez un nombre: '); % utilisation de input, l'utilisateur doit entrer un nombre. 6
b = sqrt(a);
str = ['La racine carrée de ' num2str(a) ' est ' num2str(b)];
disp(str) % utilisation de display pour afficher le résultat à l'écran
2- Les fichiers SCRIPT et FUNCTION.
Pour des tâches répétitives, il est pratique et judicieux d'écrire de courts programmes, qu’on
sauvegarde, pour effectuer les calculs désirés. Il existe deux types de fichiers qui peuvent être
programmées avec MATLAB : les fichiers SCRIPT et FUNCTION. Dans les deux cas, il faut
lancer l'éditeur de fichier et sauvegarder le fichier avec l'extension .m.
Le Fichier SCRIPT permet de lancer les mêmes opérations que celles écrites directement à l'invite
MATLAB. Toutes les variables utilisées dans un SCRIPT sont disponibles à l'invite MATLAB. Par
exemple, le fichier test.m qui reprend l'exemple précédent:
% test.m
clear all
7
x = 4;
y = 2;
a=x+y
b=x*y
whos
Le rôle d’une fonction est d'effectuer des opérations sur une ou plusieurs entrées pour obtenir un
résultat qui sera appelé sortie. Par exemple :
function [a,b] = ma_function(x,y) 8
a = x + y;
b = x * y;
On obtient:
>> [a,b] = ma_fonction(4,2)
a=
6
b=
8
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
Grand total is 2 elements using 16 bytes
>>
3
3-Les opérations mathématiques.
L'élément de base de MATLAB est la matrice. C'est-à-dire qu'un scalaire est une matrice de
dimension 1x1, un vecteur colonne de dimension n est une matrice n x 1, un vecteur ligne de
dimension n, une matrice 1 x n. Contrairement aux langages de programmation usuels, il n'est pas
obligatoire de déclarer les variables avant de les utiliser et, de ce fait, il faut prendre toutes les
précautions dans la manipulation de ces objets.
Les scalaires se déclarent directement, par exemple :
>> x = 0;
>> a = x;
Les vecteurs ligne se déclarent de la manière suivante :
>> V_ligne = [0 1 2]
V_ligne =
012
Pour les vecteurs colonne, on sépare les éléments par des points-virgules :
>> V_colonne = [0;1;2]
V_colonne =
0
1
2
Il est possible de transposer un vecteur à l'aide de la fonction transpose:
>> V_colonne = transpose(V_ligne)
V_colonne =
0
1
2
Le double point ( :) est l'opérateur d'incrémentation dans MATLAB. Ainsi, pour créer un vecteur
ligne des valeurs de 0 à 1 par incrément de 0.2, il suffit d'utiliser :
>> V = [0:0.2:1]
V=
Columns 1 through 6
0 0.2000 0.4000 0.6000 0.8000 1.0000
Par défaut, l'incrément est de 1. Ainsi, pour créer un vecteur ligne des valeurs de 0 à 5 par
incrément de 1, il suffit d'utiliser :
>> V = [0:5]
V=
012345
On peut accéder à un élément d'un vecteur et même modifier celui-ci directement :
>> a = V(2);
>> V(3) = 3*a
V=
013345
Les opérations usuelles d'addition, de soustraction et de multiplication par scalaire sur les vecteurs
sont définies dans MATLAB :
>> V1 = [1 2];
>> V2 = [3 4];
>> V = V1 + V2 % addition de vecteurs
V=
46
>> V = V2 - V1 % soustraction de vecteurs
V=
22
>> V = 2*V1 % multiplication par un scalaire
V=
24
4
On peut aussi créer des matrices, par exemple :
>> V1 = [1 2];
>> V2 = [3 4]; 9
>> V = [V1;V2]
V=
12
34
Les matrices peuvent aussi être construites directement :
>> M = [1 2; 3 4] 10
M=
12
34
On peut évidemment avoir accès aux éléments de la matrice par :
>> m21 = M(2,1) % 2e ligne, 1ere colonne
m21 =
3
Il est possible d'inverser inv() et de transposer transpose()les matrices :
>> invM = inv(M) 11
invM =
-2.0000 1.0000
1.5000 -0.5000
>> transpM = transpose(M)
transpM =
13
24
Un des intérêts de MATLAB est la possibilité d'utiliser directement les opérations mathématiques
prédéfinies pour les matrices. L'addition et la soustraction sont directes (attention aux dimensions)
ainsi que la multiplication par un scalaire :
>> A = [1 2;3 4]; 12
>> B = [4 3;2 1];
>> C = A+B % addition
C=
55
55
>> D = A-B % soustraction
D=
-3 -1
13
>> C = 3*A % multiplication par un scalaire
C=
36
9 12
>> C = A*B % multiplication de matrices
C=
85
20 13
>> D = A/B % division de matrices
D=
1.5000 -2.5000
2.5000 -3.5000
5
4- Les graphiques simples.
La fonction plot permet de tracer des courbes en MATLAB. Les argument de cette fonction sont les
vecteurs des variables indépendantes et dépendantes (en alternance), comme dans l'exemple qui
suit:
>> x = [0:0.01:2*pi]; 13
>> plot(x,cos(x),x ,sin(x))
produit la sortie graphique suivante :
5- Exercices.
1. On veut vérifier que la multiplication de matrices n'est pas commutative. Soient deux matrices :
Réalisez un code MATLAB qui permet, pour les matrices A et B données, de vérifier que :
A*B-B*A≠0
2. En utilisant les matrices définies au premier exercice, vérifiez l'identité suivante :
(A + B)T = AT + BT
Utilisez la fonction transpose de MATLAB pour transposer les matrices.
3. On désire résoudre un système d'équations algébriques linéaires, c'est-à-dire, un système
représenté par :
A*x=b
Avec A, une matrice de dimension n x n, x et b, des vecteurs colonne de dimension n. La solution
de ce système est donnée par :
x = A-1 * b
En utilisant la fonction inv de MATLAB pour inverser la matrice, résoudre le système décrit par la
matrice A, définie au premier exercice et le vecteur b, la première colonne de la matrice B, de ce
même exercice.