Vous êtes sur la page 1sur 10

3.

Vecteurs et Matrices

3.1 CREATION DE VECTEURS SOUS MATLAB

3.1.1 En entrant les éléments un par un :


On peut définir un vecteur X en entrant les éléments l’un après l’autre, séparés par des
blancs ou des virgules. L’ensemble est encadré par des crochets [ ] :

>> X= [1 3 5 7]
X=1 3 5 7
définit un vecteur (ligne) de dimension (1,4) (1 ligne et 4 colonnes) confirmé par la commande
size(X) qui donne la dimension de la variable X :

>> size(X)
ans = 1 4
Il existe plusieurs manières de définir un vecteur. On peut utiliser la virgule « , » qui
sert de séparateur de colonne. Ainsi pour définir le vecteur suivant, on aurait pu écrire :
>> X= [1,3,5,7]
Pour définir un vecteur colonne, il faut séparer les éléments par des points virgules :
>> Y= [1;2;3;4]
Y=
1
2
3
4

3.1.2 En définissant un pas régulier :


Dans le cas où l’on souhaite créer un vecteur avec des éléments régulièrement espacés,
on utilisera une commande du type :
X= début : pas : fin
qui signifie que l’on définit le vecteur X en commençant à la valeur début et en finissant à la
valeur fin avec un pas régulier pas. Ceci est intéressant pour définir un vecteur x de grande
dimension, pour calculer les valeurs d’une fonction quelconque f(x).
>> X=1:2:7 définit un vecteur ligne X compris entre 1 et 7 avec un pas de 2.

X=
1 3 5 7

1
Remarques :
- dans le cas où x = 1 :2 :6, x ne peut prendre la valeur 6 car le pas n’est pas en accord
avec la plage à couvrir (6-1 = 5)... Il est alors préférable d’utiliser une syntaxe du type :
Pas = (fin-début)/(n-1) avec n le nombre de points entre le début et la fin.

- Il est possible d’utiliser un pas négatif pourvu que début > fin :
>> X = 5: -1: 2
X=
5 4 3 2

- Pour transformer un vecteur ligne en un vecteur colonne, on prend la transposée en


utilisant le symbole prime ( ' ).
>> Y=X'
Y=
5
4
3
2
Commandes utiles :
linspace(X1,X2,N) : génère un vecteur ligne de N points compris entre X1 et X2.
length(X) : retourne le nombre d’éléments du vecteur X. Si X est une matrice, cette
commande est équivalente à max(size(x)).
X(length(X)) ou X(end) : renvoie le dernier élément du vecteur X.

3.2 CREATION DE MATRICES SOUS MATLAB

La façon la plus simple de définir une matrice dans l’environnement Matlab est d’entrer
au clavier la liste de ses éléments, en adoptant les conventions suivantes :
Les éléments d’une même ligne sont séparés par des espaces ou des virgules.
La liste des éléments doit être entourée de crochets [ ].
Chaque ligne, sauf la dernière, doit se terminer par un point-virgule.
Par exemple la commande :
>> A=[1 1 1 ; 2 4 8 ; 3 9 27] (ou encore >> A= [1,1,1 ; 2,4,8 ; 3,9,27]
A=
1 1 1
2 4 8
3 9 27

Pour des matrices de grandes dimensions, nous pourrons utiliser une boucle que nous
verrons au paragraphe 6.2.

2
3.3 ACCES A DES ELEMENTS D’UNE MATRICE SOUS MATLAB

Il est souvent indispensable de pouvoir récupérer ou modifier un élément ou un


ensemble d’éléments d’une matrice. Pour cela, on indique le nom de la matrice suivi du ou des
indices de l’élément que l’on veut récupérer. L’élément de la 2ème ligne et 3ème colonne de la
matrice A s’obtient par :
>> A(2,3)
ans =
8
Pour récupérer une partie d’une matrice, on utilise alors une syntaxe de la forme :
matrice ( [vecteur lignes] , [vecteur colonnes] )
pour récupérer dans matrice les éléments à l’intersection des lignes et des colonnes spécifiées.
Par exemple si A est défini par :
0 4 3 1 7 
A  6 7 8 9 0
1 2 3 4 5

La commande B=A([2 3],[2 3 4 5]) renvoie dans B la sous-matrice suivante à


l’intersection des lignes (2,3) et des colonnes (2,3,4,5) :

0 4 3 1 7 
7 8 9 0 
A  6 7 8 9 0 B 
1 2 3 4 5  2 3 4 5

>> B=A([2 3],[2 3 4 5])


B=
7 8 9 0
2 3 4 5
Commandes utiles :
A( :,n) affiche tous les éléments de la colonne n.
A(n, :) affiche tous les éléments de la ligne n
A([n1 n2], :) affiche tous les éléments des lignes n1 et n2.
A(i:j, :) renvoie les éléments de la matrice A dont les lignes sont comprises entre i et j.
A( :, i:j) renvoie les éléments de la matrice A dont les colonnes sont comprises entre i
et j.
Remarques :
On peut construire une matrice C à partir d’éléments de A et B :
>> C = [A(1,:);B(2,:) A(2,2)]

3
C=

0 4 3 1 7
2 3 4 5 7

3.4 OPERATIONS SUR LES MATRICES

Les opérations arithmétiques telles que l’addition et la soustraction sont utilisables avec
des matrices et se font terme à terme entre les matrices de même dimension et de même type.
Si A et B sont deux matrices carrées (2,2) définies par :
1 2   2 3
A  et B 
4 6 5 7 
>> S=A+B fait la somme élément par élément.
S=
3 5
9 13

>>P = 2*A multiplie tous les éléments de A par le nombre 2.


P=
2 4
8 12

>> T=A' correspond à la matrice transposée de A.


T=
1 4
2 6
Pour la multiplication et la division entre matrices, il faut différencier 2 cas :
Opérateur précédé d’un point
Opérateur non précédé d’un point.
Par exemple : A*B est différent de A.*B !!!
A*B est un produit matriciel des matrices A et B (le nombre de colonnes de A doit
être égal au nombre de lignes de B) et A.*B est une multiplication terme à terme des
éléments de A et B (les dimensions de A et B doivent être identiques).
>> C = A.*B donne comme résultat une matrice dont chaque élément est le produit
C(i,j) = A(i,j)*B(i,j). Ce calcul n’est possible que pour des matrices de mêmes
dimensions et ce n’est pas un produit matriciel comme défini précédemment !

 2 6  1 * 2 2 * 3 1 2 2 3
C     * 
20 42 4 * 5 6 * 7 4 6 5 7

4
>> C=A*B réalise un produit matriciel. Le nombre de colonne de A doit être égal au
nombre de lignes de B (sauf si A ou B, est un scalaire) :

12 17  1 * 2  2 * 5 1 * 3  2 * 7  1 2 2 3
C   * 
38 54 4 * 2  6 * 5 4 * 3  6 * 7 4 6 5 7

On peut faire l a même remarque avec la division et l’élévation à une puissance :

>>A. / B est la matrice résultant de la division élément par élément de A par B.

>> A/B est égal à A*inv(B) où inv(B) représente la matrice inverse de B.

>> A.^3 élève chaque élément de A à la puissance 3.

>> A^3 correspond à un produit matriciel successif : AAA (A matrice carrée).

3.5 ILLUSTRATION DE QUELQUES COMMANDES UTILES

Commande find : elle est utile pour trouver rapidement les éléments d’un tableau qui
vérifient une condition. Par exemple, si l’on veut récupérer tous les éléments d’une
matrice y qui sont supérieurs à 4 :
>> y = [12 6 2 0 7 1 0 15 8 9 1 2] ; création d’un vecteur y
>> ind = find(y > 4)
ind prend les indices (les numéros des colonnes) des éléments de y qui sont supérieurs
ou égales à 4.
ind =
1 2 5 8 9 10
>> z = y(ind) récupère les éléments de y qui vérifient la condition (y>=4)
z=
12 6 7 15 8 9
Commande B= reshape(A,M,N) : permet de redimensionner la matrice A en une
matrice B de dimension MxN. Le produit MxN doit évidemment être égal au nombre
total d’éléments de A. Par exemple :
>> A= [ 1 2 3 4 ; 6 7 8 9 ; 0 5 8 4 ; 7 5 2 1] ;

A=
1 2 3 4
6 7 8 9
0 5 8 4
7 5 2 1
5
est une matrice 4x4 qui peut être redimensionnée en une matrice 2x8 :
>> B = reshape (A,2,8) redimensionne B en une matrice 2 lignes et 8 colonnes :

B=
1 0 2 5 3 8 4 4
6 7 7 5 8 2 9 1

Commande repmat : permet de construire une matrice par répétition d’une autre
matrice :
1 2
A 
3 4
>> B = repmat (A,2,3) construit la matrice B en répétant 2 fois A suivant les lignes et 3
fois suivant les colonnes :
B= x3
1 2 1 2 1 2
3 4 3 4 3 4 x2
1 2 1 2 1 2
3 4 3 4 3 4
Commande unique : permet de supprimer toutes les valeurs dédoublées (ou répétées)
dans une matrice et de classer les éléments par ordre croissant.
>> A = [5 1 5 6 2 3 3 9 8 6 2 4]
>> B = unique (A)
B=[1 2 3 4 5 6 8 9 ] reproduit A dans un ordre croissant sans
répétition.
Agrandir une matrice avec des zéros : si l’on veut transformer la matrice carrée A :
1 2
A 
3 4
1 2 0 0
3 4 0 0
en une matrice du type : A   , il suffit d’écrire : A(4,4) = 1. Matlab
0 0 0 0
 
0 0 0 1
construit automatiquement une matrice suffisamment grande pour arriver jusqu’aux
indices spécifiés et met des zéros partout sauf au terme considéré (qui peut être zéro
également !).

6
Résolution d’un système d’équations linéaires : si l’on veut résoudre un système
d’équations linéaires s’écrivant sous la forme matricielle AX = B, la solution cherchée
est X = A-1B. Avec Matlab, cela revient à effectuer l’opération : X = A \ B (division à
gauche).
Par exemple, on cherche à résoudre AX = B :

1 2  x1  5
3 4  x   6
  2   
>>A= [1 2 ; 3 4]
>> B = [5 ; 6]
>> A\B
ans =
-4.0000
4.5000
On obtient immédiatement les solutions x1 = - 4 et x2 = 4.5.

3.6 MATRICES PREDEFINIES

Certaines fonctions Matlab permettent de définir des matrices prédéfinies :

Matrice identité :
>> A = eye(3) définit une matrice carrée de dimension 3x3 dont les éléments de la
diagonale principale sont des 1. Les autres éléments sont nuls.

A=
1 0 0
0 1 0
0 0 1
Matrice nulle :
>> A = zeros(2,3) définit une matrice remplie de 0 de 2 lignes et 3 colonnes :
A=
0 0 0
0 0 0
Matrice unité :
>> A = ones(1,3) définit un vecteur ligne (1 ligne, 3 colonnes) rempli de 1 :
A=
1 1 1
Matrice diagonale :
>> x = [2 3 5] ;

7
A = diag(x) produit une matrice diagonale, c'est-à-dire dont tous les éléments sont nuls
sauf ceux se trouvant sur la diagonale :
A=
2 0 0
0 3 0
0 0 5
Matrice aléatoire :
>> A = rand(2,2) définit une matrice de nombres réels aléatoires compris entre 0 et 1.
A=
0.8147 0.1270
0.9058 0.9134

8
3.7 EXERCICES I : MANIPULATIONS DE SCALAIRES, VECTEURS ET MATRICES

1-Scalaire

Utiliser Matlab pour chercher la syntaxe des fonctions qui définissent :

- La cotangente hyperbolique. Calculer la cotangente hyperbolique de 2.

2
- La racine carré. Calculer 10 et vérifier que 10  10 .

- Vérifiez que i2 = -1.

- Calculez z = (1+3i)(2+2i)(3+i) ainsi que son module, sa partie réelle, sa partie


imaginaire et son argument (en utilisant deux méthodes) en degré.

Que signifient les commandes suivantes :

- x = linspace(1,10,20)

- Utilisez la commande linspace pour définir un vecteur comportant 8 valeurs allant de


4 à 15.

- length(x) ? size(x) ?

2-Vecteurs

- Construire le vecteur ligne V1 contenant les nombres entiers pairs de 1 à 20. L’utiliser
pour calculer la racine carrée de ces nombres.

- Construire le vecteur colonne V2 contenant les mêmes éléments que V1. Calculez le
produit scalaire de V1 par V2.

- Ajouter 22 et 24 au vecteur V1. A partir de ce nouveau vecteur, construire la


matrice (on pourra utiliser la commande reshape):

2 4 6 8
A  10 12 14 16 
18 20 22 24
- Pour une valeur de N fixée, construire le vecteur ligne :

V3 = [0 1 2 ... N-1 N N-1 ... 2 1 0]

9
La commande doit fonctionner pour n’importe quelle valeur de N (N = 100 par
exemple !). On pourra utiliser la commande fliplr.
- Définir un vecteur V4 comportant 100 éléments tous égaux à 4.

3-Matrices

Chacune de ces questions doit se faire en une seule commande :

- Définir A une matrice 3 par 3.

- Mettre à zéro l’élément de la 3ème ligne et 3ème colonne.

- Entrer une valeur pour un élément de la 2ème ligne et 6ème colonne. Que se passe-t-il ?

- Mettre tous les éléments de la 4ème colonne à 4.

- Redéfinir la matrice A de départ. Créer B en prenant les lignes de A en sens inverse.

- Créer C en accolant la 1ère colonne et la 3ème colonne de B à la droite de A.

- Créer D en extrayant les 2 premières lignes et les deux dernières colonnes de A.

- Elever chaque élément de A au carré.

1 0 1
- Construire la matrice C  0 1 0 , puis calculez B*C et B.*C. Conclusion ?
1 0 1

- Créer une matrice M de dimension 10x10 en utilisant la fonction magic. Calculer la


somme des lignes de M, puis la somme des colonnes de M. Conclusion ?

10 7 87
7 5 65 
- Calculez la matrice inverse de : D   .
8 6 10 9 
 
7 5 9 10

32
23
- Calculez la solution du système DX=Y avec Y   
33
 
 31

10

Vous aimerez peut-être aussi