• Aucun résultat trouvé

Calcul avec des tenseurs symétriques

Introduction à la géométrie des maillages non structurés

5.10. Calcul avec des tenseurs symétriques

ci1(xi2− xα,i2) · · · xij− xα,ij  + . . . . . . + (xi1 − xα,i1) · · · cik· · · xij − xα,ij  + . . . . . . + (xi1 − xα,i1) · · · xij−1− xα,ij−1  cij  dx . (5.9.22) Le produit symétrique c ⊙ x(j−1)

α a, par la définition (5.2.19), les composantes  c⊙ x(j−1)α  i1···ij = 1 j! X π∈Sj ciπ(1)xα,iπ(2)···iπ(j). (5.9.23)

Pour une valeur k = π (1) fixe, il y a (j − 1)! permutations de l’ensemble restant {2, . . . , j}. La symétrie de x(j−1)

α impose

xα,i2···ij = xα,iπ(2)···iπ(j)

pour toute permutation π ∈ Sj−1de l’ensemble {2, . . . , j}. Pour cette raison, on peut réarranger les indices dans (5.9.23) et écrire (5.9.23) comme

 c⊙ x(j−1)α  i1···ij = (j − 1)! j!  ci1xα,i2i3···ij + · · · +

+cikxα,i1···ik−1ik+1···ij+ · · · + cijxα,i1i2···ij−1

. (5.9.24) La définition (5.7.2) des composantes de x(j−1)α et la comparaison des identités (5.9.22) et (5.9.24) permettent de conclure que

j |Tα| c ⊙ x(j−1)α = c · ζ(j)α

pour j ≥ 2. Dans le cas j = 1, la combinaison de l’identité (5.7.3) x(0)

α = 1 , de l’identité (5.9.15) |Tα| c · δ(2) = ζ(1)α et de la définition (5.2.20) c⊙ 1 , c entraîne |Tα| c ⊙ x(0)α = |Tα| c ⊙ 1 = |Tα| c = |Tα| c · δ(2) = c · ζ(1)α . Finalement, le lemme 5.9.1 permet de prouver la deuxième identité dans (5.9.21)

j |Tα| c ⊙ x(j−1)α =X

β

(c · aαβ) k(j)αβ.



5.10. Calcul avec des tenseurs symétriques

Le développement de schémas numériques d’ordre élevé nécessite la manipulation de tenseurs symétriques d’ordre deux, trois et plus. Les composantes de tels tenseurs ne sont pas mutuelle-ment indépendantes. Cela pose deux problèmes distincts, l’un d’ordre théorique, l’autre d’ordre pratique.

(1) Si l’on travaille avec des systèmes d’équations linéaires dont les inconnues et les co-efficients sont des tenseurs symétriques, il faut éliminer les inconnues et les équations dépendantes. En particulier, il faut disposer d’une méthode pour transcrire ce type de système en une équation matricielle.

(2) Pour une implémentation concrète, il est inutile de stocker toutes les composantes d’un

tenseur symétrique a(k) en mémoire. Ce constat entraîne deux questions.

– Quel est le nombre de composantes indépendantes du tenseur a(k)? – Comment peut-on les stocker dans un tableau ?

5.10. CALCUL AVEC DES TENSEURS SYMÉTRIQUES 57

Pour répondre à ces questions, on rappelle d’abord que deux k-tuples d’indices (i1, · · · , ik) et (j1, · · · , jk) désignent d’après (5.2.6) la même composante du tenseur symétrique a(k)

ai1,··· ,ik = aj1,··· ,jk

s’il existe une permutation π ∈ Sk telle que il = jπ(l) pour 1 ≤ l ≤ k. Pour les besoins d’indexation des composantes ai1,··· ,ik d’un tenseur symétrique a(k), on peut donc identifier de tels k-tuples d’indices en introduisant une relation d’équivalence sur l’ensemble

Jd

k, {(i1, . . . , ik)| 1 ≤ i1, . . . , ik ≤ d} = {1, . . . , d}k (5.10.1) par la

Définition 5.10.1 (Indices équivalentes). Deux k-tuples d’indices (i1, · · · , ik) ∈ Jdk et (j1, · · · , jk) ∈ Jdk

sont dits équivalents et on écrit

(i1, · · · , ik) ∼ (j1, · · · , jk) (5.10.2) s’il existe une permutation π ∈ Sk telle que il= jπ(l) pour 1 ≤ l ≤ k.

La définition 5.10.1 entraîne le

Lemme 5.10.2 (Classes d’indices équivalentes). La relation définie par (5.10.2) est réflexive,

symétrique et transitive et définit par conséquent une partition de Jd

k en classes d’équivalence. La classe d’équivalence de (i1, · · · , ik) ∈ Jdk est notée [i1, · · · , ik] et l’ensemble de ces classes est

noté Jdk/ ∼. Chaque classe a un représentant unique (i1, · · · , ik) pour lequel i1 ≤ · · · ≤ ik.

Démonstration. Chaque π ∈ Sk définit une application de l’ensemble Jd

k sur lui-même Jd

k ∋ (i1, · · · , ik) 7−→ iπ(1), · · · , iπ(k)



. (5.10.3)

Les applications (5.10.3) définissent une action du groupe des permutations Sk sur Jd k et les ensembles d’indices équivalentes sont les orbites de cette action. Cela prouve immédiatement que la relation (5.10.2) est une relation d’équivalence, voir par exemple [35]. Pour la commodité du lecteur, on donne la démonstration détaillée :

(1) Réflexivité : l’existence de la permutation identique π (l) = l pour 1 ≤ l ≤ k montre que la relation (5.10.2) est réflexive : (i1, · · · , ik) ∼ (i1, · · · , ik).

(2) Symétrie : pour toute permutation π ∈ Sk il existe une permutation réciproque π−1. Si il = jπ(l) pour 1 ≤ l ≤ k, la permutation réciproque donne iπ−1(l) = jl pour 1 ≤ l ≤ k. Cela prouve que la relation (5.10.2) est symétrique car (i1, · · · , ik) ∼ (j1, · · · , jk) implique (j1, · · · , jk) ∼ (i1, · · · , ik).

(3) Transitivité : La composition de permutations permet de démontrer la transitivité de la relation (5.10.2). Soient deux permutations π1 ∈ Sk et π2 ∈ Sk telles que il = jπ1(l) pour 1 ≤ l ≤ k et jl= nπ2(l)pour 1 ≤ l ≤ k, alors il vient il= nπ21(l))pour 1 ≤ l ≤ k. Cela montre que (i1, · · · , ik) ∼ (j1, · · · , jk) et (j1, · · · , jk) ∼ (n1, · · · , nk) entraînent (i1, · · · , ik) ∼ (n1, · · · , nk).

Finalement, puisque les entiers sont un ensemble totalement ordonné, on peut toujours arranger les k entiers (i1, · · · , ik) dans leur ordre naturel par une permutation et cet ordre est unique. Il existe donc pour chaque classe d’équivalence un représentant unique (i1, · · · , ik) pour lequel

i1 ≤ · · · ≤ ik. 

Les définitions 5.10.1 et (5.2.6) ainsi que le lemme 5.10.2 montrent que le nombre de compo-santes indépendantes d’un tenseur symétrique a(k) en Rd est égal au nombre de classes d’équi-valence dans Jd

k/ ∼. À titre d’exemple, pour k = 6 et d = 3 on a

a112333= a132133= a312313 = · · · (5.10.4) et la classe d’équivalence des 6-tuples (1, 3, 2, 1, 3, 3), (3, 1, 2, 3, 1, 3), etc., est caractérisée par le représentant unique (1, 1, 2, 3, 3, 3).

L’exemple (5.10.4) ci-dessus montre que le nombre de composantes indépendantes de a(k)

est égal au nombre des mots de longueur k qu’on peut former avec les caractères distincts l ∈ {1, . . . , d} si l’ordre des caractères dans le mot ne joue pas de rôle et si le même caractère peut apparaître plusieurs fois dans un mot. Pour trouver le nombre de ces mots, on peut s’imaginer d boîtes distinctes dans lesquelles on place un nombre total de k objets identiques. Le nombre d’objets dans la boîte numéro l, 1 ≤ l ≤ d, correspond à la multiplicité du caractère l dans le mot. Il suffit de d − 1 parois de séparation pour séparer les d boîtes. Si l’on désigne les objets par le symbole ⋆ et la paroi de séparation par le symbole |, on peut par exemple représenter le mot 132133 par la chaîne

boîte 1 z}|{ ⋆⋆ | boîte 2 z}|{ ⋆ | boîte 3 z}|{ ⋆ ⋆ ⋆ | {z } k=6 fois le symbole ⋆ .

Cela montre que le nombre cherché correspond au nombre des chaînes qu’on peut former avec les k caractères ⋆ et les d − 1 caractères | et ce nombre est donné par

(k + d − 1)! k! (d − 1)! . La discussion ci-dessus prouve la

Proposition 5.10.3 (Nombre de composantes d’un tenseur symétrique). Le nombre de

composantes indépendantes d’un tenseur symétrique a(k) dans Rd est donné par

(k + d − 1)! k! (d − 1)! =  k + d − 1 k  . (5.10.5)

Il reste la question du rangement des composantes indépendantes d’un tenseur symétrique a(k)dans un tableau de longueur k+d−1

k

. Pour cela, il faut définir une relation d’ordre pour les composantes indépendantes de a(k). Les définitions 5.10.1 et (5.2.6) ainsi que le lemme 5.10.2 montrent qu’il suffit de définir cet ordre pour le représentant unique (i1, · · · , ik) de chaque classe d’équivalence [i1, · · · , ik] pour lequel i1 ≤ · · · ≤ ik.

Définition 5.10.4 (Ordre lexicographique pour les composantes de tenseurs symétriques). On définit une relation d’ordre sur les classes d’équivalence que la relation (5.10.2) induit sur l’ensemble Jd

k :

(i) Pour k = 1, la relation d’ordre est définie par [i1]  [j1] ⇔ i1 ≤ j1

(ii) Pour k > 1, soient (i1, · · · , ik) et (j1, · · · , jk) deux représentants uniques de leurs classes respectives tels que i1 ≤ · · · ≤ ik et j1 ≤ · · · ≤ jk. La relation d’ordre sur les classes est définie de façon récursive par

[i1, · · · , ik]  [j1, · · · , jk] si et seulement si : i1 < j1 ou (i1 = j1 et [i2, · · · , ik]  [j2, · · · , jk]) . On a le

Lemme 5.10.5. La relation  introduite par la définition 5.10.4 est une relation d’ordre

totale.

Démonstration. Pour k = 1, la relation  de la définition 5.10.4 coïncide avec l’ordre naturel des entiers qui est une relation d’ordre totale. Pour k > 1, la définition est récursive. Supposons que la relation  soit une relation d’ordre totale pour k−1. L’unicité des représentants (i1, · · · , ik) et (j1, · · · , jk) signifie que (i2, · · · , ik) et (j2, · · · , jk) sont définis de manière unique et qu’on a i2≤ · · · ≤ ik et j2 ≤ · · · ≤ jk. Si i1 = j1, on a, d’après l’hypothèse, soit [i1, · · · , ik]  [j1, · · · , jk] si [i2, · · · , ik]  [j2, · · · , jk], soit [j1, · · · , jk]  [i1, · · · , ik] si [j2, · · · , jk]  [i2, · · · , ik]. Si i1 6= j1, on a [i1, · · · , ik]  [j1, · · · , jk] si i1 < j1 et [j1, · · · , jk]  [i1, · · · , ik] si i1 > j1. Cela montre que la relation  est bien définie pour k ≥ 1 pour tout couple de classes de Jd

k/ ∼. La relation ∼ est réflexive pour k > 1, c’est-à-dire [i1, · · · , ik]  [i1, · · · , ik], si elle est réflexive pour k − 1. Elle est antisymétrique parce que la combinaison de [i1, · · · , ik]  [j1, · · · , jk] et