CIP42 C2 OpMatricielles .pdf



Nom original: CIP42-C2-OpMatricielles.pdf
Titre: LCI III
Auteur: Asmaa El Hannani

Ce document au format PDF 1.5 a été généré par Microsoft® Office PowerPoint® 2007, et a été envoyé sur fichier-pdf.fr le 01/03/2013 à 14:03, depuis l'adresse IP 41.249.x.x. La présente page de téléchargement du fichier a été vue 853 fois.
Taille du document: 499 Ko (20 pages).
Confidentialité: fichier public



Aperçu du document


Part 3

OPÉRATIONS MATRICIELLES
Asmaa El Hannani

50

Opérations matricielles


Les opérations matricielles jouent un rôle central dans
MATLAB.



Une caractéristique saillante de MATLAB est la syntaxe très
simple et naturelle pour les opérations matricielles.



Dans la mesure des contraintes imposées par le clavier cette
syntaxe est naturelle, c'est-a-dire qu'elle correspond à l‘écriture
usuelle.

Asmaa El Hannani

1

51

Opérations matricielles


Les opérations +, - ,*, /, ^ existent aussi pour les matrices.



Voir « help ops » pour plus d’informations sur les opérateurs
en général



Addition + et soustraction  Pas d'ambiguïtés, s’opère élément par élément.
 Les dimensions des matrices doivent être compatibles

Asmaa El Hannani

52

Opérations matricielles (+,-)
>> A = [1,2,3;4,5,6;7,8,9]
A=
1 2 3
4 5 6
7 8 9

>> B = [1 5]

>> A+A
ans =
2 4 6
8 10 12
14 16 18

>> A+B
??? Error using ==> plus
Matrix dimensions must agree.

Asmaa El Hannani

2

B=
1

5

53

Opérations matricielles (*)


L’opérateur de multiplication * permet de réaliser
soit




La multiplication d’un scalaire par un scalaire
La multiplication d’un scalaire par une matrice
La multiplication matricielle (matrice par matrice ou
vecteur par matrice)

Asmaa El Hannani

54

Opérations matricielles (*)
>> a
a=
3
>> a*A
ans =
3 6 9
12 15 18
21 24 27

Asmaa El Hannani

3

>> A*A
ans =
30 36 42
66 81 96
102 126 150
>> A*C
ans =
26
62
98

55

Opérations matricielles (*, .* , ^ , .^)




Si on souhaite multiplier deux à deux les éléments de deux
matrices, il faut utiliser l'opérateur « .* »
C'est la même chose pour l'opérateur ^ . Si A^2 signifie A*A
au sens matriciel, A.^2 signifie qu'on prend tous les éléments
de A élevés au carré.

>> A*A
ans =
30 36 42
66 81 96
102 126 150

>> A.*A
ans =
1 4 9
16 25 36
49 64 81

>> A^2
ans =
30 36 42
66 81 96
102 126 150

>> A.^2
ans =
1 4 9
16 25 36
49 64 81

Asmaa El Hannani

56

Opérations matricielles (/, ./ , \ , .\)


Il existe deux symboles, / et \ pour la division de matrices:






/ division à droite, c’est-à-dire si A,B sont deux matrices avec B
inversible, AB−1 s’obtient par A/B.
\ division à gauche, c’est-à-dire si A,B sont deux matrices avec B
inversible, B−1A s’obtient par B\A.
Les operateurs ./ et .\ sont utilisés respectivement pour les
division à droite et à gauche terme à terme.
>> A./B

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

Asmaa El Hannani

4

>> A/B
ans =
3.0000 -2.0000
2.0000 -1.0000

>> B\A
ans =
5.0000 4.0000
-4.0000 -3.0000

ans =
0.2000
0.4286
>> B.\A
ans =
0.2000
0.4286

0.3333
0.5000

0.3333
0.5000
57

Opérations booléennes


Les valeurs booléennes "vrai" et "faux" sont
respectivement représentées dans Matlab par les
valeurs 1 et 0.




Pour certaines fonctions (comme le IF), ce qui est
vrai est tout ce qui n’est pas égal à 0

Pour obtenir de l’aide sur les opérateurs
booléens de Matlab, lancer la commande
helpwin relop.

Asmaa El Hannani

58

Opérateur relationnels


Il existe six opérateurs relationnels pour la comparaison de
matrices de même dimension:



La comparaison se fait élément par élément et le résultat est
une matrice dont les éléments sont soit 1, soit 0 (matrice
logique).

Asmaa El Hannani

5

59

Opérateurs logiques


Il y a trois opérateurs logiques. Ils s'appliquent en général à
des matrices 0-1et agissent élément par élément. Le résultat est
une matrice 0-1.



Par opposition aux opérateurs & et | l'opérateur ~ est unitaire.

Asmaa El Hannani

60

Exemples
>> a=2;
>> b=3;
>> a<b
ans =
1
>> a>b
ans =
0

Asmaa El Hannani

6

>> a==b
ans =
0

>> (b>a) && (a~=3)
ans =
1

>> a~=b
ans =
1

>> (b<a) || (a==2)
ans =
1

61

Opérateurs
Opérandes
Operand
Opérateur
Operator

Arithmétique
Arithmetik

Relationnel
Relational

Logique
Logik

1
opérande

Résultat
Resultat

2
opérandes
N = Numériques / Numerik
L = Logiques / Logik

+*/^

X

-

X

<, <=,
>, >=,
==, ~=,

X

X

|| (OU)
&& (ET)

X

X

N

N

X

N

N

X

N

L

X

L

L

L

L

xor(a,b)

~ (négation)
(Negation)

X

X

Asmaa El Hannani

62

Fonctions relationnelle et logiques






Les fonctions any et all sont utiles lorsqu'elles sont utilisées en
liaison avec les opérateurs logiques.
Pour un vecteur, la fonction any renvoie 1 si un élément au
moins du vecteur est différent de zéro (0 sinon).
La fonction all renvoie 1 si tous les éléments du vecteur sont
différents de zéro (0 sinon).
>>A = [1 2 0 4]; any(A)
ans =
1

Asmaa El Hannani

7

>> all(A)
ans =
0

63

Fonctions relationnelle et logiques


Lorsque l'argument de ces deux fonctions est une matrice, elles
agissent sur les vecteurs colonnes de la matrice.
>>A = [1 0 4; 2 0 5; 3 0 0]
A=
104
205
300
>> any(A)
ans =
101
(1 si la colonne contient au moins 1 élément est ≠ 0)
>> all(A)
ans =
100
(1 si tous les éléments de la colonne sont ≠ 0)

Asmaa El Hannani

64

Fonctions relationnelle et logiques


Ci-après, la liste des fonctions relationnelles et logiques que
l'on trouve dans MATLAB:

Asmaa El Hannani

8

65

Transposition


Le caractère ' désigne la transposition d'une
matrice.
>> A = [1 2 3; 4 5 6; 7 8 10] , B = A‘
A=
123
456
7 8 10
B=
147
258
3 6 10

Asmaa El Hannani

66

Concaténation de matrices




Il est possible de créer de nouvelles matrices par concaténation
d’autres matrices.
La syntaxe est similaire à celle de la création de matrices à
partir de scalaires.
>> A = [1 2 3; 4 5 6; 7 8 10];
>> C = [3 ; 4 ; 5];
>> [A, C; 10,11,12,6
10,11,12,6]
ans =
1 2 3 3
4 5 6 4
7 8 9 5
10 11 12 6

Asmaa El Hannani

9

67

Extraction de sous-matrices


Lorsqu'on écrit A(1,3), on extrait en fait une sous-matrice de
dimensions 1X1.



Cette syntaxe est en fait extensible à des sous-matrices de plus
grande taille.
>> A(2,[1 3])
ans =
4 6

L’exemple ci-dessus signifie que l’on extrait les éléments 1 et
3 de la deuxième ligne. Ces éléments recomposent une matrice
1X2
Asmaa El Hannani

68

Permutations des éléments d’une matrice
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
123
456
789


Dans cet exemple, on crée une nouvelle matrice sur base de la
matrice A, dans laquelle on a permuté les lignes 2 et 3 et dans
laquelle l’ordre des colonnes est maintenant 3 1 2.

Asmaa El Hannani

10

>> A([1 3 2],[3 1 2])
ans =
3 1 2
9 7 8
6 4 5

69

Génération de vecteurs et
matrices

L’opérateur colon « : »




L'opérateur ":" (colon) est un opérateur permettant de générer
des suites de nombres.
La notation "a:b" signifie : générer un vecteur contenant tous
les nombres de a à b par pas de 1.
>> a = -2:4
a=
-2 -1 0 1 2 3 4
>> b = [-2:3]
b=
-2 -1 0 1 2 3

Asmaa El Hannani

11

>> b = [-2:3]‘
b=
-2
-1
0
1
2
3

>> a = 3:-1
a=
Empty matrix: 1-by-0

71

Génération avec l’opérateur colon « : »


La notation "a : h : b" signifie : générer un vecteur contenant
tous les nombres de a à b par pas de h. Le pas h peut être
positif ou négatif.
>> a = 3:-1:-2
a=
3 2 1 0 -1 -2
>> b = 0:0.2:1
b=
0 0.2000 0.4000 0.6000 0.8000 1.0000

Asmaa El Hannani

72

Matrices spéciales




La fonction « ones(m,n) » permet de générer une matrice de
dimension mXn composée de 1
La fonction « zeros(m,n) » permet de générer une matrice de
dimension mXn composée de 0
>> x = ones(2,3)
x=
1 1 1
1 1 1

Asmaa El Hannani

12

>> y = zeros(1,3)
y=
0 0 0

73

Matrices spéciales

Asmaa El Hannani

74

Extraction d’une sous-matrice avec
l’opérateur colon « : »


Soit la matrice A
>> A = [1 2 3 4; 5 6 7 8 ; 9* ones(1,4); zeros(1,4)]
A=
1234
5678
9999
0000



Pour extraire la sous matrice
3*3 composée des 3
premières lignes et colonnes
>> B = A(1:3,1:3)
B=
123
567
999

Asmaa El Hannani

13



Pour extraire la dernière colonne :
>> A(1:4,4)
ans =
4
8
9
0
75

Extraction d’une sous-matrice avec
l’opérateur colon « : »


Il existe un raccourci qui permet de spécifier d'un coup toutes
les lignes ou colonnes d'une matrice :
>> A(:,2)
ans =
2
6
9
0



Il faut lire A(toutes les lignes, deuxième colonne).



Remarque: Si vous voulez de l'aide sur l'opérateur ":", entrez
« help colon »

Asmaa El Hannani

76

Matrice vide








La commande suivante crée une matrice vide
A=[]
il devient alors possible d'utiliser cette matrice ultérieurement.
La commande Clear A a un effet différent, en ce sens qu'elle
efface la variable A de l'espace travail.
La fonction exist permet de vériffier l'existence d'une matrice
et la fonction isempty indique si la matrice est vide ou non.
Une matrice vide peut être utilisée pour détruire des lignes ou
des colonnes d'une matrice:
A(2,:) = [ ]

Asmaa El Hannani

14

(efface la deuxième ligne de A)
77

Fonctions matricielles

Fonctions matricielles élémentaires


Lorsque l'argument d'une fonction élémentaire est une matrice
la fonction s'applique aux éléments de la matrice.



Par exemple exp(A) ou sqrt(A) calcule l'exponentielle
respectivement la racine de chaque élément de la matrice A.

Asmaa El Hannani

15

79

Fonctions mathématiques élémentaires

Asmaa El Hannani

80

Fonctions mathématiques élémentaires

Asmaa El Hannani

16

81

Fonctions matricielles

Asmaa El Hannani

83

Fonctions agissant sur les colonnes

L'utilisation de ces fonctions permet souvent d‘éviter la programmation des boucles for.
Asmaa El Hannani

17

84

Manipulation de matrices

Asmaa El Hannani

85

Manipulation de matrices


Pour la manipulation de matrices il faut encore mentionner les
fonctions size et length qui renvoient la dimension d'une
matrice, respectivement la longueur d'un vecteur.
>>A = [1 2 3 4; 5 6 7 8 ; 9* ones(1,4); zeros(1,4); rand(1,4)];
>>size(A)
ans =
5 4
>>length (A(:,2)
ans =
5

Asmaa El Hannani

18

86

Chaîne de caractères

Chaîne de caractères










MATLAB stocke les chaînes de caractères ("string") sous forme de
vecteurs-ligne (type "char array") dans lesquels chaque caractère est un
élément du vecteur.
Une donnée de type chaîne de caractères est représentée sous la forme
d'une suite de caractères encadrée d'apostrophes simples (').
Il est possible de manipuler chaque lettre de la chaîne en faisant référence à
sa position dans la chaîne.
La concaténation de chaînes de caractères s'effectue selon les règles de
manipulation des vecteurs.
Si une chaîne de caractères doit contenir le caractère apostrophe (') celui-ci
doit être doublé dans la chaîne (ainsi pour affecter le caractère apostrophe
(') à une variable on devra écrire '''', soit 4 apostrophes ).

Asmaa El Hannani

19

88

Chaîne de caractères
>> ch1 = 'bon'
ch1 =
bon
>> ch2 = 'jour'
ch2 =
jour
>> whos
Name
Size

Bytes Class

ch1
1x3
6 char array
ch2
1x4
8 char array
Grand total is 7 elements using 14 bytes
>> ch = [ch1,ch2]
ans =
Bonjour
Asmaa El Hannani

20

>> ch(1), ch(7), ch(1:3)
ans =
b
ans =
r
ans =
bon
>> ch3 = 'soi';
>> ch = [ch(1:3), ch3, ch(7)]
ans =
bonsoir
>> ch4 = 'aujourd''hui'
ch4 =
aujourd'hui

89



Télécharger le fichier (PDF)










Documents similaires


cip42 c2 opmatricielles
cip42 c1 introduction
chap21 0910
exercices informatique seance 1
chap 3
calcul matriciel

Sur le même sujet..