0% ont trouvé ce document utile (0 vote)
47 vues12 pages

TP3 Calcul Matriciel: UAS 2023/2024 Mbarki Zouhair

Ce document présente un cours sur le calcul matriciel, incluant la création, les propriétés, et les opérations sur les matrices en utilisant Matlab. Il aborde des commandes essentielles telles que repmat, zeros, ones, rand, et randi, ainsi que des opérations comme l'addition, la soustraction, et la multiplication de matrices. Enfin, il traite de l'indexation, de l'affectation, de la modification, et de la suppression d'éléments dans une matrice.

Transféré par

mbarki
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)
47 vues12 pages

TP3 Calcul Matriciel: UAS 2023/2024 Mbarki Zouhair

Ce document présente un cours sur le calcul matriciel, incluant la création, les propriétés, et les opérations sur les matrices en utilisant Matlab. Il aborde des commandes essentielles telles que repmat, zeros, ones, rand, et randi, ainsi que des opérations comme l'addition, la soustraction, et la multiplication de matrices. Enfin, il traite de l'indexation, de l'affectation, de la modification, et de la suppression d'éléments dans une matrice.

Transféré par

mbarki
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

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

Vous aimerez peut-être aussi