UAS 2023/2024 Mbarki Zouhair
TP 3
Calcul Matriciel
1. Introduction
• Les matrices suivent la même syntaxe que les vecteurs.
• Les composantes des lignes sont séparées par des virgules ou des espaces et chaque ligne est
séparée de l'autre par un point virgule.
• La commande repmat(val, lin, col) crée une matrice pleine des valeurs dupliqués .
• Les commandes zeros(lin, col) et ones(lin, col) créent des matrices des zéros et des uns,
respectivement.
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
123
456
789
>> A = repmat(1, 4, 3)
A=
111
111
111
111
>> A = zeros(2, 2), B= ones(2, 3)
A=
00
00
B=
111
111
• Comme pour les vecteurs, une matrice peut être définie aléatoirement en utilisant les
commande rand(lin, col) et randi(max, lin, col) :
>> A = rand(3, 3) %des valeurs aléatoires entre 0 et 1
A=
0.9575 0.9706 0.8003
0.9649 0.9572 0.1419
0.1576 0.4854 0.4218
>> A = randi(10, 3, 3) %des valeurs entiers aléatoires entre 1 et 10
A=
10 7 10
8 1 7
10 9 8
1
UAS 2023/2024 Mbarki Zouhair
• La matrice identité peut être obtenue par la commande eye(lin, col) :
>> eye(3, 3) % matrice identité de 3x3
ans =
100
010
001
>> eye(4, 4) % matrice identité de 4x4
ans =
1000
0100
0010
0001
• Une matrice peut être produise à partir d’une autre matrice ou un autre vecteur en utilisant la
commande reshape(Vec, [lin, col]) en changeant sa dimension (le nombre d’éléments doit être
identique):
>> V = [1 2 3 4 5 6 7 8 9 10 11 12]
% vecteur ligne de 12 éléments
V=
1 2 3 4 5 6 7 8 9 10 11 12
>> A = reshape(V, 3, 4)
A=
1 4 7 10
2 5 8 11
3 6 9 12
>> A = reshape(V, 4, 3)
15 9
2 6 10
3 7 11
4 8 12
>> A = reshape(V, 2, 6)
A=
1 3 5 7 9 11
2 4 6 8 10 12
>> A = reshape(V, 6, 2)
A=
17
28
39
4 10
5 11
6 12
2
UAS 2023/2024 Mbarki Zouhair
2. Propriétés des matrices
• Matlab fournie quelque opérations pour extraire les propriétés de base des matrices :
>> A = [1 2 1; 1 1 2; 2 2 1]
A=
121
112
221
>> det(A) % déterminant
ans =
3
>> size(A) % taille (lignes , colonnes)
ans =
33
>> diag(A) % le vecteur du diagonal
ans =
1
1
1
>> trace(A) % la trace (somme su diagonal)
ans =
3
>> triu(A) % matrice triangulaire supérieure
ans =
121
012
001
>> tril(A) % matrice triangulaire inférieure
ans =
100
110
221
>> A' % le transposé
ans =
112
212
121
>> A_1 = inv(A) % l’inverse
A_1 =
-1.0000 0 1.0000
1.0000 -0.3333 -0.3333
0 0.6667 -0.3333
3
UAS 2023/2024 Mbarki Zouhair
>> A*A_1
ans =
1.0000 0 -0.0000
0 1.0000 0
0 0 1.0000
3. Rang d’une matrice
• Le rang d’une matrice A est le nombre de lignes ou colonnes indépendantes.
• La commande rank retourne le rang d’une matrice.
>> A = [1 2 3; 1 3 2; 2 3 2]
A=
123
132
232
>> det(A)
ans =
-5
>> rank(A) % rang
ans =
3
4. Opérations sur les matrices
• En algèbre, Il y a plusieurs opérations de base qui s’effectuent sue les matrices. Néanmoins, ces
opérations souvent exigent des pré-conditions avant s’exécuter :
- A + B, A - B : (addition et soustraction) A et B ont la même dimension
- A.*B, A./B : (multiplication et division terme à terme) A et B ont la même dimension
- A*B : (multiplication) le nombre des colonnes de A égale au nombre de lignes de B.
- A/B : (division) A et B sont carrées et de même dimension, et B (inversible, ou
déterminant non nulle).
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
123
456
789
>> A + 2
ans =
3 4 5
6 7 8
8 9 11
>> A - 2
4
UAS 2023/2024 Mbarki Zouhair
ans =
-1 0 1
234
567
>> A * 2
ans =
2 4 6
8 10 12
14 16 18
>> A^2 % A*A
ans =
30 36 42
66 81 96
102 126 150
>> A.^2 % mettre au carré les éléments de A
ans =
149
16 25 36
49 64 81
>> 2.^A % mettre chaque élément comme une puissance
ans =
2 4 8
16 32 64
128 256 512
>> A/2
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 3.0000
3.5000 4.0000 4.5000
>> B = [1 1 2; 1 1 1; 2 1 1]
B=
112
111
211
>> A+B
ans =
235
567
9 9 10
>> A-B
ans =
011
345
578
>> A*B
ans =
967
21 15 19
33 24 31
>> A.*B
ans =
126
456
5
UAS 2023/2024 Mbarki Zouhair
14 8 9
>> A/B
ans =
1 2 -1
1 5 -1
1 8 -1
>> A./B
ans =
1.0000 2.0000 1.5000
4.0000 5.0000 6.0000
3.5000 8.0000 9.0000
• Comme pour les vecteurs, la commande find(A) trouve les valeurs non nulles dans une matrice.
find(cond A) trouve les valeurs satisfaisantes de la condition en question.
>> A = [1 0 2; 4 5 0; 7 0 8]
A=
102
450
708
>> [lin col val] = find(A) % trouver les valeurs non nulles
lin =
1
2
3
2
1
3
col =
1
1
1
2
3
3
val =
1
4
7
5
2
8
>> [lin col val] = find(A>5) % trouver les valeurs
% supérieures à 5
lin =
3
3
col =
1
3
val = % valeurs logiques (true, true, …
1
1
6
UAS 2023/2024 Mbarki Zouhair
>> ind = sub2ind(size(A), lin, col)
% convertir les indices lin, col
% en indices linéaires
ind =
3
9
>> A(ind) % les valeurs > 5
ans =
7
8
5. L’indexage dans une matrice:
• La modification d'un élément (ou plusieurs éléments) dans une matrice peut être effectué par de
son index comme suit:
• A(i), A(i, j): l'élément de l’index i ou (i, j) de la matrice A.
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
123
456
789
>> A(7) % indexage linéaire
ans =
3
>> A(1, 3) % indexage ligne-colonne
ans =
3
>> index = sub2ind(size(A), 1, 3)
% conversion de l’indexage ligne-colonne
% à l’indexage linéaire
index =
7
>> [i, j] = ind2sub(size(A), 7)
% conversion de l’indexage linéaire
% à l’indexage ligne-colonne
i=
1
j=
3
• A(i: j), A(i1: i2, j1: j2): une sous-matrice de A à partir de l'index linéaire i jusqu'à l'index j (i1
et i2 index des lignes, j1 et j2 index des colonnes).
• A(i: pas: j), A(i1: pas: i2, j1: pas: j2): une sous-matrice de A à partir de l'index i jusqu'à l'index j
avec un pas (i1 i2 index des lignes, j1 j2 index des colonnes).
7
UAS 2023/2024 Mbarki Zouhair
• A([i1 i2 … in]), A([i1 i2 … in] ,[j1 j2 … jn]): une sous-matrice de A en prendre en
considération les indices i1, i2, …, in (pour l’indexage ligne-colonne, on considère i1,i2,…,in
des indices des lignes, j1,j2,…,jn indices des colonnes).
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
123
456
789
>> A(1: 5)
ans =
14725
>> A(1:2:5)
ans =
175
>> A(1: 2, 1:2)
ans =
12
45
>> A(1:2:3, 1:2:3)
ans =
13
79
>> A([1 5 6 8])
ans =
1586
>> A([1 3], [1 2])
ans =
12
78
>> A(1,:)
ans =
123
>> A(:,2)
ans =
2
5
8
>> A(:,:)
ans =
123
456
789
>> A(:)
ans =
1
4
7
2
5
8
3
8
UAS 2023/2024 Mbarki Zouhair
6
9
5. L’Affectation, la Modification et la suppression dans une matrice:
• L’affectation d’un scalaire dans une matrice indicée généralise le scalaire sur toute la matrice.
• L’affectation d’une matrice à une autre exige l’égalité des tailles des deux matrices.
>> A = ones(4,4)
A=
1111
1111
1111
1111
>> A(1:2, 1:2) = 2 % affectation d’un scalaire dans
% une sous-matrice indicés
A=
2211
2211
1111
1111
>> A(1:4, 1:4) = 2 % affectation d’un scalaire dans
% une sous-matrice indicés
A=
2222
2222
2222
2222
>> A = 2 % affectation d’un scalaire dans une matrice
% sans indice rend la matrice comme scalaire
A=
2
>> A = ones(4,4)
A=
1111
1111
1111
1111
>> B = zeros(4, 4)
B=
0000
0000
0000
0000
>> B(3:4, 3:4) = 2
B=
0000
9
UAS 2023/2024 Mbarki Zouhair
0000
0022
0022
>> A(1:2,1:2) = B(3:4, 3:4)
% affectation d’une sous-matrice à une autre
A=
2211
2211
1111
1111
• La suppression d'un ou plusieurs éléments d'un vecteur peut être effectuée en utilisant le
vecteur vide []:
>> A = reshape(linspace(1, 16, 16), [4, 4])
A=
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
>> A(1,:) = [] % supprimer une ligne
A=
2 6 10 14
3 7 11 15
4 8 12 16
>> A(:,2) = [] % supprimer une colonne
A=
2 10 14
3 11 15
4 12 16
>> A(4) = [] % supprimer un élément
A=
2 3 4 11 12 14 15 16
• La concaténation des matrices se fasse de la même manière que les vecteurs:
>> A = ones(3,3)
A=
111
111
111
>> B = zeros(3, 3)
B=
000
000
000
>> C = [A B; B A]
C=
10
UAS 2023/2024 Mbarki Zouhair
111000
111000
111000
000111
000111
000111
6. Les fonctions appliquées sur les matrices:
Lorsqu’une matrice est fournie en entrée pour une fonction, généralement une matrice des
fonctions des éléments est produise :
>> A = reshape(linspace(1, 16, 16), [4, 4]) - 10
A=
-9 -5 -1 3
-8 -4 0 4
-7 -3 1 5
-6 -2 2 6
>> sin(A)
ans =
-0.4121 0.9589 -0.8415 0.1411
-0.9894 0.7568 0 -0.7568
-0.6570 -0.1411 0.8415 -0.9589
0.2794 -0.9093 0.9093 -0.2794
>> abs(A)
ans =
9513
8404
7315
6226
>> sort(A)
ans =
-9 -5 -1 3
-8 -4 0 4
-7 -3 1 5
-6 -2 2 6
>> sum(A)
ans =
-30 -14 2 18
>> sum(sum(A))
ans =
-24
>> prod(A)
ans =
3024 120 0 360
>> prod(prod(A))
ans =
0
>> min(A)
ans =
-9 -5 -1 3
11
UAS 2023/2024 Mbarki Zouhair
>> max(A)
ans =
-6 -2 2 6
>> mean(A)
ans =
-7.5000 -3.5000 0.5000 4.5000
7. Les Matrices Spéciales:
• Matlab définit plusieurs fonctions afin de produire des matrices très connues en
mathématiques.
>> pascal(4)
ans =
1111
1234
1 3 6 10
1 4 10 20
>> toeplitz([1 2 3 4 5], [1 2 3 4 5])
ans =
12345
21234
32123
43212
54321
>> rosser('single')
ans =
611 196 -192 407 -8 -52 -49 29
196 899 113 -192 -71 -43 -8 -44
-192 113 899 196 61 49 8 52
407 -192 196 611 8 44 59 -23
-8 -71 61 8 411 -599 208 208
-52 -43 49 44 -599 411 208 208
-49 -8 8 59 208 208 99 -911
29 -44 52 -23 208 208 -911 99
>> vander([1 2 3 4])
ans = % A(i, j) = v(i)^(n-j)
1111
8421
27 9 3 1
64 16 4 1
12