Matrices et tableaux

Les matrices, vecteurs et toute formule disposée en grille se composent soit avec les environnements de matrices du paquet amsmath (pmatrix et apparentés), soit avec l’environnement plus général array. Les deux se rédigent de la même façon : les entrées sont séparées par & sur une ligne et par \\ d’une ligne à l’autre. Ils diffèrent toutefois par les délimiteurs ajoutés et par la liberté de contrôle de l’alignement. Cette page parcourt la famille des environnements de matrices, montre quand employer chacun, présente array pour choisir les alignements et filets, explique les matrices augmentées, puis les points \cdots, \vdots, \ddots qui signifient « et ainsi de suite » dans une matrice.

Les environnements de matrices d’amsmath

La manière la plus simple de composer une matrice est d’utiliser la famille d’environnements fournie par le paquet amsmath ; ajoutez \usepackage{amsmath} au préambule pour les rendre disponibles. Tous s’emploient en mode mathématique, avec les entrées séparées dans une ligne par & et les lignes terminées par \\. La seule différence entre eux est le délimiteur placé autour de la matrice ; le contenu se rédige de la même façon.

Les noms suivent une règle. La première lettre indique le délimiteur : p pour parentheses, b pour brackets, v pour vertical bar. Les formes à majuscule initiale Bmatrix et Vmatrix donnent les délimiteurs plus forts, accolades et doubles barres. Le simple matrix n’ajoute aucun délimiteur.

EnvironnementDélimiteur ajoutéUsage typique
matrixaucunBase quand on ajoute soi-même le délimiteur
pmatrixparenthèses ( )Matrices et vecteurs colonnes les plus courants
bmatrixcrochets [ ]Matrices dans la convention à crochets
Bmatrixaccolades { }Quand on veut des accolades
vmatrixbarres simples | |Déterminants
Vmatrixdoubles barres ‖ ‖Normes
smallmatrixaucun (compact)Petite matrice insérée dans le texte

L’exemple suivant compose le même contenu 2×2 avec pmatrix, bmatrix et vmatrix. Les espaces et retours à la ligne autour de \\ n’influencent pas la sortie ; vous pouvez donc formater la source pour la lisibilité.

latex
\[
  \begin{pmatrix}
    a & b \\
    c & d
  \end{pmatrix}
  \quad
  \begin{bmatrix}
    a & b \\
    c & d
  \end{bmatrix}
  \quad
  \begin{vmatrix}
    a & b \\
    c & d
  \end{vmatrix}
\]

La sortie affiche trois matrices 2×2 centrées sur leur propre ligne, espacées par \quad : la première entre parenthèses, la deuxième entre crochets, la troisième encadrée de barres verticales comme un déterminant. Les entrées sont centrées, et a, b, c, d sont composés en italique comme des variables.

Notez que les entrées des environnements de matrices sont toujours centrées ; on ne peut pas demander des colonnes alignées à droite ou à gauche. Pour choisir vous-même l’alignement, utilisez l’environnement array décrit plus bas, ou les variantes étoilées (pmatrix*, bmatrix*, etc.) fournies par le paquet mathtools. Elles acceptent un argument optionnel [r], [c] ou [l] qui aligne toutes les colonnes ainsi, par exemple \begin{pmatrix*}[r] … \end{pmatrix*}.

La limite de colonnes (MaxMatrixCols)

Par défaut, les environnements de matrices d’amsmath autorisent au plus 10 colonnes. Le compteur MaxMatrixCols est en effet initialisé à 10. Si vous tentez de composer une matrice de onze colonnes ou plus, vous obtenez une erreur indiquant qu’il y a trop de colonnes.

Si vous avez besoin de plus de colonnes, relevez la limite avec \setcounter{MaxMatrixCols}{n}. Par exemple, pour autoriser jusqu’à 20 colonnes, écrivez ceci. Des valeurs plus grandes demandent plus de travail à LaTeX, mais sur les systèmes TeX actuels une valeur autour de 20 n’a presque aucun impact pratique. Pour revenir à l’état initial, remettez la valeur à 10.

latex
\setcounter{MaxMatrixCols}{20}
\[
  \begin{pmatrix}
    a_{1} & a_{2} & \cdots & a_{12}
  \end{pmatrix}
\]

Cette limite ne concerne que les environnements de matrices d’amsmath, pas l’environnement array décrit ensuite ; avec array, il suffit d’énumérer autant de colonnes que nécessaire dans la spécification.

L’environnement array

L’environnement array est une grille générale dans laquelle vous choisissez vous-même l’alignement et les filets. C’est l’équivalent en mode mathématique de l’environnement tabular des tableaux de texte, et il ne peut s’utiliser qu’en mode mathématique (dans \[ \] ou dans un environnement equation). Les entrées se séparent avec & et \\ comme dans tabular, mais chacune est composée comme une formule, en style texte.

L’environnement array prend un argument obligatoire, la spécification de colonnes. On écrit une lettre d’alignement par colonne, comme {ccc} : l pour aligné à gauche, c pour centré, r pour aligné à droite. Insérer | entre deux lettres trace un filet vertical à cet endroit. Ainsi {l|c|r} signifie trois colonnes : gauche, filet, centrée, filet, droite.

array n’ajoute aucun délimiteur par lui-même. Pour l’encadrer comme une matrice, entourez-le à la main avec \left( … \right) (ou \left[ … \right], etc.). Comme \left et \right étirent le délimiteur à la hauteur du contenu, les parenthèses couvrent proprement toute la matrice, même avec de nombreuses lignes. C’est la version manuelle de ce que les environnements de matrices d’amsmath font en interne.

latex
\[
  \left(\begin{array}{rrr}
    1 & -2 & 3 \\
    0 & 5 & -1 \\
    4 & 0 & 2
  \end{array}\right)
\]

Cet exemple produit une matrice 3×3 entre parenthèses. Comme la spécification est {rrr}, chaque colonne est alignée à droite ; les entrées négatives comme -2 et -1 s’alignent donc à droite et se lisent proprement. L’essentiel est que, contrairement à pmatrix toujours centré, array permet de choisir l’alignement.

Matrices augmentées (avec filet)

Pour une matrice augmentée, qui représente un système linéaire, on veut souvent un filet vertical au milieu. Les environnements amsmath comme bmatrix ne prennent pas de spécification de colonnes et ne peuvent donc pas le tracer ; le | d’une spécification array le permet. Donnez une spécification avec | entre les colonnes de coefficients et la colonne constante, par exemple {cc|c}, puis entourez le tout avec \left[ … \right].

latex
\[
  \left[\begin{array}{cc|c}
    1 & 2 & 5 \\
    3 & 4 & 6
  \end{array}\right]
\]

La sortie est une matrice augmentée entre crochets, à deux lignes, avec un seul filet vertical entre la deuxième et la troisième colonne. Le 1 2 / 3 4 à gauche est la matrice des coefficients, et le 5 / 6 à droite du filet est la colonne des constantes. Comme \left[ et \right] étirent les crochets à la hauteur du contenu, l’ensemble reste correct quand on ajoute des lignes.

Pour faire la même chose avec des parenthèses, passez à \left( … \right) ; avec des accolades, à \left\{ … \right\}. Le paquet mathtools propose aussi des écritures plus compactes pour ce type de matrice augmentée.

Points dans les matrices (…, ⋮, ⋱)

Pour écrire une matrice générale n×n, il faut les points de suspension qui signifient « et ainsi de suite ». LaTeX en fournit quatre, avec des directions différentes ; on choisit selon leur position dans la matrice. Ce sont tous des commandes du mode mathématique.

  • \cdots — points horizontaux à la hauteur médiane (⋯), pour omettre des entrées sur une ligne. Ils sont à la hauteur de + et =, ce qui convient à une suite horizontale.
  • \vdots — points verticaux (⋮), pour une omission le long d’une colonne.
  • \ddots — points diagonaux descendant vers la droite (⋱), pour une omission le long de la diagonale principale.
  • \ldots (et le \dots dépendant du contexte) — points horizontaux sur la ligne de base (…), pour des suites de nombres ou d’indices. Dans une matrice, \cdots donne souvent un meilleur résultat.

L’usage standard consiste à placer \cdots pour l’omission horizontale, \vdots pour la verticale et \ddots pour la diagonale, chacun comme une entrée de la matrice. Voici la manière canonique d’écrire une matrice générale n×n avec pmatrix.

latex
\[
  A =
  \begin{pmatrix}
    a_{11} & a_{12} & \cdots & a_{1n} \\
    a_{21} & a_{22} & \cdots & a_{2n} \\
    \vdots & \vdots & \ddots & \vdots \\
    a_{m1} & a_{m2} & \cdots & a_{mn}
  \end{pmatrix}
\]

La sortie est une matrice m×n entre parenthèses. Dans les première, deuxième et dernière lignes, le \cdots de la troisième colonne remplit l’espace entre a_{12} et a_{1n} avec des points horizontaux à mi-hauteur ; dans la troisième ligne, les \vdots donnent des points verticaux dans chaque colonne, tandis que le \ddots sur la diagonale donne des points descendant vers la droite. L’ensemble indique que lignes et colonnes continuent de la même façon. Les indices comme a_{11} sont placés en indice avec _.

Pour remplir toute une ligne de points, \hdotsfor{n} d’amsmath couvre les n colonnes indiquées avec une ligne de points horizontaux.

Petites matrices en ligne (smallmatrix)

Placer pmatrix ou un environnement semblable dans une formule en ligne ($ … $ dans le texte courant) gonfle la hauteur de ligne et perturbe l’interligne. Pour insérer une petite matrice dans le flux du texte, utilisez l’environnement smallmatrix d’amsmath. Il compose les entrées en petit et de façon compacte, en modifiant très peu la hauteur de ligne.

smallmatrix n’ajoute aucun délimiteur ; s’il en faut un, entourez-le à la main, par exemple avec \bigl( … \bigr). On peut aussi employer \left( \right), mais en ligne les tailles fixes \bigl et \bigr perturbent souvent moins l’interligne.

latex
回転行列 $\bigl(\begin{smallmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{smallmatrix}\bigr)$ を考える。

Cela compose une petite matrice de rotation 2×2 entre parenthèses dans une seule ligne de texte, sans beaucoup perturber la hauteur de ligne. \cos et \sin sont composés droits comme noms de fonctions.