Convention de sommation d'Einstein
En mathématiques et plus spécialement dans les applications de l'algèbre linéaire en physique, la convention de sommation d'Einstein ou notation d'Einstein est un raccourci de notation utile pour la manipulation des équations concernant des coordonnées.
Selon cette convention, quand l'indice d'une variable apparaît deux fois dans un terme, on sous-entend la sommation sur toutes les valeurs que peut prendre cet indice. Cet indice est dit muet. On le fait figurer une fois en position supérieure, une fois en position inférieure.
Un indice non muet est dit indice réel et ne peut apparaître qu'une seule fois dans le terme en question. Généralement, ces indices sont 1, 2 et 3 pour les calculs dans l'espace euclidien ou 0, 1, 2 et 3 ou 1, 2, 3 et 4 pour les calculs dans un espace de Minkowski, mais ils peuvent avoir d'autres valeurs ou même, dans certaines applications, représenter un ensemble infini. En trois dimensions,
signifie donc
En relativité générale, l'alphabet latin et l'alphabet grec sont respectivement utilisés pour distinguer si la somme porte sur 1, 2 et 3 ou 0, 1, 2, et 3. Par exemple les indices i, j, … sont utilisés pour 1, 2, 3 et μ, ν, pour 0, 1, 2, 3.
Lorsque les indices se rapportent à des tenseurs, comme en relativité générale, les indices muets doivent apparaître une fois en haut et une fois en bas ; dans d'autres applications une telle distinction n'existe pas.
Une notation apparentée est la notation en indice abstrait.
Définitions
Traditionnellement, on s'intéresse à un espace vectoriel V de dimension finie n et une base sur V dont les vecteurs sont notés . Dans ce cas, un vecteur dans V possède une représentation dans cette base qui s'exprime à l'aide de coordonnées notées , ceci conformément à la relation suivante, dite règle de base :
Avec la convention de sommation d'Einstein, elle s'écrit simplement
Dans cette expression, on sous-entend que le terme de droite est additionné pour toutes les valeurs de i allant de 1 à n, car l'indice i apparaît deux fois.
L'indice i est dit muet car le résultat n'en dépend pas. Par exemple, pour exprimer la même chose on pourrait aussi écrire :
Dans les contextes dans lesquels l'indice doit apparaître une fois en bas et une fois en haut, les vecteurs de base s'écrivent mais les coordonnées s'écrivent . La règle de base s'écrit alors :
- .
L'intérêt de la notation d'Einstein est qu'elle s'applique à d'autres espaces vectoriels construits à partir de V en utilisant le produit tensoriel et la dualité. Par exemple, , le produit tensoriel de V par lui-même, a une base constituée de tenseurs de la forme . Tout tenseur T dans peut s'écrire :
- .
V*, le dual de V, a une base , dite base duale de la base , définie par la règle :
où est le symbole de Kronecker : vaut 1 si i = j et 0 sinon.
Ici nous avons utilisé un indice supérieur pour la base duale, les indices des coordonnées doivent alors apparaître en bas. Dans ce cas, si est un élément de V*, alors :
Si au contraire, tous les indices doivent être placés en bas, alors une lettre différente doit être utilisée pour désigner la base duale. Par exemple :
L'utilité de la notation d'Einstein apparaît surtout dans les formules et les équations qui ne font pas mention de la base choisie. Par exemple, avec et défini comme plus haut :
- .
Ceci est vrai pour toutes les bases.
Les sections suivantes contiennent d'autres exemples de telles équations.
Algèbre vectorielle élémentaire et algèbre matricielle
Soit V un espace vectoriel dans , alors il existe une base standard pour V dans laquelle est (0,…,0,1,0,…,0), avec le 1 à la position i. Dans ce cas, les matrices n × n peuvent être vues comme des éléments de . On peut aussi considérer les vecteurs dans V comme des vecteurs colonnes ou comme des matrices n × 1 et les éléments de V* comme des vecteurs rangées ou des matrices 1 × n.
Dans les exemples qui suivent, tous les indices apparaîtront en position haute. C'est parce que V a un produit interne et que la base choisie est orthonormale, comme cela est expliqué dans la section suivante.
Si H est une matrice et v est un vecteur colonne, alors H v est un autre vecteur colonne. Pour définir w = H v, on peut écrire:
L'indice muet j apparaît deux fois dans le terme de droite, tandis que i apparaît une seule fois dans chaque terme.
En utilisant la distributivité, peut s'écrire:
Cet exemple montre la preuve de la loi de distributivité, car l'équation des indices ne fait que directement référence aux nombres réels , et et sa validité découle directement de celle de la distributivité de ces nombres.
La transposée d'un vecteur colonne est un vecteur ligne avec les mêmes composantes et la transposée d'une matrice est une autre matrice dont les composantes sont données en inversant les indices. Supposons que nous sommes intéressés par , le produit de par . Alors:
Donc pour exprimer que la transposée d'un produit inverse l'ordre de la multiplication, nous pouvons écrire:
À nouveau, ceci découle directement de la commutativité des nombres réels.
Le produit scalaire de deux vecteurs u et v peut s'écrire:
Si n = 3, nous pouvons aussi écrire le produit vectoriel en utilisant le symbole de Levi-Civita. Par exemple, si w est u × 'v, alors:
Ici le symbole de Levi-Civita est le tenseur totalement anti-symétrique tel que . Concrètement :
- si (i,j,k) est une permutation paire de (1,2,3) ;
- si (i,j,k) est une permutation impaire de (1,2,3) ;
- si (i,j,k) n'est pas une permutation de (1,2,3) (s'il y a deux fois le même indice).
Exemple
Soit à démontrer l'identité vectorielle suivante :
Avec a b et c des vecteurs quelconques. En notation d'Einstein, on a :
En réarrangeant les termes et en permutant les indices, on obtient l'expression équivalente suivante :
En utilisant les propriétés du symbole de Levi-Civita. On a alors en réorganisant et en simplifiant les termes :
On a donc finalement :
En explicitant l'indice i, on retrouve l'identité.
Cas sans produit interne
Dans les exemples ci-dessus, l'on peut remarquer que les formules sont toujours valides si les indices muets sont présents une fois comme indice supérieur et une fois comme indice inférieur, sauf dans l'exemple concernant la transposée. C'est parce que ces exemples utilisent implicitement le produit interne dans un espace euclidien (produit scalaire) alors que l'exemple avec le transposée ne le fait pas.
Dans certaines applications, il n'y a pas de produit interne sur V. Dans ces cas, requérir que les indices muets doivent apparaître une fois en haut et une fois en bas peut aider à éviter des erreurs, un peu comme l'analyse dimensionnelle permet d'éviter les erreurs d'unités. Plus significativement, le produit interne peut être l'objet principal de l'étude et ne devrait pas être supprimé de la notation ; c'est le cas, par exemple, des équations de la relativité générale. Dans ces cas, la différence entre la position d'un indice peut-être cruciale.
Quand on se réfère explicitement au produit interne, ces composantes sont souvent notées : (cfr. tenseur métrique). On notera que . La formule pour le produit scalaire devient alors :
On peut aussi abaisser l'indice en définissant :
- ,
ce qui donne:
Ici, nous avons implicitement utilisé le fait que .
De façon similaire, nous pouvons élever un indice en utilisant le produit interne correspondant sur V*. Le produit interne est alors défini par , qui en tant que matrice est l'inverse de . En élevant un indice puis en l'abaissant (ou le contraire), on retrouve ce que l'on avait au départ. En élevant le i dans , alors on obtient et en élevant le j dans on obtient .
Si la base choisie pour V est orthonormale, alors et . Dans ce cas, on retrouve la formule pour le produit scalaire de la section précédente. Mais si la base n'est pas orthonormale, cela ne sera plus vrai. Ainsi, en étudiant le produit interne sans pouvoir savoir si la base est orthonormale, il faut se référer explicitement à . De plus, si le produit interne n'est pas défini-positif, comme c'est le cas en relativité générale, ne sera pas vrai même si la base est orthonormale car on aura parfois -1 au lieu de 1 quand i = j.
Application
En informatique, la sommation d'Einstein permet d'effectuer certaines opérations matricielles de façon très efficace en réduisant le besoin en mémoire de stockage temporaire. Elle est notamment implantée dans la fonction "einsum" de NumPy[1] qui permet par exemple d'implanter le calcul d'une matrice de Fock en trois lignes de code plutôt que 4 boucles imbriquées[2].
Références
- (en) « Numpy.einsum - NumPy v1.24 Manual », sur scipy.org (consulté le ).
- « github.com/dgasmith/psi4numpy/… »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?).