MATHEMATIQUES - Eléments de Calcul...

44
ENSEIGNEMENT DE PROMOTION SOCIALE —————————————————————— Cours de MATHEMATIQUES - Eléments de Calcul Matriciel - —————————————————————— H. Schyns Octobre 2010

Transcript of MATHEMATIQUES - Eléments de Calcul...

Page 1: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

ENSEIGNEMENT DE PROMOTION SOCIALE

—————————————————————— Cours de

MATHEMATIQUES

- Eléments de Calcul Matriciel -

——————————————————————

H. Schyns

Octobre 2010

Page 2: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel Sommaire

H. Schyns S.1

Sommaire

1. INTRODUCTION

2. LES MATRICES

2.1. Définitions 2.2. Types de matrices 2.3. Opérations sur les matrices

2.3.1. Identité 2.3.2. Transposition 2.3.3. Multiplication par un scalaire 2.3.4. Addition et soustraction 2.3.5. Produit de matrices 2.3.6. Division de deux matrices carrées 2.3.7. Inverse d'une matrice de 2x2 2.3.8. Application 2.3.9. Inverse d'une matrice de N×N

3. INVERSION DES MATRICES CARREES

3.1. Notions préliminaires 3.1.1. La sous-matrice 3.1.2. Le déterminant 3.1.3. Propriété des déterminants

3.2. L'inverse 3.2.1. Méthode des cofacteurs 3.2.2. Inversion algébrique d'une matrice 2×2 3.2.3. Inversion d'une matrice 3×3

4. UTILISATION DES MATRICES

4.1. Résolution de systèmes d'équations 4.2. Application 4.3. Statistiques 4.4. Théorie des graphes 4.5. Animation 3D

5. IMPLEMENTATION INFORMATIQUE

5.1. Dans un tableur 5.2. En langage orienté objet

5.2.1. Le principe et les bases 5.2.2. Les accesseurs 5.2.3. Fonctions arithmétiques 5.2.4. Fonctions d'entree/sortie

Page 3: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel Sommaire

H. Schyns S.2

5.2.5. Démonstration

6. INVERSION PAR GAUSS-JORDAN

6.1. Mise en place 6.2. Résolution

7. SOURCES

7.1. Ouvrages 7.2. Sites web

Page 4: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 1 - Introduction

H. Schyns 1.1

1. Introduction

Les matrices sont des objets mathématiques qui apparaissent au cœur de l'algèbre linéaire. On les retrouve chaque fois qu'il faut modéliser un phénomène par des équations du premier degré. Leur utilisation s'étend du traitement d'image à l'électronique, en passant par la météorologie et la physique des particules.

L'objectif de ce document est d'expliquer au lecteur les bases du calcul matriciel : additions, soustraction, multiplication, inversion; ainsi que les opérations entre matrices et scalaires.

Ce thème faisant partie du programme du cours de mathématiques appliquées à l'informatique, l'accent sera mis sur la conception d'objet et sur les algorithmes d'implémentation des opérations tel que l'algorithme de Gauss-Jordan pour le calcul des matrices inverses.

Page 5: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.1

2. Les Matrices

2.1. Définitions

Une matrice est un tableau rectangulaire dont les éléments sont structurés en lignes et en colonnes. Les éléments peuvent être des symboles algébriques, des valeurs booléennes, des nombres réels, des fonctions, etc.

Le nombre de Lignes et de Colonnes (dans cet ordre !) définit la dimension de la matrice. Par exemple, les notations

A3×4 ou A(3×4)

désignent toutes deux une matrice (ici, appelée A) qui contient 3 lignes et 4 colonnes (indépendamment de son contenu)

=

×

3110

2201

12432

43A

fig. 2.1 Exemples de matrices de 3x4

En toute généralité la notation ML×C désigne une matrice M contenant L lignes et C colonnes :

LC2L1L

C22221

C11211

CL

aaa

aaa

aaa

L

MOMM

L

L

M

La notation a11 désigne l'élément qui se trouve à l'intersection de la première ligne et de la première colonne (1).

En toute généralité, la notation aij désigne l'élément qui se trouve à l'intersection de la ième ligne et de la jème colonne (2).

=

110

011

001

B

= −

5.2075.0

14.375.15.0

3.61.12.3

N

=2

2

2

zz1

yy1

xx1

A

= ϑ−ϑ

ϑϑ

100

0)sin()cos(

0)cos()sin(

F

booléenne numérique algébrique de fonctions fig. 2.2 Quelques exemples de matrices de 3x3

L'ensemble des éléments pour lesquels les indices i et j sont identiques, tels que a11, a22, a33,… forment la diagonale de la matrice.

1 La notation a11 se lit "a un un" et non "a onze" 2 La notation ai j qui se lit "a i j"

Page 6: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.2

Si la matrice compte le même nombre de lignes et de colonnes, on parle de matrice carrée. Dans ce cas, la diagonale part de l'élément qui occupe le coin supérieur gauche et arrive à celui qui occupe le coin inférieur droit.

Dans le cas d'une matrice rectangulaire, la diagonale part toujours de l'élément qui occupe le coin supérieur gauche mais n'arrive plus à celui qui occupe le coin inférieur droit. On parle cependant toujours de diagonale.

2.2. Types de matrices

Ainsi qu'il a été dit au point précédent, on parle de matrice carrée lorsqu'elle compte le même nombre de lignes et de colonnes.

= −

5.2075.0

14.375.15.0

3.61.12.3

N

fig. 2.3 Exemples de matrice carrée

Une matrice est dite horizontale si elle compte plus de colonnes que de lignes; elle est dite verticale si c'est l'inverse :

=

−−

1312

2041H

=

−−

12

30

14

21

V

Horizontale Verticale fig. 2.4 Orientation des matrices

Une matrice qui ne contient qu'une seule ligne est appelée vecteur ligne ou, plus simplement, vecteur. Si elle ne contient qu'une seule colonne, on parle de vecteur colonne :

( )1312 −−=X

=

2

0

4

1

Y

Vecteur ligne Vecteur colonne fig. 2.5 Orientation des matrices

Une matrice est dite triangulaire supérieure si les éléments situés sous la diagonale sont nuls; les éléments non nuls étant au-dessus de la diagonale. Une telle matrice est souvent dénommée matrice de type U (ang.: Upper).

Inversement, elle est dite triangulaire inférieure si les éléments situés au-dessus de diagonale sont nuls; les éléments non nuls étant en dessous de la diagonale. Elle est alors dénommée matrice de type L (ang.: Lower) (1) :

1 Notons que les termes "Supérieure" et "Inférieure" se réfèrent à la zone qui contient les éléments non

nuls.

Page 7: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.3

=

−−

1000

3500

1320

8421

U

=

−−−

1318

0534

0022

0001

L

Supérieure (type U) Inférieure (type L) fig. 2.6 Matrices triangulaires

Dans une matrice diagonale, tous les éléments sont nuls sauf ceux situés sur la diagonale :

=

5.20

75.1

02.3

000

0D

fig. 2.7 Exemple de matrice diagonale

Pour des raisons d'économie typographique, on écrit souvent une telle matrice en ne reprenant que ces éléments diagonaux

D = diag(a11, a22, …, aLL)

Dans le cas de la fig. 2.7 on écrirait simplement

D = diag(3.2, 1.75, 2.5)

Dans le même ordre d'idées, il arrive fréquemment qu'une matrice ne contienne que des zéros, sauf le long de la diagonale et des éléments voisins. On parle alors de matrice bande :

=

16000

33100

02220

00154

00021

B

fig. 2.8 Exemple de matrice bande

2.3. Opérations sur les matrices

2.3.1. Identité

Deux matrices sont identiques si elles ont mêmes dimensions et si les éléments de correspondants (c-à-d de même indice) sont égaux

ijij ba =

==

= −

5.2075.0

14.375.15.0

3.61.12.3

5.2075.0

14.375.15.0

3.61.12.3

BA

fig. 2.9 Exemple de matrices identiques

Page 8: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.4

2.3.2. Transposition

La transposition est une opération unaire dans laquelle on remplace les lignes d'une matrice par ses colonnes et inversement. La première ligne devient la première colonne; la seconde ligne, la seconde colonne; et ainsi de suite. Ceci revient à permuter les indices de tous les éléments :

ijji aa ⇒

Notons que, lors de cette opération, la diagonale reste inchangée puisque l'indice de la ligne est identique à celui de la colonne :

aii = aii

La transposée de A se note AT ; parfois à (1).

=⇔

= −

5.214.3

075.1

75.05.0

5.2075.0

14.375.15.0 T

6.3

1.1

3.26.31.13.2

AA

fig. 2.10 Exemple de matrice transposée

Il en découle un changement de l'orientation de la matrice : une matrice horizontale devient verticale; une matrice triangulaire supérieure devient triangulaire inférieure; un vecteur ligne devient un vecteur colonne.

( ) LCT

CL ×× ⇔ AA

Certaines matrices se retrouvent pareilles à elles-mêmes après transposition. On dit qu'elles sont neutres pour la transposition. C'est le cas des matrices symétriques pour lesquelles

ijji aa =

=

−−

5321

3124

2203

1432

S

fig. 2.11 Exemple de matrice symétrique

2.3.3. Multiplication par un scalaire

Il est permis de multiplier une matrice par un scalaire (2). On obtient alors une nouvelle matrice dans laquelle tous les éléments ont été multipliés par ce scalaire.

ijij bak =⋅

1 Ã se lit "A tilde". 2 Par scalaire, on entend toute grandeur non vectorielle : un entier, un réel, un nombre complexe ou toute

fonction qui conduit à une résultat scalaire.

Page 9: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.5

=

95.76

306

5.135.4

35.22

102

5.015.1

3

fig. 2.12 Exemple de multiplication par un scalaire

On entend souvent dire qu'un scalaire peut être considéré comme une matrice de 1×1. Ce n'est pas tout à fait exact car, ainsi que nous le verrons plus loin, il y a une différence fondamentale avec la multiplication de deux matrices entre elles.

2.3.4. Addition et soustraction

Pour additionner de deux matrices il suffit d'additionner les éléments correspondants ijijij cba =+

=

+

−−−

424

215.4

5.205.1

15.02

315.2

210

35.22

102

5.015.1

fig. 2.13 Exemple d'addition de deux matrices

Puisque l'addition des éléments est commutative et associative, l'addition des matrices est également commutative et associative.

De même qu'il existe un neutre pour l'addition de deux réels, il existe une neutre pour l'addition de deux matrices. Par neutre pour l'addition, on entend une valeur particulière qui additionnée à une autre laisse cette autre inchangée. Dans le cas de l'addition de scalaires, le neutre est zéro car

ijij a0a =+

Dans le cas de l'addition de matrices, le neutre est la matrice nulle O :

000

000

000

33O

Dans le même ordre d'idée, toute matrice admet un opposé tel que l'addition d'une matrice et de son opposé donne la matrice nulle

OAAAAAA =−+=⋅−+=− )()1(

0)a(a ijij =−+

Par exemple :

=

+

−−

−−−

000

000

000

35.22

102

5.015.1

35.22

102

5.015.1

fig. 2.14 Exemple d'addition d'une matrice et de la matrice opposée

Page 10: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.6

2.3.5. Produit de matrices

La produit de deux matrices est une opération capitale du calcul matriciel.

Multiplier deux matrices une opération assez surprenante car elle ne correspond pas du tout à ce à quoi on s'attend.

Le produit [ × ] de deux matrices donne une nouvelle matrice qui compte autant de lignes que la première et autant de colonnes que la seconde.

CLCNNL ××× =× RBA

Chaque élément du résultat est calculé en faisant la somme des produits de chacun des éléments de la même ligne par l'élément correspondant de la même colonne. (1)

Par exemple, le premier élément de la matrice-résultat est :

1NN131132112111111 babababar ⋅++⋅+⋅+⋅= L

En toute généralité

∑=

⋅=N

1kkjikij bar

Pour la multiplication on effectue le produit Lignes par Colonnes

Le produit de deux matrices n'est défini que si le nombre de colonnes de la matrice de gauche est identique au nombre de lignes de celle de droite

Illustrons cette règle par un exemple

=

×

−−−

−−−

−−

4581152

202314120

2315-

123112

Le nombre de colonnes de la matrice de gauche étant égal au nombre de lignes de celle de droite; la multiplication "lignes par colonnes" est possible.

Calculons les éléments du produit :

( ) ( )( ) ( )( ) ( )( ) ( ) 1213112r

5011122r2214102r

5112132r

14

13

12

11

−=−⋅+⋅+⋅−==⋅+⋅+−⋅−=

−=⋅+−⋅+⋅−=−=−⋅+⋅+⋅−=

( ) ( )( ) ( )( ) ( )( ) ( ) 4223311r

5021321r8224301r

1122331r

24

23

22

21

=−⋅+⋅+⋅−=

=⋅+⋅+−⋅−=

−=⋅+−⋅+⋅−=

=−⋅+⋅+⋅−=

Au début, pour éviter de faire des erreurs, on peut adopter la disposition pratique ci-après :

1 Ceci peut sembler très tordu mais c'est précisément pour bénéficier de cette règle de multiplication que le

calcul matriciel a été inventé !

Page 11: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.7

=

−−

202

314

120

1

2

3

B

=

231

112A

=

−−−45811525-R

Il est important de noter que le produit de deux matrices n'est pas commutatif !

ABBA ×≠×

Dans le cas de l'exemple, il est même impossible de permuter les matrices du produit car la règle du nombre de lignes et de colonnes n'est pas respectée (1) :

×

−−

23

11

2021

31421

21203

impossible

La permutation n'est possible que si le nombre de colonne de l'une est égal au nombre de colonnes de l'autre et réciproquement. Toutefois les résultats sont des matrices carrées différentes.

LLLCCL ××× =× RBA alors que CCCLLC ××× =⋅× PAB

Un cas particulier de la situation évoquée ci-dessus est celui du produit de deux matrices carrées de même taille. Bien que le résultat soit toujours une matrice carrée de taille identique, leur contenu diffère selon l'ordre de la multiplication :

NNNNNN ××× =⋅ RBA et NNNNNN ××× =⋅⋅ PAB

Par exemple A×B donne

=

×

10107

581

52-5

021

142

203

124

231

112

tandis que B×A donne

=

×

−−

350

5124

1714-

124

231

112

021

142

203

Par contre le produit de plusieurs matrices est associatif !

( ) ( )CBACBACBA ××=××=××

1 Par contre, le produit des transposées permutées est possible : A·B = R ⇔ BT·AT = RT

Page 12: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.8

Dans le même ordre d'idées, contrairement à ce qui se passe en algèbre, le produit de deux matrices non nulles peut donner une matrice nulle.

=

×

−−

000

000

000

462

231

462

021

122

303

De même qu'il existe un neutre pour la multiplication de deux réels, il existe un neutre pour la multiplication de deux matrices.

Dans le cas de la multiplication de scalaires, le neutre est 1 car

a1a =⋅

Dans le cas de la multiplication de matrices, les choses sont un peu plus compliquées. Le neutre pour la multiplication est la matrice "identité" I :

11

1

00

00

00

33I

La matrice identité est une matrice diagonale dont tous les éléments diagonaux valent 1. Le produit d'une matrice par la matrice identité peut se faire aussi bien "à gauche" que "à droite" quoique la dimension de la matrice identité "à gauche" soit différente de celle de la matrice identité "à droite". Dans le cas de matrices carrées, la multiplication par la matrice identité est strictement commutative.

NNNNNNNNNN

CLLLCLCCCL

×××××

×××××

×==×

×==×

BIBIBAIAIA

Notons une propriété intéressante utilisée en graphisme 3D :

( ) ( ) CLLLCLLLCL kkk ××××× ×⋅=×⋅=⋅ AIAIA

En clair : pour multiplier tous les éléments d'une matrice par un même facteur k, il suffit de la multiplier par une matrice diagonale dont les éléments diagonaux valent k. Ce type de matrice sera utilisé pour donner des effets de zoom.

kk

k

00

00

00

33K

2.3.6. Division de deux matrices carrées

En algèbre classique, la division d'un réel [ a ] par un réel [ b ] correspond au produit du réel [ a ] par l'inverse du réel [ b ] :

1bab1ab

a −⋅=⋅=

Par définition, le produit d'un réel [ a ] par son inverse [ 1/a ] donne le neutre pour la multiplication : 1a

1a =⋅

Page 13: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.9

On retrouve les mêmes concepts en algèbre matricielle : la division d'une matrice A par une autre B se ramène à la multiplication de la matrice A par l'inverse de la matrice B :

1CLCL

CL

CL −××

×

× ×= BABA

avec LL

1CLCL ×

−×× =× IBB

Tout le problème revient donc à déterminer l'inverse de la matrice B.

Dans le cadre de ce cours, nous ne nous intéresserons qu'à l'inversion de matrices carrées.

2.3.7. Inverse d'une matrice de 2x2

Considérons une matrice algébrique A2x2

=× dc

ba22A

les éléments a, b, c et d sont donnés.

Rechercher l'inverse de A revient à trouver une matrice A-1 dont les éléments sont inconnus a priori. Tout ce que nous savons, c'est que le produit de A et A-1 doit donner la matrice identité I (par définition de l'inverse). Soit

=−

× wzyx1

22A

les éléments x, y, z et w sont inconnus et nous allons tenter de les déterminer. Nous savons que

IAA =× −1

=

×

1001

wzyx

dcba

Nous pouvons développer en utilisant les règles du produit matriciel et de l'égalité des matrices. Nous obtenons un système de quatre équations à quatre inconnues :

=⋅+⋅=⋅+⋅

=⋅+⋅=⋅+⋅

=⋅+⋅=⋅+⋅

=⋅+⋅=⋅+⋅

1wdyc0wbya0zdxc1zbxa

1wdyc0wbya

0zdxc1zbxa

En fait, il s'agit plutôt de deux systèmes de deux équations à deux inconnues, ce qui est beaucoup plus facile à résoudre.

Nous extrayons [ x ] et [ z ] du premier système par la méthode des combinaisons linéaires. Nous multiplions la première ligne par [ c ] et la seconde par [ -a ] puis nous additionnons ce qui permet d'éliminer [ x ]

Page 14: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.10

( ) czdabc

0zdaxcaczbcxac

=⋅⋅−⋅

=⋅⋅−⋅⋅−=⋅⋅+⋅⋅

1 adbc

cz−

=

De manière similaire, en repartant du système initial et en multipliant la première équation par [ d ] et la seconde par [ -b ], nous éliminons [ z ]

( ) cxbcda

0zdbxcbdzbdxad

=⋅⋅−⋅

=⋅⋅−⋅⋅−=⋅⋅+⋅⋅

1 bcad

dx−

=

Nous procédons de la même manière avec le deuxième système d'équations et nous obtenons

adbc

aw−

−= et bcad

by−

−=

Nous constatons que le dénominateur est identique dans tous les cas, au signe près. Nous pouvons donc le mettre en évidence en reportant le signe au numérateur :

−−⋅

−=

−−−

−−

−=−acbd

bcad1

bcada

bcadc

bcadb

bcadd

1A

Pour que l'inverse d'une matrice 2×2 existe, il faut que le dénominateur soit différent de zéro.

Ce sera toujours le cas sauf si une ligne est multiple de l'autre.

En effet :

db

cabcad0bcad ≠⇔≠⇔≠−

2.3.8. Application

A titre d'illustration, recherchons l'inverse de la matrice

−=

1532M

En utilisant la solution trouvée au point précédent, nous avons immédiatement

−⋅=

−⋅

−⋅−⋅=−

2531

171

2531

)3(51211M

Nous pouvons vérifier qu'en faisant le produit nous retrouvons la matrice identité

1−× MM

−⋅×

−=

2531

171

1532

−×

−⋅=

2531

1532

171

Page 15: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 2 - Les Matrices

H. Schyns 2.11

=

⋅=

1001

170017

171

2.3.9. Inverse d'une matrice de N×N

L'inversion d'une matrice de dimension supérieure est hélas une opération assez ardue. En effet, pour appliquer notre schéma de résolution à une matrice de 3×3 nous devrions résoudre trois systèmes de trois équations à trois inconnues et ainsi de suite. De plus, ce n'est pas gagné d'avance car, ainsi que nous venons de le voir, toutes les matrices ne sont pas inversibles.

Pour systématiser l'approche, nous aurons besoin de quelques concepts supplémentaires qui seront développés dans le prochain chapitre…

Page 16: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 3 - Inversion des matrices carrées

H. Schyns 3.1

3. Inversion des matrices carrées

3.1. Notions préliminaires

3.1.1. La sous-matrice

A toute matrice, on peut associer plusieurs sous-matrices que l'on obtient en supprimant un certain nombre de lignes et de colonnes de la matrice initiale.

En particulier, à chaque élément a ij d'une matrice A on peut associer la sous-matrice obtenue en supprimant la ligne i et la colonne j de A.

Comme il n'y a pas de règle standard pour noter les sous-matrices, nous noterons une telle matrice { }{ }jiA

ce qui se lit : "A, sans la ligne i et sans la colonne j".

{ }{ }

=

=⇒

=

−−

−−

21

03

21

03

241

023

12

21

4

2

1121

AA

3.1.2. Le déterminant

Le déterminant d'une matrice est un scalaire. Le déterminant d'une matrice A se note

Adtm ou A

Le déterminant se définit et se calcule de manière récursive.

Le déterminant d'une matrice de dimension 1×1 est égal à la valeur du seul élément de cette matrice. Par exemple :

( ) 5 5 dtm ==⇒= AAA

Notons que dans le contexte du calcul matriciel la notation |A| désigne le déterminant et non une valeur absolue.

Le déterminant d'une matrice de dimension 2×2 est obtenu en faisant la somme des produits de chacun des éléments d'une ligne (ou d'une colonne) quelconque par son cofacteur.

Par cofacteur d'un élément aij d'une matrice A, on entend le déterminant de la sous-matrice associée à cet élément, multiplié par 1 ou -1 selon que la somme des indices (i+j) de l'élément en question est paire ou impaire. Ce cofacteur est noté A ij.

Soit

=

52

31B

alors

Page 17: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 3 - Inversion des matrices carrées

H. Schyns 3.2

1- 2 3 - 5 1 )2( 3 )5( 1 dtmdtmdtm =⋅⋅=⋅−⋅=B

Dans l'exemple ci-dessus, on calcule le déterminant en se servant de la première ligne :

- le premier élément de la ligne est a11 qui vaut 1; - la sous-matrice correspondante est (5); son déterminant vaut 5 en vertu de la

règle des déterminants 1x1 - le produit vaut donc 1·5 = 5 - comme la somme des indices de l'élément est paire (1+1 = 2), le signe ne

change pas. - le deuxième élément de la ligne est a12 qui vaut 3; - la sous-matrice correspondante est (2); son déterminant vaut 2 en vertu de la

règle des déterminants 1x1 - le produit vaut donc 2·3 = 6 - comme la somme des indices de l'élément est impaire (1+3 = 3), le signe du

produit change et devient -6. - le déterminant est donné par la somme des deux résultats : 5 - 6 = -1

Plus simplement, le calcul du déterminant d'une matrice de 2x2 se calcule en faisant la somme des produits en croix; le signe du résultat de la diagonale montante (en rouge) étant inversé :

1 3 2 5

Attention :

On appelle mineur de aij Le déterminant de la sous-matrice relative à l'élément aij d'une matrice A obtenue en supprimant la ligne i et la colonne j de A.

Le cofacteur est le mineur multiplié par 1 ou –1 selon que la somme des indices (i+j) de l'élément pris en référence est paire ou impaire.

Le déterminant d'une matrice de dimension 3×3 est obtenu de la même manière sauf que, dans ce cas, le cofacteur exige lui-même le calcul d'un déterminant. Par exemple :

Soit

= −

121

143

112

C

alors

21

43

11

13

12

14 dtm (-1) 1 2 ⋅+⋅−⋅=

−−C

( )( ) ( ) ( ) 4 1 2 3 (-1) (-1) 1-1 3 1 -1 1-2 4 2 dtm ⋅−⋅⋅+⋅⋅⋅−⋅⋅⋅=C

6 2 ) 1 (- 4 1 6 2 dtm =⋅+⋅−⋅=C

Un déterminant de n×n est obtenu par récursivité; le calcul des n cofacteurs exigeant eux-mêmes le calcul d'un déterminant de (n-1)x(n-1). On conçoit que

Page 18: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 3 - Inversion des matrices carrées

H. Schyns 3.3

cette procédure soit particulièrement lourde et, en pratique inutilisable manuellement pour des matrices de dimensions supérieures à 4x4. Nous verrons plus loin qu'il existe heureusement d'autres méthodes de calcul beaucoup plus efficaces.

3.1.3. Propriété des déterminants

1 - Le déterminant d’une matrice change de signe si l’on permute deux de ses rangées (ligne ou colonnes) parallèles.

2 - Le déterminant d’un produit des matrices est égale au produit de leurs déterminants

dtm(A×B) = dtm A · dtm B 3- Le déterminant d'une matrice diagonale ou d'une matrice triangulaire (L ou U)

est égal au produit des éléments diagonaux. 4 - Un déterminant est nul si la matrice possède deux lignes ou deux colonnes

identiques. 5 - Un déterminant est nul si l'une des lignes (resp. colonnes) est une combinaison

linéaire des autres lignes (resp. colonnes). 6 - Un déterminant ne change pas de valeur lorsqu’on ajoute à l’une des lignes

(resp. colonnes) une combinaison linéaire des autres lignes (resp. colonnes). Cette propriété est utilisée dans le calcul des déterminants par la méthode de

Gauss-Jordan. 7 - La somme des produits des éléments d’une ligne (resp. colonne) par les

mineurs correspondants d’une autre ligne (resp. colonne) est nulle.

Par exemple, le déterminant de la matrice D ci-dessous est nul car la ligne du milieu est la somme des deux autres lignes (propriété 4) :

=

121

033

112

D

Ces propriétés seront utilisées dans l'algorithme de Gauss-Jordan.

3.2. L'inverse

3.2.1. Méthode des cofacteurs

L'inverse d'une matrice carrée A est une matrice carrée, de dimensions identiques, notée A-1 :

- dans laquelle tous les éléments aij ont été remplacés par leur cofacteur Aij, - qui est ensuite transposée, - qui est affectée d'un facteur égal à l'inverse du déterminant de la matrice

initiale.

T

NN2N1N

N22221

N11211

1

AAA

AAA

AAA

1dtm

⋅=−

L

MOMM

L

L

AA

Page 19: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 3 - Inversion des matrices carrées

H. Schyns 3.4

On déduit de cette définition qu'une matrice ne peut avoir d'inverse que si son déterminant est différent de zéro. Par conséquent, une matrice dont une ligne (resp. colonne) est combinaison linéaire des autres lignes (resp. colonnes) ne peut avoir d'inverse.

3.2.2. Inversion algébrique d'une matrice 2×2

Considérons la matrice algébrique quelconque de 2×2

=

2221

1211

aa

aa M [eq. 3.1]

Remplaçons chacun des éléments par son cofacteur en faisant attention à la règle d'inversion des signes :

( )

−=

1112

2122

aa

aacof M [eq. 3.2]

Transposons cette matrice : les lignes deviennent des colonnes, les colonnes deviennent des lignes, la diagonale reste inchangée.

( )

−=

1121

1222T

aa

aacof M [eq. 3.3]

Divisons par le déterminant de la matrice initiale lequel, soit dit en passant, est égal au déterminant de la matrice des cofacteurs

−⋅

⋅−⋅=−

1121

1222

dtm

12212211

1

aa

aaaaaa

1

44 344 21M

M [eq. 3.4]

Nous pouvons vérifier que M-1 est bien l'inverse de M :

×

−⋅

⋅−⋅=×−

2221

1211

1121

1222

12212211

1

aa

aa

aa

aa aaaa

1 MM [eq. 3.5]

⋅+⋅−⋅+⋅−

⋅−⋅⋅−⋅

⋅⋅−⋅

=×−

44 344 2144 344 21

44 844 7644 844 76

M

M

MM

dtm22111221

021111121

0

22121222

dtm

21121122

12212211

1

aaaaaaaa

aaaaaaaa

aaaa1 [eq. 3.6]

Les éléments de la diagonale correspondent au déterminant tandis que les termes de la diagonale montante sont nuls. Dès lors, après distribution du pré-facteur :

IMM 10

011 =

=×− [eq. 3.7]

Page 20: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 3 - Inversion des matrices carrées

H. Schyns 3.5

3.2.3. Inversion d'une matrice 3×3

L'inversion d'une matrice algébrique générale de 3×3 est beaucoup plus lourde et sort du cadre de ce cours. A titre d'application, calculons plutôt l'inverse de la matrice C rencontrée plus haut.

Soit

= −

121

143

112

C [eq. 3.8]

Déterminons d'abord la matrice des cofacteurs

=

−−

513

333

246

cof )( C [eq. 3.9]

que nous transposons

=

−−

532

134

336

cof )( TC [eq. 3.10]

et que nous multiplions par l'inverse du déterminant (calculé plus haut)

⋅=

−−

−−

532

134

336

61 1C [eq. 3.11]

Vérifions

ICC

100

010

001

600

060

006

121

143

112

532

134

336

61 6

1 1 =−

−−

=

⋅=

×

⋅=×− [eq. 3.12]

Nous vérifions que, si nous permutons la matrice et son inverse, le produit donne toujours la matrice identité.

ICC

100

010

001

600

060

006

532

134

336

121

143

112

61 6

1 1 =

−−

=

⋅=

×

⋅=× − [eq. 3.13]

Calculer l'inverse d'une matrice par la méthode des cofacteurs et une opération longue et périlleuse dès qu'il s'agit de traiter des matrices de plus de 4×4. Nous verrons plus loin comment Wilhelm Jordan (1) a modifié l'algorithme de K.F. Gauss pour calculer d'une manière très élégante l'inverse d'une matrice numérique.

1 Wilhelm Jordan (1842-1899), géodésien allemand qui étudia les reliefs de l'Allemagne et de l'Afrique. En

mathématiques, il a amélioré l'algorithme d'élimination de K.F. Gauss pour dimunuer les erreurs d'arrondi.

Page 21: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 4 - Utilisation des matrices

H. Schyns 4.1

4. Utilisation des matrices

4.1. Résolution de systèmes d'équations

Nous savons qu'un système de [ N ] équations s'écrit symboliquement sous la forme

=⋅++⋅+⋅+⋅

=⋅++⋅+⋅+⋅

=⋅++⋅+⋅+⋅

NNNN33N22N11N

2NN2323222121

1NN1313212111

txaxaxaxa

txaxaxaxa

txaxaxaxa

K

M

K

K

[eq. 4.1]

dans laquelle

x1, x2, x3, …, xN

sont les [ n ] inconnues;

t1, t2, t3, …, tN

sont les [ n ] termes indépendants;

a11, a12, a13, …, aNN

sont les [ n×n ] coefficients des inconnues.

Dans ce symbolisme [ ajk ] est donc le coefficient de [ xk ] dans la jème équation (1).

Ce système d'équations peut se mettre sous la forme du produit matriciel

=

×

N

2

1

N

2

1

NN2N1N

N22221

N11211

t

t

t

x

x

x

aaa

aaa

aaa

MM

L

MOMM

L

L

[eq. 4.2]

soit, de manière symbolique,

A × X = T [eq. 4.3]

La résolution se fait de manière tout aussi symbolique, en multipliant les deux membres de l'équation par l'inverse de A. Attention : comme le produit matriciel n'est pas commutatif, seul le produit "par la gauche" est acceptable (2)

A-1 × A × X = A-1 × T [eq. 4.4]

1 Le premier indice représente la ligne, le second représente la colonne. 2 L'opération "par la droite"

A × X × A-1= T × A-1 ne conduit à rien car, comme on ne peut permuter ni X et A-1 ni X et A , la matrice A et son inverse A-1

ne sont jamais adjacentes et la simplification ne peut avoir lieu.

Page 22: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 4 - Utilisation des matrices

H. Schyns 4.2

Quel que soit l'ordre des opérandes adjacentes, le produit d'une matrice par son inverse donne la matrice identité I :

I × X = A-1 × T [eq. 4.5]

Par définition de la matrice identité, le produit d'une matrice X par la matrice identité I est égal à la matrice X initiale :

X = A-1 × T [eq. 4.6]

Dès lors, nous avons réussi à isoler la matrice X d'un côté du signe égal. D'un point de vue symbolique, le système est résolu. En pratique, c'est un peu plus compliqué car toute la difficulté est reportée sur le calcul de la matrice inverse A-1 !

4.2. Application

Pour illustrer la méthode, tentons de résoudre le système

=⋅−⋅−⋅+⋅

=⋅+⋅+

=−⋅+−⋅

=+⋅+−⋅−

7- x2 x4 x4 x5

1 x2 x4 x

10- x x2 x x2

3 x x6 x x3

4321

431

4321

4321

[eq. 4.7]

La première étape consiste à mettre le système sous la forme d'un produit matriciel :

=

×

−−

−−

−−

7

1

10

3

2445

2401

1212

1613

x

x

x

x

4

3

2

1

[eq. 4.8]

Le système est résolu formellement en écrivant

×

=

−−

−−

−−

7

1

10

3

2445

2401

1212

1613

x

x

x

x 1-

4

3

2

1

[eq. 4.9]

Il n'y a plus qu'à calculer l'inverse de la matrice des coefficients mais ça, dans le cas d'une matrice 4×4, c'est une autre paire de manches !

Après de nombreux calculs fastidieux qu'il est inutile de reproduire ici, on obtient

⋅−

=

−−−−

−−

−−

−−

−−

−−

24724848

1241632

4804848

0323232

2445

2401

1212

1613

1921

-1

[eq. 4.10]

d'où nous tirons

Page 23: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 4 - Utilisation des matrices

H. Schyns 4.3

=

×

⋅−

=

−−−−

−−

−−

3

75.0

5.1

2

7

1

10

3

24724848

1241632

4804848

0323232

1921

x

x

x

x

4

3

2

1

[eq. 4.11]

4.3. Statistiques

Les statistiques font un grand usage des sommes de valeurs, sommes de carrés, sommes de produits, etc.

Par exemple, la moyenne et la variance d'un ensemble de N valeurs xk se calculent à partir des expressions :

∑⋅=K

xN1x ( )

2

2k

2k

NxxN

var ∑∑ −⋅=

De même, le coefficient [ a ] de la droite des moindres carrés parmi un ensemble de couples de points (xk, yk) s'écrit :

( )

∑ ∑∑∑ ∑

⋅−⋅⋅−⋅

=kkkk

2k

2k

yxyxNxxN

a

Toutes ces sommes s'obtiennent de manière très élégante grâce à un produit matriciel. Il suffit de copier l'ensemble des données dans une matrice 3×N dans laquelle la première colonne est remplie de 1 :

=

NN

22

11

yx1

yx1

yx1

MMM

X

=

N21

N21T

yyy

xxx

111

L

L

L

X

Le produit matriciel de la transposée XT par la matrice initiale X fournit toutes les sommes demandées… et même plus !

⋅=

×

∑∑∑∑∑∑∑∑

∑∑

2kKKK

KK2KK

KK

NN

22

11

N21

N21T

yyxy

yxxx

yxN

yx1

yx1

yx1

yyy

xxx

111

MMM

L

L

L

XX

Notons que le résultat est une matrice symétrique.

Page 24: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 4 - Utilisation des matrices

H. Schyns 4.4

4.4. Théorie des graphes

Un graphe tel que celui de la fig. 4.1 peut être représenté de manière abstraite par une matrice d'adjacence.

u

p q

t

s

m

r

n

CB

E

A

D

fig. 4.1 Exemple de graphe orienté

Il s'agit d'un tableau à deux dimensions dans lequel les lignes et colonnes représentent les nœuds ou sommets. Par convention, les nœuds considérés comme origine sont présentés en en-tête de colonnes; ceux considérés comme extrémités, en en-tête de ligne.

Origine A B C D E

A 0 1 1 0 0 B 1 0 0 0 0 C 0 0 0 1 0 D 1 0 0 1 0

Des

tinat

ion

E 0 1 1 0 0 tab. 4.1 Représentation matricielle du graphe de la fig. 4.1

Dans ce tableau, chaque cellule représente une arête potentielle. Elle se trouve à l'intersection d'une colonne qui représente son nœud d'origine et une ligne qui représente son nœud d'extrémité. Cette cellule contient 1 ou 0 selon que l'arête correspondante existe ou non dans le graphe.

=

00110

01001

01000

00001

00110

G

Ainsi, dans la matrice G qui est la version matricielle du graphe orienté de la fig. 4.1 et du tableau, nous voyons que le nœud [ A ] est à l'origine de deux arêtes, l'une conduisant à [ B ] et l'autre à [ D ].

Les éléments de la diagonale correspondent aux arêtes pour lesquelles l'origine et la destination sont identiques, ce qui est le cas de la boucle [ D ][ D ].

Cette représentation est largement utilisée dans les traitements informatiques. Elle a l'inconvénient de consommer beaucoup d'espace mémoire alors que relativement peu de cellules contiennent des valeurs non nulles. D'autre part, dans le cas d'un graphe non orienté, la matrice est symétrique. On peut donc se contenter de considérer une matrice triangulaire.

Page 25: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 4 - Utilisation des matrices

H. Schyns 4.5

4.5. Animation 3D

Tous les problèmes d'animation des objets 3D tels que

- rotation, - zoom, - translation;

sont élégamment résolus à l'aide de la théorie des graphes et du calcul matriciel (1).

fig. 4.2 Rotation d'une figure par produit matriciel

L'ensemble des [ N ] points (sommets) constituant le graphique sont listés dans une matrice de N×2 ou N×3 selon que l'on travaille en 2D ou en 3D (2).

Par exemple, les sommets de la flèche rouge de la fig. 4.2 sont représentés par la matrice

=

5.15.1

15.0

11

5.01

X

D'un autre côté, la trigonométrie nous apprend que, si nous provoquons la rotation d'un repère orthonormé d'un angle [ θ ] autour de son origine (0, 0); il suffit d'appliquer une matrice de rotation R pour obtenir les nouvelles coordonnées (3).

=

θθ−

θθ

cos sin

sin cos R

1 Cette question fait l'objet d'un chapitre spécifique du cours de Mathématiques Appliquées à l'Informatique

intitulé "Initiation à l'Animation 3D". 2 Les dimensions deviennent respectivement N×3 et N×4 dans la définition du point afine. 3 Pour un observateur attaché au repère, la rotation du repère dans un sens apparaît comme une rotation

de son environnement dans l'autre sens : le soleil se déplace apparemment dans le ciel d'Est en Ouest alors que l'astronomie nous apprend que c'est la Terre qui tourne d'Ouest en Est.

Page 26: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 4 - Utilisation des matrices

H. Schyns 4.6

Dans le cas d'une rotation de 30° dans le sens trigonométrique, la matrice devient

=

=

−°°−

°°

866.0500.0

500.0866.0

03 cos03 sin

03 sin03 cos R [eq. 4.12]

Il suffit d'effectuer le produit matriciel pour obtenir les nouvelles positions (flèche verte de la fig. 4.2)

=

×

=−−

049.2549.0

116.1067.0

366.1366.0

933.0616.0

866.0500.0

500.0866.0

5.15.1

15.0

11

5.01

R

X [eq. 4.13]

Peu importe la complexité de la figure à faire pivoter, c'est toujours la même matrice de rotation qui s'applique.

De même, pour effectuer un zoom d'un facteur [ f ] de la figure, centré sur l'origine, il suffit d'appliquer la matrice diagonale

=

f0

0f Z

fig. 4.3 Zoom d'une figure par produit matriciel

Dans le cas de la flèche rouge de la fig. 4.3, un zoom d'un facteur 1.6 se traduit par

=

×

=

4.24.2

6.18.0

6.16.1

8.06.1

6.10

06.1

5.15.1

15.0

11

5.01

Z

X [eq. 4.14]

A nouveau, peu importe la complexité de la figure sur laquelle il faut zoomer, c'est toujours la même matrice de zoom qui s'applique.

Bien entendu, les effets peuvent être combinés. Par exemple, la chaîne de calcul ci-dessous fait pivoter la flèche rouge de 30° puis applique un zoom d'un facteur 1.6 au résultat (fig. 4.4)

Page 27: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 4 - Utilisation des matrices

H. Schyns 4.7

=

×

×

=−−

493.1986.0

785.1107.0

186.2586.0

493.1986.0

6.10

06.1

866.0500.0

500.0866.0

5.15.1

15.0

11

5.01

RZ

X [eq. 4.15]

fig. 4.4 Rotation suivie d'un zoom par produit matriciel

Pour appliquer la même transformation à une autre figure, il suffit de remplacer la matrice X, les matrices de rotation et de zoom restant inchangées.

Page 28: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.1

5. Implémentation informatique

5.1. Dans un tableur

A cause de leurs nombreuses applications, les matrices sont très souvent utilisées en programmation scientifique. Elles sont donc implémentées dans de nombreux outils.

Les tableurs des suites bureautiques telles que Excel de MS Office et Calc d'OpenOffice comprennent le calcul matriciel et en implémentent les principales fonctions :

- TRANSPOSE - PRODUITMAT - INVERSEMAT - DETERMAT

La seule difficulté des fonctions matricielles est qu'il faut sélectionner toute la zone où la réponse doit s'écrite avant d'introduire la formule. Ensuite, pour valider la formule, il faut appuyer simultanément sur les touches [Ctrl][Maj][Enter]. Si ce n'est pas fait, la formule ne s'inscrira que dans une seule cellule et le résultat sera incorrect.

fig. 5.1 Addition de deux matrices

Par exemple, pour additionner les deux matrices encodées dans les plages A1:C3 et E1:G3, il n'est pas nécessaire de répéter la formule d'addition dans chacune des cellules de la plage des résultats (fig. 5.1).

Il suffit :

- de commencer par sélectionner la zone où le résultat doit apparaître (ici I1:K3)

- de taper le signe = - de sélectionner la zone de la première matrice (ici A1:C3) - de taper le signe + - de sélectionner la zone de la deuxième matrice (ici E1:G3) - d'appuyer simultanément sur les touches [Ctrl][Maj][Enter] (appuyer

et maintenir [Ctrl], appuyer et maintenir [Maj], terminer en appuyant [Enter] et relâcher le tout.

Si la formule a bien été encodée, elle est enserrée entre accolades

Page 29: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.2

{=A1:C3 + E1:G3}

et les résultats s'inscrivent dans l'ensemble de la zone sélectionnée.

Nous procédons de manière similaire pour multiplier une matrice par une constante (fig. 5.2)

fig. 5.2 Multiplication d'une matrice par une constante

Par contre, la transposition d'une matrice exige l'emploi d'une formule spécifique nommée TRANSPOSE :

fig. 5.3 Transposition d'une matrice

Le principe est toujours le même :

- commencer par sélectionner la zone où le résultat doit apparaître (ici F1:H3) - taper la formule =TRANSPOSE( - sélectionner la zone de l'opérande (ici A1:C3) - valider en appuyant simultanément sur les touches [Ctrl][Maj][Enter]

Attention, ne pas oublier la parenthèse ouvrante après le nom de la fonction; la parenthèse fermante se mettra d'elle-même.

fig. 5.4 Produit de deux matrices

Le produit de deux matrices s'effectue à l'aide de la fonction PRODUITMAT.

Page 30: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.3

Pour effectuer le produit de plusieurs matrices il faut soit calculer les résultats intermédiaires, soit imbriquer les fonctions (fig. 5.5) :

fig. 5.5 Produit de trois matrices

Rappelons que, le produit matriciel n'étant pas commutatif, l'ordre dans lequel les opérandes sont sélectionnées est critique. Dans l'exemple, nous avons bien effectué

(A1:C3) × (E1:G3) × (I1:K3)

Dans un tableur, inverser une matrice est un jeu d'enfant, grâce à la fonction INVERSEMAT :

fig. 5.6 Déterminant et inversion d'une matrice

Evidemment, il est préférable de s'assurer que la matrice est inversible en vérifiant, grâce à la fonction DETERMAT, que son déterminant est non nul.

5.2. En langage orienté objet

Il est assez facile de définir une classe Matrice dans langages orientés objet. De plus, la surcharge des opérateurs rend leur manipulation particulièrement aisée.

Page 31: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.4

Assez curieusement, il n'existe pas de template class Matrix<T> dans la librairie standard STL (1). Toutefois, chaque développeur étant confronté à ce problème, il existe une foule de bibliothèques sur le net. Malheureusement de nombreuses réalisations laissent à désirer.

Généralement, l'implémentation d'une classe Matrix utilise l'allocation dynamique de mémoire. Ca semble aller de soi, mais on note déjà une grande disparité à ce niveau.

Il ne faut pas perdre de vue que les matrices sont des objets très encombrants : une matrice de 100×100 éléments de type double utilise 80 000 bytes et dépasse la taille d'un segment de 64 kB. Il est donc illusoire de vouloir allouer tout l'espace nécessaire à la matrice en un seul bloc.

5.2.1. Le principe et les bases

La solution habituellement employée est le "tableau dynamique de pointeurs" encore appelé "pointeur sur pointeur" :

fig. 5.7 Allocation dynamique dans la classe Matrix

Si Base est le pointeur de pointeurs, alors :

- Base[ir] désigne l'un des pointeurs, - Base[ir][ic] désigne l'un des éléments.

Nous jetons ci-dessous les premières bases d'une classe Matrix de float :

class Matrix //Matrix.h { protected : float **base; // pointeur de pointeur unsigned int nrow, ncol; public : // constructeurs etc Matrix (void); Matrix (const unsigned int arow, const unsigned int acol); Matrix (const Matrix& Source); ~Matrix (void); Matrix& operator= (const Matrix& Source); };

1 La Standard Template Library (STL) implémente sous forme de template tous les containers usuels tels

que Vector, List, Queue

Page 32: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.5

Le constructeur sans paramètre assemble une matrice nulle, sans aucun espace alloué.

Matrix::Matrix(void) //Matrix.cpp { base = 0; nrow = 0; ncol = 0; }

Les paramètres du constructeur "normal" sont les dimensions de la matrice.

Matrix::Matrix (const unsigned int arow, //Matrix.cpp const unsigned int acol) { unsigned int ir; // tableau de ptrs pour les lignes base = 0; nrow = arow; // vérifier si nrow > 0 if (nrow) base = new float* [nrow]; ncol = acol; // vérifier si ncol > 0 if (nrow && ncol) // et attacher les lignes for (ir=0; ir<nrow; ir++) base[ir] = new float [ncol]; }

Le constructeur par recopie est assez semblable, mais il prend ses paramètres et son contenu auprès de la source

Matrix::Matrix(const Matrix& Source) //Matrix.cpp { if (&Source == this) return; unsigned int ir; // tableau de ptrs pour les lignes base = 0; nrow = Source.nrow; // vérifier si nrow > 0 if (nrow) base = new float* [nrow]; ncol = Source.ncol; // vérifier si ncol > 0 if (nrow && ncol) // et attacher les lignes for (ir=0; ir<nrow; ir++) { base[ir] = new float [ncol]; // transférer le contenu memcpy(base[ir], Source.base[ir], ncol*sizeof(float)); // potentiellement dangereux !! } }

Ici, les éléments de la matrice sont de type float et la recopie des valeurs peut ce faire par memcpy. Toutefois, cette technique est potentiellement dangereuse car, en toute généralité, les éléments constitutifs pourraient être d'un type qui fait appel à de l'allocation dynamique (p.ex. GrandNombre, Polynome, etc).

Or, une fois mise au point dans le cas des float, cette classe Matrix va devenir une classe <template> par la suite.

Dans le doute, on utilise une boucle de recopie qui utilise l'operator= du type stocké

C'est moins performant mais beaucoup plus sûr !

Page 33: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.6

La fin de la routine devient

Matrix::Matrix(const Matrix& Source) //Matrix.cpp { : //... (1) ncol = Source.ncol; // vérifier si ncol > 0 if (nrow && ncol) for (ir=0; ir<nrow; ir++) { // attacher les lignes base[ir] = new float [ncol]; // transférer le contenu for (ic=0; ic<ncol; ic++) base[ir][ic] = Source.base[ir][ic]; // safe car utilise operator= du type stocké } }

Le destructeur fait appel à une routine "protected" qui sera employée dans d'autres fonctions membres

Matrix::~Matrix(void) //Matrix.cpp { freeptr(); } void Matrix::freeptr(void) // protected { unsigned int ir; for (ir=0; ir<nrow; ir++) // detruire chaque ligne delete [] base[ir]; delete [] base; // puis le tableau de pointeurs base = 0; // reset du pointeur }

Comme de coutume, operator= ressemble furieusement au constructeur de recopie

Matrix& Matrix::operator=(const Matrix& Source) //Matrix.cpp { if (&Source == this) return (*this); unsigned int ir, ic; if (base) freeptr(); // si la matrice a deja un contenu, // le purger base = 0; nrow = Source.nrow; // vérifier si nrow > 0 if (nrow) base = new float* [nrow]; ncol = Source.ncol; // vérifier si ncol > 0 if (nrow && ncol) // et attacher les lignes for (ir=0; ir<nrow; ir++) { base[ir] = new float [ncol]; // transférer le contenu for (ic=0; ic < ncol; ic++) base[ir][ic] = Source.base[ir][ic]; } return (*this); }

1 Les deux points ( : ) en début de ligne signifient que d'autres lignes précèdent ou suivent le paragraphe

discuté

Page 34: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.7

5.2.2. Les accesseurs

Nous définissons deux versions des accesseurs d'éléments; l'une non sécurisée, l'autre sécurisée :

class Matrix //Matrix.h { : //... public : : //... float* operator[] (const unsigned int irow); float& operator() (const unsigned int irow, const unsigned int icol); };

Nous savons qu'en langage C/C++ un tableau de float à deux dimensions se déclare par

float table [ nrow ][ ncol ];

De même, nous accédons à élément [ i ][ k ] de ce tableau, que ce soit à titre de lvalue ou de rvalue par

table [i][j] = 25; // accès en lvalue x = table [i][j]; // accès en rvalue

Le développeur étant familiarisé avec cette syntaxe, il serait commode de la reproduire dans notre classe Matrix. Malheureusement, operator[][] n'existe pas et il n'est pas possible de passer deux paramètres à operator[] qui existe.

En fait, le problème est mal posé. Nous savons que derrière tout pointeur explicite se cache un tableau implicite dès lors, nous n'avons pas besoin d'un operator[][]; il nous suffit d'utiliser operator[] à la seule condition qu'il retourne un pointeur !

float* Matrix::operator[](const unsigned int irow) //Matrix.cpp { if ((irow < 0) || (irow >= nrow)) return 0; return (base[irow]); }

Cet operator[] nous permet d'accéder à une ligne (float*) que l'on peut ensuite déréferencer pour atteindre un élément aMatrix[irow][icol].

void main (void) //TestMat.cpp { Matrix matA (2,2); // acces via operator[] matA[0][0] = -1; // lvalue matA[0][1] = -3* matA[0][0]; // lvalue = rvalue matA[1][0] = 1; matA[1][1] = 2; }

Le seul problème est que cette fonction renvoie un pointeur sur un data membre, et, de ce fait, elle constitue une brêche dans l'encapsulation des données. Par exemple, rien n'empêche l'utilisateur de désallouer lui-même des parties de la matrice en écrivant

delete [] matA[1];

Page 35: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.8

Pour contourner le problème, nous utilisons l'opérateur de fonction operator() qui, lui, peut prendre un nombre quelconque de paramètres.

float& Matrix::operator() (const unsigned int irow, //Matrix.cpp const unsigned int icol) { if ((irow < 0) || (irow >= nrow) ||(icol < 0) || (icol >= ncol)) return (elem_null); return (base[irow][icol]); }

L'accesseur renvoie une référence sur un élément, ce qui permet de l'utiliser aussi bien en rvalue qu'en lvalue.

void main (void) //TestMat.cpp { Matrix matA (2,2); // acces via operator() matA(0,0) = 5; // lvalue matA(0,1) = 1; matA(1,0) = -2 * matA(0,1); // lvalue = rvalue matA(1,1) = 4; }

Cette solution respecte totalement la règle d'encapsulation. Comme c'est souvent le cas avec les références, le problème est de contrôler ce qui est renvoyé en cas d'erreur. Une solution consiste à intéger dans la classe un data membre statique nommé elem_null, du même type que celui stocké, initialisé par son propre constructeur, dont le contenu est donc inconnu mais permet de limiter les dégâts (1). Eventuellement, cet élément sera déclaré static de manière à être partagé par toutes les instances de la classe.

class Matrix { protected : // data membres float **base; unsigned int nrow, ncol; float elem_null; // renvoyé en cas d'erreur : //... }

5.2.3. Fonctions arithmétiques

Nous devons reste à présent à implémenter toutes les fonctions de l'algèbre matricielle (en vérifiant les conditions d'application)

- multiplication d'une matrice par un réel, - addition et multiplication de matrices, - transposition, - déterminant et inversion, - etc.

Notons que ces fonctions doivent être écrites en deux versions :

1 Notre responsabilité se limite à gérer correctement la classe Matrix, elle n'inclut pas le rattrappage des

erreur faites par l'utilisateur de la classe.

Page 36: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.9

- celle qui s'applique à la matrice courante : p.ex.: matA += matB; - celle qui fournit un résultat copié dans une matrice tierce : p.ex.: matA = matB + matC;

A titre d'illustration, développons le cas de l'addition de deux matrices vers une matrice tierce.

class Matrix //Matrix.h { : //... public: : //... Matrix operator+ (const Matrix& matA) const; Matrix operator* (const Matrix& matA) const; };

Le type Matrix en retour signifie que cette fonction instancie un nouvel objet qui sera copié intégralement sur la stack !

Les deux mots-clés const signifient que la fonction ne modifie ni l'opérande, ni l'objet courant.

L'addition de deux matrices ne peut se faire que si elles ont les mêmes dimensions. Si ce n'est pas le cas, une matrice nulle est renvoyée.

Matrix Matrix::operator+(const Matrix& matA) const //Matrix.cpp { if ((matA.nrow != nrow) || (matA.ncol != ncol)) { Matrix matResu; // matrice nulle return (matResu); } Matrix matResu = *this; // copie de la matrice courante unsigned int ir, ic; // dans un nouvel objet for (ir=0; ir<nrow; ir++) // boucles d'addition elem par elem for(ic=0; ic<ncol; ic++) matResu.base[ir][ic] += matA.base[ir][ic]; return (matResu); }

Si les conditions sont remplies, la routine crée un nouvel objet qui est la copie de l'objet courant. Ensuite, elle additionne à chacun de ses éléments l'élément correspondant de la deuxième opérande (matA).

L'implémentation du produit matriciel n'est pas beaucoup plus compliquée. La condition nécessaire et suffisante est que le nombre de colonnes de l'opérande de gauche (*this) est égal au nombre de lignes de l'opérande de droite (matA). La matrice résultante a autant de lignes que l'opérande de gauche et autant de colonnes que l'opérande de droite :

Matrix Matrix::operator*(const Matrix& matA) const //Matrix.cpp { if (ncol != matA.nrow) { Matrix matResu; // matrice nulle return (matResu); } Matrix matResu(nrow, matA.ncol);// nouvel objet, autres dimensions unsigned int ir, ic, ik;

Page 37: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.10

for (ir=0; ir<nrow; ir++) // boucles de multiplic. lig x col for (ic=0; ic < matA.ncol; ic++) { // initialisation de l'element matResu.base[ir][ic] = 0; for (ik=0; ik < ncol; ik++) matResu.base[ir][ic] += base[ir][ik]*matA.base[ik][ic]; } return (matResu); }

Par contre, le produit d'un réel et d'une matrice exige une fonction "hors classe" qui sera déclarée friend puisqu'il s'écrit

matB = da * matA;

L'operator* appartient à la classe de da et non à celle de matA.

Matrix operator*(const double& da, const Matrix& matA) //Matrix.cpp { Matrix matResu = matA; // copie de la matrice operande unsigned int ir, ic; for (ir=0; ir< matResu.nrow; ir++) for (ic=0; ic < matResu.ncol; ic++) matResu.base[ir][ic] *= (float)da; return (matResu); }

Elle est ensuite intégrée comme "friend" à notre classe :

class Matrix //Matrix.h { friend Matrix operator*(const double& da, const Matrix& matA); : //... }

5.2.4. Fonctions d'entree/sortie

Nous pouvons bricoler rapidement une fonction friend operator<< chargée de l'affichage du contenu de la matrice.

ostream& operator<<(ostream& sout, Matrix& Source) //Matrix.cpp { unsigned int ir, ic; for(ir=0; ir< Source.nrow; ir++) { for (ic=0; ic<Source.ncol; ic++) sout << Source.base[ir][ic] << '\t'; sout << '\n'; } return(sout); }

De même, nous définissons rapidement une fonction de saisie :

Page 38: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 5 - Implémentation informatique

H. Schyns 5.11

istream& operator>>(istream& sin, Matrix& Source) //Matrix.cpp { unsigned int ir, ic; for(ir=0; ir< Source.nrow; ir++) for (ic=0; ic<Source.ncol; ic++) { cout << "Elem (" << ir << ',' << ic << ") : " ; sin >> Source.base[ir][ic]; } return(sin); }

Ces deux fonctions sont aussi intégrées comme "friends" :

class Matrix //Matrix.h { friend ostream& operator<<(ostream& sout, Matrix& matA); friend istream& operator>>(istream& sin, Matrix& matA); friend Matrix operator*(const double& da, const Matrix& matA); : //... }

5.2.5. Démonstration

Ecrivons un petit progamme de test de la classe :

#include <iostream> //TestMat.cpp #include "Matrix.h" using namespace std; void main (void) { Matrix matA (2,2); Matrix matB (2,2); Matrix matC; // acces via operator() matA(0,0) = 5; matA(0,1) = 1; matA(1,0) = -2 * matA(0,1); matA(1,1) = 4; // acces via operator[] matB[0][0] = -1; matB[0][1] = -3 * matB[0][0]; matB[1][0] = 1; matB[1][1] = 2; // affichage cout << "Matrice A" << endl << matA << endl; cout << "Matrice B" << endl << matB << endl; system ("Pause"); // addition matC = matA + matB; cout << "Matrice A + Matrice B" << endl << matC << endl; system ("Pause"); // produit matriciel matC = matA * matB; cout << "Matrice A * Matrice B" << endl << matC << endl; system ("Pause"); // produit scalaire matC = -2 * matA; cout << "-2 * Matrice A" << endl << matC << endl; system ("Pause"); // saisie cin >> matA; cout << "Matrice A" << endl << matA << endl; }

Page 39: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 6 - Inversion par Gauss-Jordan

H. Schyns 6.1

6. Inversion par Gauss-Jordan

L'algorithme de Gauss-Jordan est une astucieuse variante de l'algorithme de réduction de Gauss (1) qui permet de trouver l'inverse d'une matrice à partir de combinaisons linéaires.

6.1. Mise en place

Pour illustrer la méthode, tentons de résoudre le système

=⋅−⋅−⋅+⋅

=⋅+⋅+

=⋅−⋅+−⋅

=+⋅+−⋅−

7- x2 x4 x4 x5

1 x2 x4 x

10- x4 x2 x x2

3 x x6 x x3

4321

431

4321

4321

[eq.5.1]

La première étape consiste à mettre le système sous la forme d'un produit matriciel :

=

×

−−

−−

−−

7

1

10

3

2445

2401

1212

1613

x

x

x

x

4

3

2

1

[eq.5.2]

soit, de manière symbolique, ainsi qu'expliqué au point 4.1

×

=

−−

−−

−−−

7

1

10

3

2445

2401

1212

1613

x

x

x

x 1

4

3

2

1

[eq.5.3]

Il "suffit" donc d'inverser la matrice 4×4, perspective assez peu engageante. heureusement, nous pouvons reprendre l'algorithme de Gauss vu par ailleurs.

L'astuce consiste à adjoindre une matrice diagonale à la matrice représentant le système à résoudre. Nous prévoyons aussi une place pour le cofacteur, sorte de facteur mis en évidence pendant les opérations.

x1 x2 x3 x4 ti eq.

-3 -1 6 1 3 1 0 0 0 L1

2 -1 2 -1 -10 0 1 0 0 L2

1 0 4 2 1 0 0 1 0 L3

5 4 -4 -2 -7 0 0 0 1 L4

1 La réduction de Gauss et ses variantes sont expliquées en détail dans le chapitre du cours de

Mathématiques appliquées à l'informatique intitulé "Systèmes linéaires de n équations à n inconnues".

Page 40: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 6 - Inversion par Gauss-Jordan

H. Schyns 6.2

Préfacteur 1 tab. 6.1 Tableaux initiaux

Au fil de la résolution, la matrice de gauche va se transformer en diagonale tandis que la diagonale de droite va se transformer pour afficher la matrice inverse. Le préfacteur, lui, contiendra la valeur du déterminant.

6.2. Résolution

Rappelons que la méthode de Gauss utilise deux processus :

- un processus de normalisation, - un processus de soustraction.

Ces deux processus sont répétés autant de fois qu'il y a d'équations à traiter.

Dans la variante de Gauss-Jordan, nous appliquons les mêmes opérations sur la partie gauche et sur la partie droite des tableaux, comme s'il ne s'agissait que d'un seul tableau.

La première phase de normalisation consiste à faire apparaître des "1" dans la première colonne du tableau. Pour cela, nous divisons tous les éléments d'une ligne - y compris celles du tableau diagonal - par le premier de la ligne. Nous procédons de la sorte pour toutes les lignes.

Chaque fois que nous divisons une ligne par son premier élément, nous mutiplions le préfacteur par cette valeur.

x1 x2 x3 x4 ti eq.

1 0.333 -2 -0.333 -1 -0.333 0 0 0 L1 / a1,1

1 -0.5 1 -0.5 -5 0 0.5 0 0 L2 / a2,1

1 0 4 2 1 0 0 1 0 L3

1 0.8 -0.8 -0.4 -1.4 0 0 0 0.2 L4 / a4,1

Préfacteur -30 tab. 6.2 Première normalisation

La première phase de soustraction consiste à combiner linéairement la première ligne avec chacune des autres de manière à faire apparaître des "0" dans la première colonne.

En pratique, nous effectuons les soustractions entre les éléments d'une ligne et ceux de la première ligne, y compris dans le tableau diagonal… qui cesse de l'être après cette opération. Au cours de cette phase, le préfacteur reste inchangé.

x1 x2 x3 x4 ti eq.

1 0.333 -2 -0.333 -1 -0.333 0 0 0 L1

0 -0.833 3 -0.167 -4 0.333 0.5 0 0 L2 - L1

0 -0.333 6 2.333 2 0.333 0 1 0 L3 - L1

0 0.467 1.2 -0.067 -0.4 0.333 0 0 0.2 L4 - L1

Préfacteur -30 tab. 6.3 Première soustraction

Page 41: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 6 - Inversion par Gauss-Jordan

H. Schyns 6.3

La deuxième phase de normalisation consiste à faire apparaître des "1" dans la deuxième colonne du tableau. Cette fois, le pivot est le deuxième élément de la deuxième ligne.

A nouveau, chaque fois que nous divisons une ligne par son deuxième élément, nous mutiplions le préfacteur par cette valeur.

x1 x2 x3 x4 ti eq.

1 0.333 -2 -0.333 -1 -0.333 0 0 0 L1

0 1 -3.6 0.2 4.8 -0.4 -0.6 0 0 L2 / a2,2

0 1 -18 -7 -6 -1 0 -3 0 L3 / a3,2

0 1 2.571 -0.143 -0.857 0.714 0 0 0.429 L4 / a4,2

Préfacteur -3.888 tab. 6.4 Deuxième normalisation

La deuxième phase de soustraction consiste à combiner linéairement la deuxième ligne avec chacune des autres de manière à faire apparaître des "0" dans la deuxième colonne.

Pour la première ligne, nous soustrayons directement un multiple adéquat de la seconde ligne : 22,111 LaLL ⋅−→ [eq. 5.4]

Pour les lignes 3 et 4, nous soustrayons simplement la ligne 2 :

x1 x2 x3 x4 ti eq.

1 0 -0.8 -0.4 -2.6 -0.2 0.2 0 0 L1 - a1,2·L2

0 1 -3.6 0.2 4.8 -0.4 -0.6 0 0 L2

0 0 -14.4 -7.2 -10.8 -0.6 0.6 -3 0 L3 - L2

0 0 6.171 -0.343 -5.657 1.114 0.6 0 0.429 L4 - L2

Préfacteur -3.888 tab. 6.5 Deuxième soustraction

La troisième phase de normalisation consiste à faire apparaître des "1" dans la troisième colonne du tableau. Pour cela, nous divisons tous les éléments d'une ligne par le troisième de la ligne et nous procédons de la sorte pour toutes les lignes, sauf la première et la deuxième déjà traitées.

Comme précédemment, chaque fois que nous divisons une ligne par son troisième élément, nous mutiplions le préfacteur par cette valeur.

x1 x2 x3 x4 ti eq.

1 0 -0.8 -0.4 -2.6 -0.2 0.2 0 0 L1

0 1 -3.6 0.2 4.8 -0.4 -0.6 0 0 L1

0 0 1 0.5 0.75 0.042 -0.042 0.208 0 L3 / a3,3

0 0 1 -0.056 -0.917 0.181 0.097 0 0.069 L4 / a4,3

Préfacteur 345.6 tab. 6.6 Troisième normalisation

Nous poursuivons avec une troisième phase de soustraction qui combine linéairement la troisième ligne avec les autres de manière à faire apparaître un "0" dans la troisième colonne.

Page 42: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 6 - Inversion par Gauss-Jordan

H. Schyns 6.4

Pour la première et la deuxième ligne, nous soustrayons un multiple adéquat de la troisième ligne :

33,111

LaLL ⋅−→ [eq. 5.5]

33,222

LaLL ⋅−→ [eq. 5.6]

Pour la ligne 4, nous soustrayons simplement la ligne 3 :

x1 x2 x3 x4 ti eq.

1 0 0 0 -2 -0.167 0.167 0.167 0 L1 - a1,3·L3

0 1 0 2 7.5 -0.25 -0.75 0.75 0 L2 – a2,3·L3

0 0 1 0.5 0.75 0.042 -0.042 0.208 0 L3

0 0 0 -0.556 -1.667 0.139 0.139 -0.208 0.069 L4 - L3

Préfacteur 345.6 tab. 6.7 Troisième soustraction

Nous terminons avec une quatrième phase de normalisation en divisant tous les éléments de la quatrième ligne par son quatrième élément. Le préfacteur est multiplié par cet élément :

x1 x2 x3 x4 ti eq.

1 0 0 0 -2 -0.167 0.167 0.167 0 L1

0 1 0 2 7.5 -0.25 -0.75 0.75 0 L2

0 0 1 0.5 0.75 0.042 -0.042 0.208 0 L3

0 0 0 1 3 -0.250 -0.250 0.375 -0.125 L4 / a4,4

Préfacteur -192 tab. 6.8 Quatrième normalisation

Il ne nous reste plus qu'à effectuer une quatrième phase de soustraction qui combine linéairement la quatrième ligne avec les précédentes de manière à faire apparaître un "0" dans la quatrième colonne :

44,111

LaLL ⋅−→ [eq. 5.7]

44,222

LaLL ⋅−→ [eq. 5.8]

44,333

LaLL ⋅−→ [eq. 5.9]

x1 x2 x3 x4 ti Matrice inverse eq.

1 0 0 0 -2 -0.167 0.167 0.167 0 L1 - a1,4·L4

0 1 0 0 1.5 0.25 -0.25 0 0.25 L2 – a2,4·L4

0 0 1 0 -0.75 0.167 0.083 0.021 0.063 L3 – a3,4·L4

0 0 0 1 3 -0.250 -0.250 0.375 -0.125 L4

Déterminant -192 tab. 6.9 Quatrième soustraction

Bilan de l'opération :

- le tableau de gauche est devenu diagonal, ce qui signifie que la colonne des termes indépendants contient les solutions.

- l'ensemble des facteurs mis en évidence nous donne le déterminant.

Page 43: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 6 - Inversion par Gauss-Jordan

H. Schyns 6.5

- quant au tableau de droite - qui était diagonal - il contient à présent l'inverse de la matrice initiale.

Tout ça en un seul algorithme. C'est presque magique !

=

×

−−−

−−

−−

−−

1000

0100

0010

0001

125.0375.0250.0250.0

063.0021.0083.0167.0

250.00250.0250.0

0167.0167.0167.0

2445

2401

1212

1613

[eq.5.10]

De même, en appliquant la matrice inverse au vecteur des termes indépendants, nous obtenons le vecteur des solutions :

=

×

−−−

3

75.0

5.1

2

7

1

10

3

125.0375.0250.0250.0

063.0021.0083.0167.0

250.00250.0250.0

0167.0167.0167.0

[eq.5.11]

C'est quand même beau la science !

Page 44: MATHEMATIQUES - Eléments de Calcul Matricielnotesdecours.drivehq.com/courspdf/MaiMatrices.pdfEléments de Calcul Matriciel 2 - Les Matrices H. Schyns 2.2 Si la matrice compte le même

Eléments de Calcul Matriciel 7 - Sources

H. Schyns 7.1

7. Sources

7.1. Ouvrages

- Mathématiques appliquées à l’informatique Jean-Etienne Poirrier Notes de cours

- Advanced engineering mathematics Erwin Kreyszig John Wiley & Sons, Inc. 8th edition ISBN 0-471-33328-X

- Computational Mathematics N.I. Danilina, N.S. Dubrovskaya, O.P. Kvasha, G.L. Smirnov Mir Publishers Moscow ISBN 5-03-000275-8

- Modern Engineering Mathematics Glyn James Addison Wesley Publishing Company ISBN 0-201-87761-9

- Discrete Mathematics and its Applications Kenneth H. Rosen McGraw-Hill International Editions ISBN 0-07-116756-0

7.2. Sites web

- Compiler Friendly Matrices Gaspard Petit Département d'Informatique et recherche opérationnelle Université de Montréal www-etud.iro.umontreal.ca/~petitg/cpp/matrix.html

- Matrices (mathématiques) et articles connexes Anonyme Wikipédia – l'Encyclopédie libre fr.wikipedia.org/wiki/Matrice_(mathématiques)