0% ont trouvé ce document utile (0 vote)
7 vues21 pages

Introduction à MATLAB

Ce document présente MATLAB comme une console permettant d'effectuer des opérations mathématiques et de manipuler des matrices. Il décrit les bases de l'utilisation de MATLAB, notamment la déclaration de variables et de fonctions.

Transféré par

baraabouazizi02
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues21 pages

Introduction à MATLAB

Ce document présente MATLAB comme une console permettant d'effectuer des opérations mathématiques et de manipuler des matrices. Il décrit les bases de l'utilisation de MATLAB, notamment la déclaration de variables et de fonctions.

Transféré par

baraabouazizi02
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2 Présentation de MATLAB

MATLAB est beaucoup plus qu’un langage de programmation. Il s’agit d’une


console d’exécution (shell ) au même titre que les consoles DOS ou UNIX.
Comme toutes les consoles, MATLAB permet d’exécuter des fonctions, d’attri-
buer des valeurs à des variables, etc. Plus spécifiquement, la console MATLAB
permet d’effectuer des opérations mathématiques, de manipuler des matrices,
de tracer facilement des graphiques. La figure 1 présente l’écran MATLAB de
base.
Ouverture d'un nouveau fichier .m Ouverture de Simulink Répertoire courant

Invite MATLAB

Fig. 1 – Écran MATLAB

4
SIMULINK n’est pas au programme de cours d’initiation. L’élément le plus im-
portant ici est l’invite MATLAB où l’utilisateur peut affecter des valeurs à des
variables et effectuer des opérations sur ces variables. Par exemple :

>> x = 4
x =
4
>> y = 2
y =
2
>> x + y
ans =
6
>> x * y
ans =
8
>>

Ici, il faut noter que lorsque l’utilisateur ne fixe pas de variable de sortie, MAT-
LAB 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
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 a donc été perdue. Il est donc préférable de toujours donner


des noms aux variables de sortie :
>> x = 4;
>> y = 2;
>> a = x + y
a =
6
>> b = x * y
b =
8
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 4 elements using 32 bytes
>>

5
Notons au passage que le point-virgule permet de ne pas afficher la valeur à
l’écran, ce qui permettra éventuellement des programmes plus rapides.

La fonction clear permet d’effacer des variables. Par exemple :

>> clear x % on efface x de la mémoire


>> 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 com-
mentaire (MATLAB n’en tiendra pas compte à l’éxécution).

La sortie de la fonction whos donne, entre autre, la classe de la variable. Plusieurs


classes de variables sont disponibles à l’utilisateur de MATLAB. Les classes
les plus utiles pour l’utilisateur débutant sont le double tel que présenté plus
haut et les variables char, pour le texte, et les variables symboliques, que nous
présenteront à la section 6.3. Pour les variables char, la déclaration se fait entre
apostrophe :

>> mot1 = ’hello’


mot1 =
hello

Il est possible de concaténer des mots à l’aide des parenthèses carrées (la fonction
strcatde MATLAB permet d’effectuer sensiblement la même tâche) :

>> mot1 = ’hello’;


>> mot2 = ’world’;
>> mot1_2 = [mot1 ’ ’ mot2] % l’emploi de ’ ’ permet d’introduire un espace
mot1_2 =
hello world

6
Supposons que l’on veuille écrire un programme qui calcul la racine carrée d’un
nombre entré par l’utilisateur et qui affiche le résultat dans une phrase. On peut
convertir les nombres en chaı̂ne de caractères en utilisant la fonction num2str.

a = input(’Entrez un nombre: ’); % utilisation de input, l’utilisateur


% doit entrer un nombre.
b = sqrt(a);

str = [’La racine carrée de ’ num2str(a) ’ est ’ num2str(b)];


% composition de la phrase de sortie
disp(str) % utilisation de display pour afficher le résultat à l’écran

Le résultat serait le suivant :

Entrez un nombre: 23 % 23 est entré par l’utilisateur


La racine carrée de 23 est 4.7958 % sortie à l’écran

La prochaine section montre comment réaliser de courts programmes comme


celui utilisé dans le dernier exemple.

3 Fichiers SCRIPT et FUNCTION


Jusqu’à présent, l’utilisation que nous avons faite de MATLAB s’apparente
beaucoup à celle d’une calculatrice. Pour des tâches répétitives, il s’avère beau-
coup plus pratique et judicieux d’écrire de courts programmes pour effectuer
les calculs désirés. Il existe deux types de fichiers qui peuvent être programmés
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.

7
3.1 Fichiers SCRIPT
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 (assurez-vous que le fichier test.m se
trouve bel et bien dans le répertoire indiqué dans la fenêtre Répertoire courant) :

% test.m

clear all
x = 4;
y = 2;
a = x + y
b = x * y
whos

produit la sortie suivante lorsque qu’appelé :

>> test
a =
6
b =
8
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 4 elements using 32 bytes
>>

Habituellement, on utilise les fichiers SCRIPT afin de :

– Initialiser le système (fonctions clear )


– Déclarer les variables
– Effectuer les opérations algébriques
– Appeler les fonctions
– Tracer les figures

Il est utile ici de noter que le langage MATLAB n’est pas un langage compilé
(contrairement au langage C++, par exemple). À chaque appel d’un SCRIPT
(ou d’une FUNCTION), le logiciel lit et exécute les programmes ligne par ligne.
Lorsque MATLAB détecte une erreur, le logiciel arrête et un message d’erreur
ainsi que la ligne où l’erreur est détectée s’affichent à l’écran. Apprendre à
lire les messages d’erreur est donc important pour ”déboguer” vos programmes
rapidement et efficacement.

8
3.2 Fichiers FUNCTION
L’idée de base d’une fonction est d’effectuer des opérations sur une ou plusieurs
entrées ou arguments pour obtenir un résultat qui sera appelé sortie. Il est
important de noter que les variables internes ne sont pas disponibles à l’invite
MATLAB. Par exemple, la fonction suivante (avec une seule sortie, le résultat
de l’addition) :

function a = ma_function(x,y)
a = x + y;
b = x * y;

produit la sortie suivante :

>> a = ma_fonction(4,2)
a =
6
>> whos
Name Size Bytes Class
a 1x1 8 double array
Grand total is 1 element using 8 bytes
>>

Le résultat de la multiplication n’est plus disponible. On peut cependant modi-


fier les sorties de la manière suivante :

function [a,b] = ma_function(x,y)


a = x + y;
b = x * y;

pour obtenir :

>> [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
>>

9
On peut éviter l’affichage des sorties en utilisant le point-virgule :

>> [a,b] = ma_fonction(4,2);


>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
Grand total is 2 elements using 16 bytes
>>

Habituellement, on utilise les fichiers FUNCTION afin de :


– Programmer des opérations répétitives
– Limiter le nombre de variables dans l’invite MATLAB
– Diviser le programme (problème) de manière claire

10
4 Opérations mathématiques avec MATLAB
Dans cette section, nous présenterons les éléments mathématiques de base de
MATLAB.

4.1 Scalaires, vecteurs, matrices


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 ma-
trice nx1, un vecteur ligne de dimension n, une matrice 1xn. Contrairement
aux langages de programmation usuels (i.e. C++), 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 =
0 1 2

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 ou avec


l’apostrophe (’). Ainsi,

>> V_colonne = transpose(V_ligne)


V_colonne =
0
1
2

>> V_colonne = V_ligne’


V_colonne =
0
1
2

11
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 (notez le nombre d’éléments du vecteur) :

>> 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 =
0 1 2 3 4 5

On peut accéder à un élément d’un vecteur et même modifier celui-ci directement


(Notez que contrairement au C++, il n’y a pas d’indice 0 dans les vecteurs et
matrices en MATLAB) :

>> a = V(2);
>> V(3) = 3*a
V =
0 1 3 3 4 5

Les opérations usuelles d’addition, de soustraction et de multiplication par sca-


laire sur les vecteurs sont définis dans MATLAB :

>> V1 = [1 2];
>> V2 = [3 4];
>> V = V1 + V2 % addition de vecteurs
V =
4 6

>> V = V2 - V1 % soustraction de vecteurs


V =
2 2

>> V = 2*V1 % multiplication par un scalaire


V =
2 4

12
Dans le cas de la multiplication et de la division, il faut faire attention aux
dimensions des vecteurs en cause. Pour la multiplication et la division élément
par élément, on ajoute un point devant l’opérateur (.* et ./). Par exemple :

>> V = V1.*V2 % multiplication élément par élément


V =
3 8

>> V = V1./V2 % division élément par élément


V =
0.3333 0.5000

Cependant, MATLAB lance une erreur lorsque les dimensions ne concordent


pas (remarquez les messages d’erreur, ils sont parfois utiles pour corriger vos
programmes) :

>> V3 = [1 2 3]
V3 =
1 2 3
>> V = V1.*V3
??? Error using ==> .* Matrix dimensions must agree.

La multiplication de deux vecteurs est donnée par (*). Ici, l’ordre a de l’impor-
tance :

>> V1 = [1 2]; % vecteur 1x2


>> V2 = V1’; % vecteur 2x1
>> V = V1*V2
V =
5

>> V = V2*V1
V =
1 2
2 4

Il est aussi possible de concaténer des vecteurs. Par exemple :

>> V1 = [1 2];
>> V2 = [3 4];
>> V = [V1 V2]
V =
1 2 3 4

13
De même, pour les vecteurs colonnes :

>> V1 = [1;2];
>> V2 = [3;4];
>> V = [V1;V2]
V =
1
2
3
4

On peut aussi créer des matrices, par exemple,

>> V1 = [1 2];
>> V2 = [3 4];
>> V = [V1;V2]
V =
1 2
3 4

qui n’est pas équivalent à :

>> V1 = [1;2];
>> V2 = [3;4];
>> V = [V1 V2]
V =
1 3
2 4

Il faut donc être très prudent dans la manipulation des vecteurs. Par exemple,
une mauvaise concaténation :

>> V1 = [1 2];
>> V2 = [3;4];
>> V = [V1;V2]
??? Error using ==> vertcat All rows in the bracketed expression
must have the same number of columns.

Les matrices peuvent aussi être construites directement :

>> M = [1 2; 3 4]
M =
1 2
3 4

On peut évidemment avoir accès aux éléments de la matrice par :

>> m21 = M(2,1) % 2e ligne, 1ere colonne


m21 =
3

14
On peut aussi ”compter” les éléments. MATLAB compte alors tous les éléments
d’une ligne (de gauche à droite) avant d’accéder à la ligne suivante. Ainsi, dans
la matrice 3x3 suivante :

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

la valeur des éléments ai,j sont données par leur rang affecté par MATLAB. Le
5e élément est 5 :

>> a5 = A(5)
a5 =
5

Il est aussi possible de stocker dans un vecteur une ou plusieurs lignes (ou
colonnes). Ainsi, si l’on veut stocker la deuxième colonne de la matrice A :

>> V = A(:,2) % ici, (:) signifie toutes les lignes


V =
2
5
8

De la même manière, si l’on veut stocker les lignes 2 et 3 :

>> M2=A(2:3,:) % (2:3) signifie ligne 2 à 3


% et (:) signifie toutes les colonnes
M2 =
4 5 6
7 8 9

Il est possible d’inverser inv(), detransposer transpose() ou avec l’apostrophe (’)


les matrices :

>> invM = inv(M)


invM =
-2.0000 1.0000
1.5000 -0.5000

>> transpM = M’
transpM =
1 3
2 4

15
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];


>> B = [4 3;2 1];

>> C = A+B % addition


C =
5 5
5 5

>> D = A-B % soustraction


D =
-3 -1
1 3

>> C = 3*A % multiplication par un scalaire


C =
3 6
9 12

Pour la multiplication et la division, les opérateurs usuels (* et /) sont définis


pour la multiplication et division matricielles :

>> C = A*B % multiplication de matrices


C =
8 5
20 13

>> D = A/B % division de matrices


D =
1.5000 -2.5000
2.5000 -3.5000

Afin de réaliser la multiplication et la division élément par élément, on précède


les opérateurs par un point (.* et ./) :

>> C = A.*B % multiplication élément par élément


C =
4 6
6 4

>> D = A./B % division élément par élément


D =
0.2500 0.6667
1.5000 4.0000

16
D’autres opérations sur les matrices seront présentées dans les sections subséquentes.
Il faut noter certaines matrices spéciales qui peuvent être utilisées, par exemple
la matrice identité :

>> I = eye(3) % matrice identité


I =
1 0 0
0 1 0
0 0 1

On peut aussi déclarer des vecteurs (et des matrices) ne contenant que des zéros
ou des 1.

>> V_nul = zeros(1,2) % un vecteur de 1 ligne, 2 colonnes de 0


V_nul =
0 0

>> V_un = ones(1,2) % un vecteur de 1 ligne, 2 colonnes de 1


V_un =
1 1

>> M_un = ones(2,2) % une matrice 2x2 de 1


M_un =
1 1
1 1

Dans certaines applications, il est parfois utile de connaı̂tre les dimensions d’une
matrice, et la longueur d’un vecteur (retournés, par exemple, par une fonction).
Dans ce cas, on utilise les fonctions length et size.

>> V = [0:0.1:10]; % utilisation de length - vecteur 1x101


>> n = length(V)

n =
101

>> M = [1 2 3; 4 5 6]; % utilisation de size - matrice 2x3


>> [n,m] = size(M)
n =
2
m =
3

>> dim = length(M) % utilisation de length sur une matrice


dim =
3 % donne la plus grande dimension, ici le nombre de colonnes

17
Voici quelques exercices sur la manipulation des vecteurs et des matrices :

Exercices

1. On veut vérifier que la multiplication de matrices n’est pas commutative.


Soient deux matrices :
 
3 4 4
A =  6 5 3
10 8 2
 
4 5 8
B = 3 11 12
2 1 7
Réalisez un code MATLAB qui permet, pour les matrices A et B données, de
vérifier que :

A ∗ B − B ∗ A 6= 0

2. En utilisant les matrices définies au numéro 1, vérifiez l’identité suivante :

(A + B)T = AT + BT

Utilisez la fonction transpose de MATLAB pour transposer les matrices.

3. On désire solutionner 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 nxn, x et b, des vecteurs colonne de dimen-


sion n. La solution de ce système est donné par :

x = A−1 ∗ b

18
En utilisant la fonction inv de MATLAB pour inverser la matrice, solutionnez le
système décrit par la matrice A, définie au numéro 1 et le vecteur b, la première
colonne de la matrice B, de ce numéro.

19
4.2 Graphiques simples
Cette sous-section ne vise qu’à vous permettre de tracer les solutions pour les
exercices qui suivent. Veuillez vous référer à la section 6 pour plus d’informa-
tions.

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];
>> plot(x,cos(x),x ,sin(x))

qui produit la sortie graphique de la figure 2 :


1

0.8

0.6

0.4

0.2

−0.2

−0.4

−0.6

−0.8

−1
0 1 2 3 4 5 6 7

Fig. 2 – sin(x) vs cos(x)

On aurait aussi pu simplifier par :

>> plot(x’,[cos(x)’ sin(x)’])

20
Ces graphiques manquent cependant de clarté. Il faut toujours nommer les axes
(et mettre les unités si possible), proposer une légende, etc. Ceci est évidemment
un peu long à écrire à l’invite MATLAB. Un SCRIPT est tout indiqué :

% graphique.m

clear all
close all % ferme les anciennes figures

x = [0:0.01:2*pi]; y1 = cos(x); y2 = sin(x);

figure(1)
plot(x, y1,’.’,x, y2,’+’) % cos(x) en points, sin(x) en +
title(’sinus et cosinus’) xlabel(’x’) ylabel(’f(x)’)
legend(’cos(x)’,’sin(x)’,0) % le 0 place la légende à c^
oté des courbes

Et on obtient la figure 3.

sinus et cosinus
1

0.8
cos(x)
sin(x)
0.6

0.4

0.2
f(x)

−0.2

−0.4

−0.6

−0.8

−1
0 1 2 3 4 5 6 7
x

Fig. 3 – sin(x) vs cos(x)-corrigé

Pour en savoir plus, particulièrement sur les couleurs et types de courbes, tapez
help plot à l’invite MATLAB.

21
Fonction Description
sin(x) sinus de x ; x en radians
cos(x) cosinus de x ; x en radians
tan(x) tangente de x ; x en radians
exp(x) exponentielle de x
log(x) logarithme en base e de x
sqrt(x) racine carrée de x
power(x,a) puissance a de x
abs(x) valeur absolue de x
asin(x) sin−1 de x ; résultat en radians
acos(x) cos−1 de x ; résultat en radians
atan(x) tan−1 de x ; résultat en radians
sinh(x) sinus hyperbolique de x
cosh(x) cosinus hyperbolique de x
tanh(x) tangente hyperbolique de x
round(x) arrondit un nombre à l’entier le plus près
floor(x) arrondit vers l’entier immédiatement au-dessous
ceil(x) arrondit vers l’entier immédiatement au-dessus

Tab. 1 – Fonctions courantes en MATLAB

4.3 Fonctions mathématiques simples


Les opérateurs algébriques (+, -, *, /, .*,./) ont été définis à la sous-section
précédente pour les scalaires, vecteurs et matrices. On montrera ici (sans être
exhaustif), les principales fonctions mathématiques fournies dans MATLAB et
leur utilisation. Pour les fonctions non présentées, l’utilisateur peut toujours
utiliser l’aide des fonctions avec la fonction help qui prend pour argument le
nom de la fonction. Par exemple, la fonction cosinus :

>> help cos

COS Cosine.
COS(X) is the cosine of the elements of X.

Overloaded methods
help sym/cos.m

Dans un premier temps, on présente les fonctions mathématiques usuelles et leur


appel dans MATLAB. Ensuite, on présente les principales fonctions spécifiques
aux matrices.

4.3.1 Fonctions mathématiques usuelles


Toutes les fonctions mathématiques de base sont déjà programmées dans MAT-
LAB. Le tableau 1 présente les plus courantes.

22
Exercices

4. On veut vérifier graphiquement la définition de la fonction sinh(x) :

ex − e−x
sinh(x) =
2
Produisez un code MATLAB qui trace deux courbes sur un même graphique.
La première, en utilisant directement la fonction sinh(x) de MATLAB et la
deuxième en utilisant la définition avec les exponentielles. Utilisez un vecteur x
de -2 à 2 par incréments de 0.1.

5. Vérifiez graphiquement (pour les mêmes valeurs de x qu’au numéro 4 que :

sinh(x)
tanh(x) =
cosh(x)

ATTENTION à la division de deux vecteurs !

23
Fonction Description
det(A) déterminant de la matrice A
trace(A) trace de la matrice A
rank(A) rang de A (nombre de colonnes ou de lignes linéairement indépendantes)
norm(A) norme de A (peut s’appliquer à un vecteur V)
inv(A) inverse de A
poly(A) polynôme caractéristique de la matrice A
eig(A) valeurs propres de la matrice A
svd(A) décomposition en valeur singulière de la matrice A
min(V) indice du plus petit él. du vecteur V
max(V) indice du plus grand él. du vecteur V
sum(V) somme des élément du vecteur V

Tab. 2 – Fonctions matricielles en Matlab

4.3.2 Fonctions matricielles


Toutes les fonctions matricielles de base sont déjà programmées dans MATLAB.
Le tableau 2 présente les plus courantes.

Exercices

6. En utilisant la fonction eye, vérifiez que (utilisez la matrice A définie au


numéro 1) :

AA−1 = A−1 A = I

7. En utilisant les fonctions trace et eig vérifiez que (utilisez la matrice A définie
au numéro 1) :

trA = Σni=1 λi

Où les λi sont les valeurs propres de la matrice A.

24

Vous aimerez peut-être aussi