matrixintro.tex

<< Espaces de coordonnées multiples

Sommaire

Matrices et transformations linéaires >>

Chapter 4

Introduction aux matrices

Malheureusement, personne ne peut expliquer ce qu’est la matrice.
Tu dois le voir par toi-même.

— Morpheus dans Matrix (1999)

Les matrices sont d’une importance fondamentale en mathématiques 3D, où elles servent principalement à décrire la relation entre deux espaces de coordonnées. Elles le font en définissant un calcul permettant de transformer des vecteurs d’un espace de coordonnées vers un autre.

Ce chapitre présente la théorie et l’application des matrices. Notre discussion suivra le schéma établi dans le chapitre 2 lors de l’introduction des vecteurs : définitions mathématiques suivies d’interprétations géométriques.

4.1Définition mathématique d’une matrice

En algèbre linéaire, une matrice est une grille rectangulaire de nombres organisée en lignes et en colonnes. En rappelant notre définition antérieure d’un vecteur comme tableau unidimensionnel de nombres, une matrice peut de même être définie comme un tableau bidimensionnel de nombres. (Le « bi » dans « tableau bidimensionnel » vient du fait qu’il y a des lignes et des colonnes, et ne doit pas être confondu avec les vecteurs ou matrices 2D.) Ainsi, un vecteur est un tableau de scalaires, et une matrice est un tableau de vecteurs.

Cette section présente les matrices d’un point de vue purement mathématique. Elle est divisée en huit sous-sections.

4.1.1Dimensions et notation matricielles

Tout comme nous avons défini la dimension d’un vecteur en comptant combien de nombres il contient, nous définirons la taille d’une matrice en comptant combien de lignes et de colonnes elle contient. On dit qu’une matrice avec rr lignes et cc colonnes est une matrice r×cr \times c (lire « rr par cc »). Par exemple, une matrice 4×34 \times 3 a 4 lignes et 3 colonnes :

Une matrice 4×34 \times 3

[4012543124/311/2180].\begin{bmatrix} 4 & 0 & 12 \\ {- 5} & \sqrt{4} & 3 \\ 12 & {- 4/3} & {- 1} \\ {1/2} & 18 & 0 \\ \end{bmatrix}.

Cette matrice 4×34 \times 3 illustre la notation standard pour écrire les matrices : les nombres sont disposés dans une grille entourée de crochets. Notez que certains auteurs peuvent encadrer la grille de nombres par des parenthèses, et d’autres utilisent des barres verticales droites. Nous réservons cette dernière notation à un concept entièrement distinct lié aux matrices, le déterminant d’une matrice. (Nous traitons des déterminants dans la section 6.1.)

Comme nous l’avons mentionné dans la section 2.1, dans ce livre nous représentons une variable matricielle par des lettres majuscules en gras, par exemple, 𝐌\mathbf{M} , 𝐀\mathbf{A} , 𝐑\mathbf{R} . Lorsque nous souhaitons désigner les éléments individuels d’une matrice, nous utilisons la notation indicée, généralement avec la lettre minuscule correspondante en italique. Cela est illustré ci-dessous pour une matrice 3×33 \times 3 :

Notation indicée pour les éléments d’une matrice

[m11m12m13m21m22m23m31m32m33]\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}

La notation mijm_{ij} désigne l’élément de 𝐌\mathbf{M} à la ligne ii et la colonne jj . Les matrices utilisent des indices commençant à 1, donc la première ligne et la première colonne sont numérotées 1. Par exemple, m12m_{12} (lire « mm un deux », et non « mm douze ») est l’élément en première ligne, deuxième colonne. Notez que cela diffère des langages de programmation tels que C++ et Java, qui utilisent des indices de tableau commençant à 0. Une matrice n’a ni colonne 0 ni ligne 0. Cette différence d’indexation peut prêter à confusion lorsque les matrices sont stockées à l’aide d’un type tableau natif. Pour cette raison, il est courant que les classes stockant des matrices de petite taille fixe à usage géométrique donnent à chaque élément sa propre variable membre nommée, comme float m11, plutôt que d’utiliser le tableau natif du langage avec quelque chose comme float elem[3][3].

4.1.2Matrices carrées

Les matrices ayant le même nombre de lignes et de colonnes sont appelées matrices carrées et revêtent une importance particulière. Dans ce livre, nous nous intéressons aux matrices 2×22 \times 2 , 3×33 \times 3 , et 4×44 \times 4 .

Les éléments diagonaux d’une matrice carrée sont ceux pour lesquels les indices de ligne et de colonne sont identiques. Par exemple, les éléments diagonaux de la matrice 3×33 \times 3 𝐌\mathbf{M} sont m11m_{11} , m22m_{22} , et m33m_{33} . Les autres éléments sont des éléments non-diagonaux. Les éléments diagonaux forment la diagonale de la matrice :

La diagonale d’une matrice 3×33 \times 3

image

Si tous les éléments non-diagonaux d’une matrice sont nuls, la matrice est dite diagonale. La matrice 4×44 \times 4 suivante est diagonale :

Une matrice diagonale 4×44 \times 4

[3000010000500002].\begin{bmatrix} 3 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & {- 5} & 0 \\ 0 & 0 & 0 & 2 \\ \end{bmatrix}.

Une matrice diagonale particulière est la matrice identité. La matrice identité de dimension nn , notée 𝐈n\mathbf{I}_{n} , est la matrice n×nn \times n avec des 1 sur la diagonale et des 0 ailleurs. Par exemple, la matrice identité 3×33 \times 3 est

La matrice identité 3D

𝐈3=[100010001].\mathbf{I}_{3} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}.

Souvent, le contexte rendra claire la dimension de la matrice identité utilisée dans une situation particulière. Dans ces cas, nous omettons l’indice et désignons simplement la matrice identité par 𝐈\mathbf{I} .

La matrice identité est spéciale car elle est l’élément neutre pour la multiplication matricielle. (Nous traitons de la multiplication matricielle dans la section 4.1.6.) L’idée de base est que si vous multipliez une matrice par la matrice identité, vous obtenez la matrice originale. En ce sens, la matrice identité est pour les matrices ce qu’est le nombre 1 pour les scalaires.

4.1.3Vecteurs en tant que matrices

Les matrices peuvent avoir n’importe quel nombre positif de lignes et de colonnes, y compris un. Nous avons déjà rencontré des matrices à une ligne ou une colonne : les vecteurs ! Un vecteur de dimension nn peut être vu soit comme une matrice 1×n1 \times n , soit comme une matrice n×1n \times 1 . Une matrice 1×n1 \times n est appelée vecteur ligne, et une matrice n×1n \times 1 est appelée vecteur colonne. Les vecteurs lignes sont écrits horizontalement, et les vecteurs colonnes sont écrits verticalement :

Vecteurs lignes et vecteurs colonnes

[123][456]\begin{bmatrix} 1 & 2 & 3 \\ \end{bmatrix}\begin{bmatrix} 4 \\ 5 \\ 6 \\ \end{bmatrix}

Jusqu’à présent, nous avons utilisé les notations ligne et colonne de manière interchangeable. En effet, géométriquement elles sont identiques, et dans de nombreux cas la distinction n’a pas d’importance. Cependant, pour des raisons qui deviendront bientôt apparentes, lorsque nous utilisons des vecteurs avec des matrices, il faut être très clair si notre vecteur est un vecteur ligne ou un vecteur colonne.

4.1.4Transposition matricielle

Étant donné une matrice r×cr \times c 𝐌\mathbf{M} , la transposée de 𝐌\mathbf{M} , notée 𝐌T\mathbf{M}^{T} , est la matrice c×rc \times r dont les colonnes sont formées des lignes de 𝐌\mathbf{M} . En d’autres termes, 𝐌Tij=𝐌ji{\mathbf{M}^{T}}_{ij} = \mathbf{M}_{ji} . Cela « retourne » la matrice diagonalement. Les équations (4.1) et (4.2) montrent deux exemples de transposition de matrices :

[123456789101112]T=[147102581136912],[abcdefghi]T=[adgbehcfi].\begin{matrix} \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ 10 & 11 & 12 \\ \end{bmatrix}^{T} & {= \begin{bmatrix} 1 & 4 & 7 & 10 \\ 2 & 5 & 8 & 11 \\ 3 & 6 & 9 & 12 \\ \end{bmatrix},} \\ \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \\ \end{bmatrix}^{T} & {= \begin{bmatrix} a & d & g \\ b & e & h \\ c & f & i \\ \end{bmatrix}.} \\ \end{matrix}

Transposition de matrices

Pour les vecteurs, la transposition convertit les vecteurs lignes en vecteurs colonnes et vice versa :

La transposition convertit entre vecteurs lignes et vecteurs colonnes

[xyz]T=[xyz][xyz]T=[xyz]\begin{matrix} \begin{bmatrix} x & y & z \\ \end{bmatrix}^{T} & {= \begin{bmatrix} x \\ y \\ z \\ \end{bmatrix}} & \begin{bmatrix} x \\ y \\ z \\ \end{bmatrix}^{T} & {= \begin{bmatrix} x & y & z \\ \end{bmatrix}} \\ \end{matrix}

La notation de transposition est souvent utilisée pour écrire des vecteurs colonnes en ligne dans un paragraphe, comme [1,2,3]T\lbrack 1,2,3\rbrack^{T} .

Faisons deux observations assez évidentes, mais significatives, concernant la transposition matricielle.

4.1.5Multiplication d’une matrice par un scalaire

Une matrice 𝐌\mathbf{M} peut être multipliée par un scalaire kk , donnant une matrice de même dimension que 𝐌\mathbf{M} . On note la multiplication matricielle par un scalaire en plaçant le scalaire et la matrice côte à côte, généralement avec le scalaire à gauche. Aucun symbole de multiplication n’est nécessaire. La multiplication s’effectue de façon directe : chaque élément de la matrice résultante k𝐌k\mathbf{M} est le produit de kk et de l’élément correspondant de 𝐌\mathbf{M} . Par exemple,

Multiplication d’une matrice 4×34 \times 3 par un scalaire

k𝐌=k[m11m12m13m21m22m23m31m32m33m41m42m43]=[km11km12km13km21km22km23km31km32km33km41km42km43].k\mathbf{M} = k\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ m_{41} & m_{42} & m_{43} \\ \end{bmatrix} = \begin{bmatrix} {km_{11}} & {km_{12}} & {km_{13}} \\ {km_{21}} & {km_{22}} & {km_{23}} \\ {km_{31}} & {km_{32}} & {km_{33}} \\ {km_{41}} & {km_{42}} & {km_{43}} \\ \end{bmatrix}.

4.1.6Multiplication de deux matrices

Dans certaines situations, nous pouvons calculer le produit de deux matrices. Les règles qui régissent quand la multiplication matricielle est autorisée et comment le résultat est calculé peuvent sembler étranges au premier abord.

Une matrice r×nr \times n 𝐀\mathbf{A} peut être multipliée par une matrice n×cn \times c 𝐁\mathbf{B} . Le résultat, noté 𝐀𝐁\mathbf{A}\mathbf{B} , est une matrice r×cr \times c . Par exemple, supposons que 𝐀\mathbf{A} soit une matrice 4×24 \times 2 , et 𝐁\mathbf{B} une matrice 2×52 \times 5 . Alors 𝐀𝐁\mathbf{A}\mathbf{B} est une matrice 4×54 \times 5 :

image

Si le nombre de colonnes de 𝐀\mathbf{A} ne correspond pas au nombre de lignes de 𝐁\mathbf{B} , alors la multiplication 𝐀𝐁\mathbf{A}\mathbf{B} n’est pas définie (bien que 𝐁𝐀\mathbf{B}\mathbf{A} puisse être possible).

La multiplication matricielle se calcule comme suit : soit la matrice 𝐂\mathbf{C} le produit r×cr \times c 𝐀𝐁\mathbf{A}\mathbf{B} de la matrice r×nr \times n 𝐀\mathbf{A} avec la matrice n×cn \times c 𝐁\mathbf{B} . Alors chaque élément cijc_{ij} est égal au produit scalaire du vecteur de la ligne ii de 𝐀\mathbf{A} avec la colonne jj de 𝐁\mathbf{B} :

cij=k=1naikbkj.c_{ij} = \sum\limits_{k = 1}^{n}a_{ik}b_{kj}.

Cela semble compliqué, mais il y a un schéma simple. Pour chaque élément cijc_{ij} du résultat, localisez la ligne ii dans 𝐀\mathbf{A} et la colonne jj dans 𝐁\mathbf{B} . Multipliez les éléments correspondants de la ligne et de la colonne, puis additionnez les produits. cijc_{ij} est égal à cette somme, ce qui équivaut au produit scalaire de la ligne ii de 𝐀\mathbf{A} avec la colonne jj de 𝐁\mathbf{B} .

Voyons un exemple de calcul de c24c_{24} . L’élément de la ligne 2 et de la colonne 4 de 𝐂\mathbf{C} est égal au produit scalaire de la ligne 2 de 𝐀\mathbf{A} avec la colonne 4 de 𝐁\mathbf{B} :

image

Une autre façon d’aider à mémoriser le schéma de la multiplication matricielle est d’écrire 𝐁\mathbf{B} au-dessus de 𝐂\mathbf{C} . Cela aligne la ligne appropriée de 𝐀\mathbf{A} avec une colonne de 𝐁\mathbf{B} pour chaque élément du résultat 𝐂\mathbf{C} :

image

Pour les applications géométriques, nous nous intéressons particulièrement à la multiplication de matrices carrées — les cas 2×22 \times 2 et 3×33 \times 3 étant particulièrement importants. L’équation (4.3) donne la formule complète pour la multiplication de matrices 2×22 \times 2 :

Multiplication de matrices 2×22 \times 2

𝐀𝐁=[a11a12a21a22][b11b12b21b22]=[a11b11+a12b21a11b12+a12b22a21b11+a22b21a21b12+a22b22].\begin{matrix} \begin{matrix} {\mathbf{A}\mathbf{B}} & {= \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \\ \end{bmatrix}\begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \\ \end{bmatrix}} \\ & {= \begin{bmatrix} {a_{11}b_{11} + a_{12}b_{21}} & {a_{11}b_{12} + a_{12}b_{22}} \\ {a_{21}b_{11} + a_{22}b_{21}} & {a_{21}b_{12} + a_{22}b_{22}} \\ \end{bmatrix}.} \\ \end{matrix} \\ \end{matrix}

Voyons un exemple de multiplication 2×22 \times 2 avec des nombres réels :

𝐀=[3051/2],𝐁=[7246],𝐀𝐁=[3051/2][7246]=[(3)(7)+(0)(4)(3)(2)+(0)(6)(5)(7)+(1/2)(4)(5)(2)+(1/2)(6)]=[2163313].\begin{matrix} \mathbf{A} & {= \begin{bmatrix} {- 3} & 0 \\ 5 & {1/2} \\ \end{bmatrix},\quad\mathbf{B} = \begin{bmatrix} {- 7} & 2 \\ 4 & 6 \\ \end{bmatrix},} \\ {\mathbf{A}\mathbf{B}} & {= \begin{bmatrix} {- 3} & 0 \\ 5 & {1/2} \\ \end{bmatrix}\begin{bmatrix} {- 7} & 2 \\ 4 & 6 \\ \end{bmatrix}} \\ & {= \begin{bmatrix} {( - 3)( - 7) + (0)(4)} & {( - 3)(2) + (0)(6)} \\ {(5)( - 7) + (1/2)(4)} & {(5)(2) + (1/2)(6)} \\ \end{bmatrix} = \begin{bmatrix} 21 & {- 6} \\ {- 33} & 13 \\ \end{bmatrix}.} \\ \end{matrix}

L’application de la formule générale de multiplication matricielle au cas 3×33 \times 3 donne

Multiplication de matrices 3×33 \times 3

𝐀𝐁=[a11a12a13a21a22a23a31a32a33][b11b12b13b21b22b23b31b32b33]=[a11b11+a12b21+a13b31a11b12+a12b22+a13b32a11b13+a12b23+a13b33a21b11+a22b21+a23b31a21b12+a22b22+a23b32a21b13+a22b23+a23b33a31b11+a32b21+a33b31a31b12+a32b22+a33b32a31b13+a32b23+a33b33].\begin{matrix} {\mathbf{A}\mathbf{B}} & {= \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \\ \end{bmatrix}\begin{bmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23} \\ b_{31} & b_{32} & b_{33} \\ \end{bmatrix}} \\ & {= {\begin{bmatrix} {a_{11}b_{11}{\, + \,}a_{12}b_{21}{\, + \,}a_{13}b_{31}} & {a_{11}b_{12}{\, + \,}a_{12}b_{22}{\, + \,}a_{13}b_{32}} & {a_{11}b_{13}{\, + \,}a_{12}b_{23}{\, + \,}a_{13}b_{33}} \\ {a_{21}b_{11}{\, + \,}a_{22}b_{21}{\, + \,}a_{23}b_{31}} & {a_{21}b_{12}{\, + \,}a_{22}b_{22}{\, + \,}a_{23}b_{32}} & {a_{21}b_{13}{\, + \,}a_{22}b_{23}{\, + \,}a_{23}b_{33}} \\ {a_{31}b_{11}{\, + \,}a_{32}b_{21}{\, + \,}a_{33}b_{31}} & {a_{31}b_{12}{\, + \,}a_{32}b_{22}{\, + \,}a_{33}b_{32}} & {a_{31}b_{13}{\, + \,}a_{32}b_{23}{\, + \,}a_{33}b_{33}} \\ \end{bmatrix}.}} \\ \end{matrix}

Voici un exemple 3×33 \times 3 avec des nombres réels :

𝐀=[153026724],𝐁=[861703245];𝐀𝐁=[153026724][861703245]=[1(8)+(5)7+3216+(5)0+3411+(5)(3)+350(8)+(2)7+6206+(2)0+6401+(2)(3)+657(8)+27+(4)276+20+(4)471+2(3)+(4)5]=[37183122436502619].\begin{matrix} \mathbf{A} & {= \begin{bmatrix} 1 & {- 5} & 3 \\ 0 & {- 2} & 6 \\ 7 & 2 & {- 4} \\ \end{bmatrix},\quad\mathbf{B} = \begin{bmatrix} {- 8} & 6 & 1 \\ 7 & 0 & {- 3} \\ 2 & 4 & 5 \\ \end{bmatrix};} \\ {\mathbf{A}\mathbf{B}} & {= \begin{bmatrix} 1 & {- 5} & 3 \\ 0 & {- 2} & 6 \\ 7 & 2 & {- 4} \\ \end{bmatrix}\begin{bmatrix} {- 8} & 6 & 1 \\ 7 & 0 & {- 3} \\ 2 & 4 & 5 \\ \end{bmatrix}} \\ & {= \begin{bmatrix} {1\! \cdot \!( - 8) + ( - 5)\! \cdot \! 7{\, + \,}3\! \cdot \! 2} & {1\! \cdot \! 6 + ( - 5)\! \cdot \! 0{\, + \,}3\! \cdot \! 4} & {1\! \cdot \! 1{\, + \,}( - 5)\! \cdot \!( - 3){\, + \,}3\! \cdot \! 5} \\ {0\! \cdot \!( - 8) + ( - 2)\! \cdot \! 7{\, + \,}6\! \cdot \! 2} & {0\! \cdot \! 6 + ( - 2)\! \cdot \! 0{\, + \,}6\! \cdot \! 4} & {0\! \cdot \! 1{\, + \,}( - 2)\! \cdot \!( - 3){\, + \,}6\! \cdot \! 5} \\ {7\! \cdot \!( - 8) + 2\! \cdot \! 7{\, + \,}( - 4)\! \cdot \! 2} & {7\! \cdot \! 6 + 2\! \cdot \! 0{\, + \,}( - 4)\! \cdot \! 4} & {7\! \cdot \! 1{\, + \,}2\! \cdot \!( - 3){\, + \,}( - 4)\! \cdot \! 5} \\ \end{bmatrix}} \\ & {= \begin{bmatrix} {- 37} & 18 & 31 \\ {- 2} & 24 & 36 \\ {- 50} & 26 & {- 19} \\ \end{bmatrix}.} \\ \end{matrix}

À partir de la section 6.4 nous utilisons également des matrices 4×44 \times 4 .

Voici quelques remarques intéressantes concernant la multiplication matricielle :

4.1.7Multiplication d’un vecteur et d’une matrice

Puisqu’un vecteur peut être considéré comme une matrice à une ligne ou une colonne, nous pouvons multiplier un vecteur et une matrice en appliquant les règles discutées dans la section précédente. Il devient alors très important de savoir si nous utilisons des vecteurs lignes ou des vecteurs colonnes. Les équations (4.4)(4.7) montrent comment les vecteurs lignes et colonnes 3D peuvent être pré- ou post-multipliés par une matrice 3×33 \times 3 :

Multiplication de vecteurs lignes et colonnes 3D avec une matrice 3×33 \times 3

[xyz][m11m12m13m21m22m23m31m32m33]=[xm11+ym21+zm31xm12+ym22+zm32xm13+ym23+zm33];[m11m12m13m21m22m23m31m32m33][xyz]=[xm11+ym12+zm13xm21+ym22+zm23xm31+ym32+zm33];[m11m12m13m21m22m23m31m32m33][xyz]=(non défini);[xyz][m11m12m13m21m22m23m31m32m33]=(non défini).\begin{matrix} {\begin{bmatrix} x & y & z \\ \end{bmatrix}\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}} & {=} \\ {\!\begin{bmatrix} {xm_{11}{\, + \,}ym_{21}{\, + \,}zm_{31}} & {xm_{12}{\, + \,}ym_{22}{\, + \,}zm_{32}} & {xm_{13}{\, + \,}ym_{23}{\, + \,}zm_{33}} \\ \end{bmatrix};} & \\ & \\ {\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}\begin{bmatrix} x \\ y \\ z \\ \end{bmatrix}} & {= \begin{bmatrix} {xm_{11} + ym_{12} + zm_{13}} \\ {xm_{21} + ym_{22} + zm_{23}} \\ {xm_{31} + ym_{32} + zm_{33}} \\ \end{bmatrix};} \\ {\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}\begin{bmatrix} x & y & z \\ \end{bmatrix}} & {= \text{(non défini)};} \\ {\begin{bmatrix} x \\ y \\ z \\ \end{bmatrix}\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}} & {= \text{(non défini)}.} \\ \end{matrix}

Comme on peut le voir, lorsqu’on multiplie un vecteur ligne à gauche par une matrice à droite, comme dans l’équation (4.4), le résultat est un vecteur ligne. Lorsqu’on multiplie une matrice à gauche par un vecteur colonne à droite, comme dans l’équation (4.5), le résultat est un vecteur colonne. (Notez que ce résultat est bien un vecteur colonne, même s’il ressemble à une matrice.) Les deux autres combinaisons ne sont pas permises : on ne peut pas multiplier une matrice à gauche par un vecteur ligne à droite, ni un vecteur colonne à gauche par une matrice à droite.

Faisons quelques observations intéressantes concernant la multiplication vecteur-fois-matrice. Premièrement, chaque élément du vecteur résultant est le produit scalaire du vecteur original avec une seule ligne ou colonne de la matrice.

Deuxièmement, chaque élément de la matrice détermine quelle « pondération » un élément particulier du vecteur d’entrée apporte à un élément du vecteur de sortie. Par exemple, dans l’équation (4.4) avec des vecteurs lignes, m12m_{12} contrôle quelle part de la valeur xx d’entrée contribue à la valeur yy de sortie.

Troisièmement, la multiplication vecteur-fois-matrice est distributive par rapport à l’addition de vecteurs, c’est-à-dire que pour les vecteurs 𝐯\mathbf{v} , 𝐰\mathbf{w} , et la matrice 𝐌\mathbf{M} ,

(𝐯+𝐰)𝐌=𝐯𝐌+𝐰𝐌.(\mathbf{v} + \mathbf{w})\mathbf{M} = \mathbf{v}\mathbf{M} + \mathbf{w}\mathbf{M}.

Enfin, et peut-être le plus important de tout, le résultat de la multiplication est une combinaison linéaire des lignes ou colonnes de la matrice. Par exemple, dans l’équation (4.5), avec des vecteurs colonnes, le vecteur colonne résultant peut être interprété comme une combinaison linéaire des colonnes de la matrice, où les coefficients proviennent du vecteur opérande. C’est un fait clé, non seulement pour nos besoins mais aussi pour l’algèbre linéaire en général, gardez-le à l’esprit. Nous y reviendrons sous peu.

4.1.8Vecteurs lignes versus vecteurs colonnes

Cette section explique pourquoi la distinction entre vecteurs lignes et vecteurs colonnes est importante et donne notre justification pour préférer les vecteurs lignes. Dans l’équation (4.4), lorsqu’on multiplie un vecteur ligne à gauche avec une matrice à droite, on obtient le vecteur ligne

[xm11+ym21+zm31xm12+ym22+zm32xm13+ym23+zm33].\begin{bmatrix} {xm_{11} + ym_{21} + zm_{31}} & {xm_{12} + ym_{22} + zm_{32}} & {xm_{13} + ym_{23} + zm_{33}} \\ \end{bmatrix}.

Comparons cela avec le résultat de l’équation (4.5), lorsqu’un vecteur colonne à droite est multiplié par une matrice à gauche :

[xm11+ym12+zm13xm21+ym22+zm23xm31+ym32+zm33].\begin{bmatrix} {xm_{11} + ym_{12} + zm_{13}} \\ {xm_{21} + ym_{22} + zm_{23}} \\ {xm_{31} + ym_{32} + zm_{33}} \\ \end{bmatrix}.

Sans tenir compte du fait que l’un est un vecteur ligne et l’autre un vecteur colonne, les valeurs des composantes du vecteur ne sont pas les mêmes ! C’est pourquoi la distinction entre vecteurs lignes et vecteurs colonnes est si importante.

Bien que certaines matrices en programmation de jeux vidéo représentent des systèmes d’équations arbitraires, une grande majorité sont des matrices de transformation du type que nous avons décrit, qui expriment des relations entre des espaces de coordonnées. À cette fin, nous trouvons que les vecteurs lignes sont préférables pour la raison « éminemment sensée » [1] que l’ordre des transformations se lit comme une phrase de gauche à droite. Cela est particulièrement important lorsque plusieurs transformations ont lieu. Par exemple, si nous souhaitons transformer un vecteur 𝐯\mathbf{v} par les matrices 𝐀\mathbf{A} , 𝐁\mathbf{B} , et 𝐂\mathbf{C} , dans cet ordre, nous écrivons 𝐯𝐀𝐁𝐂\mathbf{v}\mathbf{A}\mathbf{B}\mathbf{C} , avec les matrices listées dans l’ordre de transformation de gauche à droite. Si des vecteurs colonnes sont utilisés, alors le vecteur est à droite, et les transformations se font dans l’ordre de droite à gauche. Dans ce cas, on écrirait 𝐂𝐁𝐀𝐯\mathbf{C}\mathbf{B}\mathbf{A}\mathbf{v} . Nous discutons de la concaténation de plusieurs matrices de transformation en détail dans la section 5.6.

Malheureusement, les vecteurs lignes conduisent à des équations très « larges » ; utiliser des vecteurs colonnes à droite rend les choses plus élégantes, surtout quand la dimension augmente. (Comparez la maladresse de l’équation (4.4) avec l’élégance de l’équation (4.5).) C’est peut-être pour cela que les vecteurs colonnes sont le standard quasi universel dans pratiquement toutes les autres disciplines. Pour la plupart de la programmation de jeux vidéo, cependant, un code lisible est plus important que des équations lisibles. Pour cette raison, dans ce livre nous utilisons des vecteurs lignes dans presque tous les cas où la distinction est pertinente. Notre utilisation limitée des vecteurs colonnes est à des fins esthétiques, lorsqu’il n’y a pas de matrices impliquées ou que ces matrices ne sont pas des matrices de transformation et que l’ordre de lecture gauche-droite n’est pas utile.

Comme on pouvait s’y attendre, différents auteurs utilisent des conventions différentes. De nombreux livres de graphisme et interfaces de programmation d’applications (API), comme DirectX, utilisent des vecteurs lignes. Mais d’autres API, comme OpenGL et les portages personnalisés d’OpenGL sur diverses consoles, utilisent des vecteurs colonnes. Et, comme nous l’avons dit, presque toutes les autres sciences qui utilisent l’algèbre linéaire préfèrent les vecteurs colonnes. Soyez donc très prudent lorsque vous utilisez les équations ou le code source de quelqu’un d’autre : sachez si cela suppose des vecteurs lignes ou des vecteurs colonnes.

Si un livre utilise des vecteurs colonnes, ses équations pour les matrices seront transposées par rapport aux équations que nous présentons dans ce livre. De plus, avec des vecteurs colonnes, les vecteurs sont pré-multipliés par une matrice, par opposition à la convention choisie dans ce livre qui consiste à multiplier les vecteurs lignes par une matrice à droite. Cela inverse l’ordre de multiplication entre les deux styles lorsque plusieurs matrices et vecteurs sont multipliés ensemble. Par exemple, la multiplication 𝐯𝐀𝐁𝐂\mathbf{v}\mathbf{A}\mathbf{B}\mathbf{C} n’est valide qu’avec des vecteurs lignes. La multiplication correspondante s’écrirait 𝐂𝐁𝐀𝐯\mathbf{C}\mathbf{B}\mathbf{A}\mathbf{v} avec des vecteurs colonnes. (Notez à nouveau que dans ce cas 𝐀\mathbf{A} , 𝐁\mathbf{B} , et 𝐂\mathbf{C} seraient transposées par rapport à ces matrices dans le cas des vecteurs lignes.)

Les erreurs de ce type impliquant la transposition peuvent être une source courante de frustration lors de la programmation de mathématiques 3D. Heureusement, avec des classes C++ bien conçues, l’accès direct aux éléments individuels de la matrice est rarement nécessaire, et ces types d’erreurs peuvent être minimisés.

4.2Interprétation géométrique d’une matrice

En général, une matrice carrée peut décrire n’importe quelle transformation linéaire. Dans la section 5.7.1, nous donnons une définition complète de la transformation linéaire, mais pour l’instant il suffit de dire qu’une transformation linéaire préserve les droites et les parallèles, et qu’il n’y a pas de translation — c’est-à-dire que l’origine ne bouge pas. Cependant, d’autres propriétés de la géométrie, telles que les longueurs, les angles, les aires et les volumes, peuvent être modifiées par la transformation. En termes non techniques, une transformation linéaire peut « étirer » l’espace de coordonnées, mais elle ne le « courbe » ni ne le « déforme » pas. C’est un ensemble de transformations très utile, comprenant

Le chapitre 5 dérive les matrices qui effectuent toutes ces opérations. Pour l’instant, cependant, essayons simplement de comprendre de façon générale la relation entre une matrice et la transformation qu’elle représente.

La citation au début de ce chapitre n’est pas seulement une réplique d’un grand film, elle est vraie aussi pour les matrices d’algèbre linéaire. Tant que vous n’aurez pas développé la capacité de visualiser une matrice, ce ne sera que neuf nombres dans une boîte. Nous avons affirmé qu’une matrice représente une transformation d’espace de coordonnées. Ainsi, lorsque nous visualisons la matrice, nous visualisons la transformation, le nouvel espace de coordonnées. Mais à quoi ressemble cette transformation ? Quel est le lien entre une transformation 3D particulière (c’est-à-dire une rotation, un cisaillement, etc.) et ces neuf nombres à l’intérieur d’une matrice 3×33 \times 3 ? Comment peut-on construire une matrice pour effectuer une transformation donnée (autrement qu’en copiant aveuglément les équations d’un livre) ?

Pour commencer à répondre à cette question, observons ce qui se passe lorsque les vecteurs de base standard 𝐢=[1,0,0]\mathbf{i} = \lbrack 1,0,0\rbrack , 𝐣=[0,1,0]\mathbf{j} = \lbrack 0,1,0\rbrack , et 𝐤=[0,0,1]\mathbf{k} = \lbrack 0,0,1\rbrack sont multipliés par une matrice arbitraire 𝐌\mathbf{M} :

𝐢𝐌=[100][m11m12m13m21m22m23m31m32m33]=[m11m12m13];𝐣𝐌=[010][m11m12m13m21m22m23m31m32m33]=[m21m22m23];𝐤𝐌=[001][m11m12m13m21m22m23m31m32m33]=[m31m32m33].\begin{matrix} {\mathbf{i}\mathbf{M} = \begin{bmatrix} 1 & 0 & 0 \\ \end{bmatrix}\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}} & {= \begin{bmatrix} m_{11} & m_{12} & m_{13} \\ \end{bmatrix};} \\ {\mathbf{j}\mathbf{M} = \begin{bmatrix} 0 & 1 & 0 \\ \end{bmatrix}\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}} & {= \begin{bmatrix} m_{21} & m_{22} & m_{23} \\ \end{bmatrix};} \\ {\mathbf{k}\mathbf{M} = \begin{bmatrix} 0 & 0 & 1 \\ \end{bmatrix}\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}} & {= \begin{bmatrix} m_{31} & m_{32} & m_{33} \\ \end{bmatrix}.} \\ \end{matrix}

En d’autres termes, la première ligne de 𝐌\mathbf{M} contient le résultat de l’application de la transformation à 𝐢\mathbf{i} , la deuxième ligne est le résultat de la transformation de 𝐣\mathbf{j} , et la dernière ligne est le résultat de la transformation de 𝐤\mathbf{k} .

Une fois que nous savons ce qui arrive à ces vecteurs de base, nous savons tout sur la transformation ! En effet, n’importe quel vecteur peut s’écrire comme une combinaison linéaire de la base standard :

𝐯=vx𝐢+vy𝐣+vz𝐤.\mathbf{v} = v_{x}\mathbf{i} + v_{y}\mathbf{j} + v_{z}\mathbf{k}.

En multipliant cette expression par notre matrice à droite, nous obtenons

𝐯𝐌=(vx𝐢+vy𝐣+vz𝐤)𝐌=(vx𝐢)𝐌+(vy𝐣)𝐌+(vz𝐤)𝐌=vx(𝐢𝐌)+vy(𝐣𝐌)+vz(𝐤𝐌)=vx[m11m12m13]+vy[m21m22m23]+vz[m31m32m33].\begin{matrix} {\mathbf{v}\mathbf{M}} & {= (v_{x}\mathbf{i} + v_{y}\mathbf{j} + v_{z}\mathbf{k})\mathbf{M}} \\ & {= (v_{x}\mathbf{i})\mathbf{M} + (v_{y}\mathbf{j})\mathbf{M} + (v_{z}\mathbf{k})\mathbf{M}} \\ & {= v_{x}(\mathbf{i}\mathbf{M}) + v_{y}(\mathbf{j}\mathbf{M}) + v_{z}(\mathbf{k}\mathbf{M})} \\ & {= v_{x}\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ \end{bmatrix} + v_{y}\begin{bmatrix} m_{21} & m_{22} & m_{23} \\ \end{bmatrix} + v_{z}\begin{bmatrix} m_{31} & m_{32} & m_{33} \\ \end{bmatrix}.} \\ \end{matrix}

Nous venons de confirmer une observation faite dans la section 4.1.7 : le résultat d’une multiplication vecteur ×\times matrice est une combinaison linéaire des lignes de la matrice. L’essentiel est d’interpréter ces vecteurs lignes comme des vecteurs de base. Dans cette interprétation, la multiplication matricielle est simplement une façon compacte d’encoder les opérations de transformation d’espace de coordonnées développées dans la section 3.3.3. Un léger changement de notation rendra cette connexion plus explicite. Rappelons que nous avons introduit la convention d’utiliser les symboles 𝐩\mathbf{p} , 𝐪\mathbf{q} , et 𝐫\mathbf{r} pour désigner un ensemble de vecteurs de base. En plaçant ces vecteurs comme lignes dans notre matrice 𝐌\mathbf{M} , nous pouvons réécrire la dernière ligne de l’équation (4.8) comme

𝐯𝐌=[vxvyvz][𝐩𝐪𝐫]=vx𝐩+vy𝐪+vz𝐫.\mathbf{v}\mathbf{M} = \begin{bmatrix} v_{x} & v_{y} & v_{z} \\ \end{bmatrix}\begin{bmatrix} {- \mathbf{p} -} \\ {- \mathbf{q} -} \\ {- \mathbf{r} -} \\ \end{bmatrix} = v_{x}\mathbf{p} + v_{y}\mathbf{q} + v_{z}\mathbf{r}.

Résumons ce que nous venons de dire.

En comprenant comment la matrice transforme les vecteurs de base standard, nous savons tout ce qu’il y a à savoir sur la transformation. Puisque les résultats de la transformation des vecteurs de base standard sont simplement les lignes1 de la matrice, nous interprétons ces lignes comme les vecteurs de base d’un espace de coordonnées.

Nous disposons maintenant d’un moyen simple de prendre une matrice arbitraire et de visualiser le type de transformation qu’elle représente. Examinons quelques exemples — d’abord un exemple 2D pour nous échauffer, puis un exemple 3D complet. Examinez la matrice 2×22 \times 2 suivante :

𝐌=[2112].\mathbf{M} = \begin{bmatrix} 2 & 1 \\ {- 1} & 2 \\ \end{bmatrix}.

Quel type de transformation cette matrice représente-t-elle ? D’abord, extrayons les vecteurs de base 𝐩\mathbf{p} et 𝐪\mathbf{q} des lignes de la matrice :

𝐩=[21];𝐪=[12].\begin{matrix} \mathbf{p} & {= \begin{bmatrix} 2 & 1 \\ \end{bmatrix};} \\ \mathbf{q} & {= \begin{bmatrix} {- 1} & 2 \\ \end{bmatrix}.} \\ \end{matrix}

La figure 4.1 montre ces vecteurs dans le plan cartésien, ainsi que les vecteurs de base « originaux » (l’axe xx et l’axe yy ), pour référence.

image

Figure 4.1 Visualisation des vecteurs lignes d’une matrice de transformation 2D

Comme l’illustre la figure 4.1, le vecteur de base +x+ x est transformé en le vecteur étiqueté 𝐩\mathbf{p} ci-dessus, et le vecteur de base yy est transformé en le vecteur étiqueté 𝐪\mathbf{q} . Ainsi, une façon de visualiser une matrice en 2D est de visualiser la forme en L formée par les vecteurs lignes. Dans cet exemple, on peut facilement voir qu’une partie de la transformation représentée par la matrice 𝐌\mathbf{M} est une rotation dans le sens antihoraire d’environ 26,5o26{,}5^{o} .

Bien sûr, tous les vecteurs sont affectés par une transformation linéaire, pas seulement les vecteurs de base. Nous pouvons avoir une très bonne idée de ce à quoi ressemble cette transformation à partir du L, et nous pouvons mieux comprendre l’effet de la transformation sur le reste des vecteurs en complétant le parallélogramme 2D formé par les vecteurs de base, comme le montre la figure 4.2.

image

Figure 4.2 Le parallélogramme 2D formé par les lignes d’une matrice

Ce parallélogramme est aussi connu sous le nom de « boîte oblique ». Dessiner un objet à l’intérieur de la boîte peut également aider, comme illustré dans la figure 4.3.

image image

Figure 4.3Dessiner un objet à l’intérieur de la boîte aide à visualiser la transformation

Il est maintenant clair que notre exemple de matrice 𝐌\mathbf{M} non seulement fait tourner l’espace de coordonnées, mais aussi le met à l’échelle.

Nous pouvons étendre les techniques utilisées pour visualiser les transformations 2D en 3D. En 2D, nous avions deux vecteurs de base qui formaient un L — en 3D, nous avons trois vecteurs de base, et ils forment un « trépied ». D’abord, montrons un objet avant transformation. La figure 4.4 montre une théière, un cube unitaire et les vecteurs de base dans la position « identité ».

image

Figure 4.4 Théière, cube unitaire et vecteurs de base avant transformation

(Pour ne pas encombrer le diagramme, nous n’avons pas étiqueté le vecteur de base +z+ z [0,0,1]\lbrack 0,0,1\rbrack , qui est partiellement masqué par la théière et le cube.)

Considérons maintenant la matrice de transformation 3D

[0.7070.70701.2501.2500001].\begin{bmatrix} 0.707 & {- 0.707} & 0 \\ 1.250 & 1.250 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}.

En extrayant les vecteurs de base des lignes de la matrice, nous pouvons visualiser la transformation représentée par cette matrice. Les vecteurs de base, le cube et la théière transformés sont montrés dans la figure 4.5.

image

Figure 4.5 Théière, cube unitaire et vecteurs de base après transformation

Comme on peut le voir, la transformation consiste en une rotation de 45o45^{o} dans le sens horaire autour de l’axe zz ainsi qu’une mise à l’échelle non uniforme qui rend la théière « plus grande » qu’à l’origine. Notez que le vecteur de base +z+ z n’est pas modifié par la transformation, car la troisième ligne de la matrice est [0,0,1]\lbrack 0,0,1\rbrack .

En interprétant les lignes d’une matrice comme des vecteurs de base, nous disposons d’un outil pour déconstruire une matrice. Mais nous avons aussi un outil pour en construire une ! Étant donné une transformation souhaitée (c’est-à-dire une rotation, une mise à l’échelle, etc.), nous pouvons dériver une matrice qui représente cette transformation. Il suffit de déterminer ce que la transformation fait aux vecteurs de base, puis de placer ces vecteurs de base transformés dans les lignes d’une matrice. Nous utilisons cet outil à plusieurs reprises dans le chapitre 5 pour dériver les matrices réalisant les transformations linéaires de base telles que la rotation, la mise à l’échelle, le cisaillement et la réflexion.

L’essentiel concernant les matrices de transformation est le suivant : les matrices n’ont rien de particulièrement magique. Une fois que nous comprenons que les coordonnées sont mieux appréhendées comme des coefficients dans une combinaison linéaire des vecteurs de base (voir la section 3.3.3), nous connaissons vraiment toutes les mathématiques nécessaires pour effectuer des transformations. D’un certain point de vue, les matrices ne sont donc qu’une façon compacte de noter les choses. Une raison légèrement moins évidente, mais bien plus convaincante, d’exprimer les transformations en notation matricielle est de tirer parti du vaste ensemble d’outils généraux de l’algèbre linéaire. Par exemple, nous pouvons prendre des transformations simples et en dériver de plus complexes par concaténation matricielle ; nous en parlerons davantage dans la section 5.6.

Avant de continuer, résumons les concepts clés de la section 4.2.

4.3Vue d’ensemble de l’algèbre linéaire

Au début du chapitre 2, nous vous avions prévenu que dans ce livre nous nous concentrons sur un seul petit coin du domaine de l’algèbre linéaire — les applications géométriques des vecteurs et des matrices. Maintenant que nous avons présenté les bases, nous aimerions dire quelque chose sur la vue d’ensemble et sur la façon dont notre partie s’y inscrit.

L’algèbre linéaire a été inventée pour manipuler et résoudre des systèmes d’équations linéaires. Par exemple, un problème d’introduction typique dans un cours traditionnel d’algèbre linéaire consiste à résoudre un système d’équations tel que

5x1+x2+x3=10,2x1+2x2+4x3=12,x13x3=9,\begin{matrix} {- 5x_{1} + x_{2} + x_{3}} & {= - 10,} \\ {2x_{1} + 2x_{2} + 4x_{3}} & {= 12,} \\ {x_{1} - 3x_{3}} & {= 9,} \\ \end{matrix}

qui a pour solution

x1=3,x2=7,x3=2.\begin{matrix} x_{1} & {= 3,} \\ x_{2} & {= 7,} \\ x_{3} & {= - 2.} \\ \end{matrix}

La notation matricielle a été inventée pour éviter la fastidieuse répétition de chaque xx et de chaque == . Par exemple, le système ci-dessus peut s’écrire plus rapidement comme

[511224103][x1x2x3]=[10129].\begin{bmatrix} {- 5} & 1 & 1 \\ 2 & 2 & 4 \\ 1 & 0 & {- 3} \\ \end{bmatrix}\begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \\ \end{bmatrix} = \begin{bmatrix} {- 10} \\ 12 \\ 9 \\ \end{bmatrix}.

L’endroit le plus direct et évident dans un jeu vidéo où un grand système d’équations doit être résolu se trouve dans le moteur physique. Les contraintes pour éviter la pénétration et satisfaire les articulations demandées par l’utilisateur deviennent un système d’équations reliant les vitesses des corps dynamiques. Ce grand système3 est ensuite résolu à chaque pas de simulation. Un autre endroit courant où apparaissent les méthodes traditionnelles d’algèbre linéaire est dans l’approximation aux moindres carrés et d’autres applications d’ajustement de données.

Les systèmes d’équations peuvent apparaître là où on ne s’y attend pas. En effet, l’algèbre linéaire a explosé en importance avec l’immense augmentation de la puissance de calcul au cours de la dernière demi-siècle, car de nombreux problèmes difficiles qui n’étaient auparavant ni discrets ni linéaires sont approximés par des méthodes qui le sont, comme la méthode des éléments finis. Le défi commence par savoir comment transformer le problème original en un problème matriciel, mais les systèmes résultants sont souvent très grands et peuvent être difficiles à résoudre rapidement et avec précision. La stabilité numérique devient un facteur dans le choix des algorithmes. Les matrices qui apparaissent en pratique ne sont pas des boîtes remplies de nombres aléatoires ; elles expriment au contraire des relations organisées et ont beaucoup de structure. Exploiter cette structure de façon habile est la clé pour obtenir rapidité et précision. La diversité des types de structure qui apparaissent dans les applications explique pourquoi il y a tant à connaître sur l’algèbre linéaire, en particulier l’algèbre linéaire numérique.

Ce livre vise à combler un vide en fournissant l’intuition géométrique qui est le pain quotidien de la programmation de jeux vidéo, mais qui est absente de la plupart des manuels d’algèbre linéaire. Nous savons cependant qu’il existe un monde plus vaste pour vous. Bien que l’algèbre linéaire traditionnelle et les systèmes d’équations ne jouent pas un rôle de premier plan dans la programmation de jeux vidéo basique, ils sont essentiels dans de nombreux domaines avancés. Considérez certaines des technologies qui font parler d’elles aujourd’hui : les simulations de fluides, de tissus et de cheveux (et leur rendu) ; des animations procédurales plus robustes de personnages ; l’illumination globale en temps réel ; la vision par machine ; la reconnaissance de gestes ; et bien d’autres encore. Ce que ces technologies apparemment diverses ont en commun, c’est qu’elles impliquent toutes des problèmes d’algèbre linéaire difficiles.

Une excellente ressource pour apprendre la vue d’ensemble de l’algèbre linéaire et du calcul scientifique est la série de cours du professeur Gilbert Strang, téléchargeable gratuitement depuis MIT OpenCourseWare à ocw.mit.edu. Il propose un cours d’algèbre linéaire de premier cycle ainsi que des cours de master en science et ingénierie du calcul. Les manuels qu’il rédige pour ses cours [3][2] sont des livres agréables destinés aux ingénieurs (plutôt qu’aux puristes des mathématiques) et sont recommandés, mais sachez que son style d’écriture est une sorte de raccourci qui peut être difficile à comprendre sans les cours.

Exercices

Utilisez les matrices suivantes pour les questions 1 à 3 :
𝐀=[134812063151025]𝐁=[kx000ky000kz]𝐂=[15873]𝐃=[agbhcidjfk]𝐄=[013]𝐅=[xyzw]𝐆=[1020301]𝐇=[αβγ]\begin{matrix} {\mathbf{A} = \begin{bmatrix} 13 & 4 & {- 8} \\ 12 & 0 & 6 \\ {- 3} & {- 1} & 5 \\ 10 & {- 2} & 5 \\ \end{bmatrix}} & {\mathbf{B} = \begin{bmatrix} k_{x} & 0 & 0 \\ 0 & k_{y} & 0 \\ 0 & 0 & k_{z} \\ \end{bmatrix}} & {\mathbf{C} = \begin{bmatrix} 15 & 8 \\ {- 7} & 3 \\ \end{bmatrix}} \\ {\mathbf{D} = \begin{bmatrix} a & g \\ b & h \\ c & i \\ d & j \\ f & k \\ \end{bmatrix}} & {\mathbf{E} = \begin{bmatrix} 0 & 1 & 3 \\ \end{bmatrix}} & {\mathbf{F} = \begin{bmatrix} x \\ y \\ z \\ w \\ \end{bmatrix}} \\ {\mathbf{G} = \begin{bmatrix} 10 & 20 & 30 & 1 \\ \end{bmatrix}} & {\mathbf{H} = \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}} & \\ \end{matrix}

  1. Pour chaque matrice, donnez les dimensions et indiquez si elle est carrée et/ou diagonale.

  2. Transposez chaque matrice.

  3. Trouvez toutes les paires de matrices qui peuvent être légalement multipliées, et donnez les dimensions du produit résultant. Incluez les « paires » dans lesquelles une matrice est multipliée par elle-même. (Indice : il y a 14 paires.)

  4. Calculez les produits matriciels suivants. Si le produit n’est pas possible, dites-le simplement.

    • (a) [1250][3741/3]\begin{bmatrix} 1 & {- 2} \\ 5 & 0 \\ \end{bmatrix}\begin{bmatrix} {- 3} & 7 \\ 4 & {1/3} \\ \end{bmatrix}

    • (b) [6745][33]\begin{bmatrix} 6 & {- 7} \\ {- 4} & 5 \\ \end{bmatrix}\begin{bmatrix} 3 & 3 \\ \end{bmatrix}

    • (c) [314][203576142]\begin{bmatrix} 3 & {- 1} & 4 \\ \end{bmatrix}\begin{bmatrix} {- 2} & 0 & 3 \\ 5 & 7 & {- 6} \\ 1 & {- 4} & 2 \\ \end{bmatrix}

    • (d) [xyzw][1000010000100001]\begin{bmatrix} x & y & z & w \\ \end{bmatrix}\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}

    • (e) [7273][51]\begin{bmatrix} 7 & {- 2} & 7 & 3 \\ \end{bmatrix}\begin{bmatrix} {- 5} \\ 1 \\ \end{bmatrix}

    • (f) [1001][m11m12m21m22]\begin{bmatrix} 1 & 0 \\ 0 & 1 \\ \end{bmatrix}\begin{bmatrix} m_{11} & m_{12} \\ m_{21} & m_{22} \\ \end{bmatrix}

    • (g) [33][6745]\begin{bmatrix} 3 & 3 \\ \end{bmatrix}\begin{bmatrix} 6 & {- 7} \\ {- 4} & 5 \\ \end{bmatrix}

    • (h) [a11a12a13a21a22a23a31a32a33][b11b12b13b21b22b23]\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \\ \end{bmatrix}\begin{bmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23} \\ \end{bmatrix}

  5. Pour chacune des matrices suivantes, multipliez à gauche par le vecteur ligne [5,1,2]\lbrack 5, - 1,2\rbrack . Réfléchissez ensuite à si la multiplication à droite par le vecteur colonne [5,1,2]T\lbrack 5, - 1,2\rbrack^{T} donnera le même résultat ou un résultat différent. Effectuez enfin cette multiplication pour confirmer ou corriger votre attente.

    1. (a) [100010001]\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}

    2. (b) [253171214]\begin{bmatrix} 2 & 5 & {- 3} \\ 1 & 7 & 1 \\ {- 2} & {- 1} & 4 \\ \end{bmatrix}

    3. (c) [172703231]\begin{bmatrix} 1 & 7 & 2 \\ 7 & 0 & {- 3} \\ 2 & {- 3} & {- 1} \\ \end{bmatrix}
      Ceci est un exemple de matrice symétrique. Une matrice carrée est symétrique si 𝐀T=𝐀\mathbf{A}^{T} = \mathbf{A} .

    4. (d) [043401310]\begin{bmatrix} 0 & {- 4} & 3 \\ 4 & 0 & {- 1} \\ {- 3} & 1 & 0 \\ \end{bmatrix}
      Ceci est un exemple de matrice antisymétrique ou obliquement symétrique. Une matrice carrée est antisymétrique si 𝐀T=𝐀.\mathbf{A}^{T} = - \mathbf{A}. Cela implique que les éléments diagonaux d’une matrice antisymétrique doivent être 0.

  6. Manipulez les expressions matricielles suivantes pour supprimer les parenthèses.

    1. (a) ((𝐀T)T)T\left( \left( \mathbf{A}^{T} \right)^{T} \right)^{T}

    2. (b) (𝐁𝐀T)T(𝐂𝐃T)\left( {\mathbf{B}\mathbf{A}}^{T} \right)^{T}\left( {\mathbf{C}\mathbf{D}}^{T} \right)

    3. (c) ((𝐃T𝐂T)(𝐀𝐁)T)T\left( \left( \mathbf{D}^{T}\mathbf{C}^{T} \right)\left( {\mathbf{A}\mathbf{B}} \right)^{T} \right)^{T}

    4. (d) ((𝐀𝐁)T(𝐂𝐃𝐄)T)T\left( \left( {\mathbf{A}\mathbf{B}} \right)^{T}\left( {\mathbf{C}\mathbf{D}\mathbf{E}} \right)^{T} \right)^{T}

  7. Décrivez la transformation 𝐚𝐌=𝐛\mathbf{a}\mathbf{M} = \mathbf{b} représentée par chacune des matrices suivantes.

    1. (a) 𝐌=[0110]\mathbf{M} = \begin{bmatrix} 0 & {- 1} \\ 1 & 0 \\ \end{bmatrix}

    2. (b) 𝐌=[22222222]\mathbf{M} = \begin{bmatrix} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \\ {- \frac{\sqrt{2}}{2}} & \frac{\sqrt{2}}{2} \\ \end{bmatrix}

    3. (c) 𝐌=[2002]\mathbf{M} = \begin{bmatrix} 2 & 0 \\ 0 & 2 \\ \end{bmatrix}

    4. (d) 𝐌=[4007]\mathbf{M} = \begin{bmatrix} 4 & 0 \\ 0 & 7 \\ \end{bmatrix}

    5. (e) 𝐌=[1001]\mathbf{M} = \begin{bmatrix} {- 1} & 0 \\ 0 & 1 \\ \end{bmatrix}

    6. (f) 𝐌=[0220]\mathbf{M} = \begin{bmatrix} 0 & {- 2} \\ 2 & 0 \\ \end{bmatrix}

  8. Pour des vecteurs lignes 3D 𝐚\mathbf{a} et 𝐛\mathbf{b} , construisez une matrice 3×33 \times 3 𝐌\mathbf{M} telle que 𝐚×𝐛=𝐚𝐌\mathbf{a} \times \mathbf{b} = \mathbf{a}\mathbf{M} . C’est-à-dire, montrez que le produit vectoriel de 𝐚\mathbf{a} et 𝐛\mathbf{b} peut être représenté comme le produit matriciel 𝐚𝐌\mathbf{a}\mathbf{M} , pour une certaine matrice 𝐌\mathbf{M} . (Indice : la matrice sera antisymétrique.)

  9. Associez chacune des figures suivantes (1 à 4) à leur transformation correspondante.

    1. [1001]\begin{bmatrix} 1 & 0 \\ 0 & {- 1} \\ \end{bmatrix}

    2. [2.5002.5]\begin{bmatrix} 2.5 & 0 \\ 0 & 2.5 \\ \end{bmatrix}

    3. [22222222]\begin{bmatrix} {- \frac{\sqrt{2}}{2}} & {- \frac{\sqrt{2}}{2}} \\ {- \frac{\sqrt{2}}{2}} & \frac{\sqrt{2}}{2} \\ \end{bmatrix}

    4. [1.5002.0]\begin{bmatrix} 1.5 & 0 \\ 0 & 2.0 \\ \end{bmatrix}

    image

  10. Étant donné le vecteur colonne 10×110 \times 1 𝐯\mathbf{v} , créez une matrice 𝐌\mathbf{M} qui, lorsqu’elle est multipliée par 𝐯\mathbf{v} , produit un vecteur colonne 10×110 \times 1 𝐰\mathbf{w} tel que

    wi={v1si~i=1,vivi1si~i>1.w_{i} = \left\{ \begin{matrix} v_{1} & {\text{si\textasciitilde}i = 1,} \\ {v_{i} - v_{i - 1}} & {\text{si\textasciitilde}i > 1.} \\ \end{matrix} \right.

    Des matrices de cette forme apparaissent lorsqu’une fonction continue est discrétisée. La multiplication par cette matrice des premières différences est l’équivalent discret de la dérivation continue. (Nous verrons la dérivation dans le chapitre 11 si vous n’avez pas encore étudié le calcul infinitésimal.)

  11. Étant donné le vecteur colonne 10×110 \times 1 𝐯\mathbf{v} , créez une matrice 𝐍\mathbf{N} qui, lorsqu’elle est multipliée par 𝐯\mathbf{v} , produit un vecteur colonne 10×110 \times 1 𝐰\mathbf{w} tel que

    wi=j=1ivj.w_{i} = \sum\limits_{j = 1}^{i}v_{j}.

    En d’autres termes, chaque élément devient la somme de cet élément et de tous les éléments précédents.
    Cette matrice effectue l’équivalent discret de l’intégration, qui, comme vous le savez peut-être déjà (mais que vous saurez certainement après avoir lu le chapitre 11) est l’opération inverse de la dérivation.

  12. Considérez 𝐌\mathbf{M} et 𝐍\mathbf{N} , les matrices des exercices 10 et 11.

    1. Discutez vos attentes concernant le produit 𝐌𝐍\mathbf{M}\mathbf{N} .

    2. Discutez vos attentes concernant le produit 𝐍𝐌\mathbf{N}\mathbf{M} .

    3. Calculez 𝐌𝐍\mathbf{M}\mathbf{N} et 𝐍𝐌\mathbf{N}\mathbf{M} . Vos attentes étaient-elles correctes ?

Être civilisé, c’est être potentiellement maître de toutes les idées possibles,
et cela signifie que l’on a dépassé le stade d’être choqué,
tout en préservant ses propres préférences morales et esthétiques.

— Oliver Wendell Holmes (1809–1894)

Références

[1] Tomas Akenine-Möller, Eric Haines et Natty Hoffman.   Real-Time Rendering, Troisième édition.   Natick, MA: A K Peters, Ltd., 2008.   http://www.realtimerendering.com/.

[2] Gilbert Strang.   Computational Science and Engineering.   Cambridge, UK: Wellesley-Cambridge, 2007.

[3] Gilbert Strang.   Introduction to Linear Algebra, Quatrième édition.   Cambridge, UK: Wellesley-Cambridge, 2009.

  1. Le problème de trouver le parenthésage qui minimise le nombre de multiplications scalaires est connu sous le nom de problème de la chaîne matricielle.

  2. Ce sont les lignes dans ce livre. Si vous utilisez des vecteurs colonnes, ce sont les colonnes de la matrice.

  3. C’est un système d’ inégalités, mais des principes similaires s’appliquent.

<< Espaces de coordonnées multiples

Matrices et transformations linéaires >>

Retour en haut