Précédent
Sommaire
Suivant

Méthode de Newton (Partie 4)

11) S'affranchire des conventions arbitraires du calcul matriciel

Le calcul matriciel a été mis au point pour pouvoir manipuler facilement des applications linéaires dans un espace vectoriel. Elle procède à une représentation plane des paramètres de l'application linéaire. Ce faisant, elle introduit une disymétrie et un ensemble de conventions arbitraires, complexifiant la conception des applications multilinéaires.

Pour s'affranchire des conventions du produit matriciel, on définit un objet plus générale appelé tenseur sur le corps `bbbK`.

On définit le tenseur de façon récurcive comme suit : Un tenseur est un vecteur de tenseurs d'une même dimension, ou bien est un élément du corps.

Un tenseur `x` de corps `bbbK` est caractérisé par une dimension qui est une suite d'entiers strictements positifs `X_0,X_1,X_2...,X_(n-1)`. Chaque composante du tenseur est un élément du corps `bbbK` et possède `n` indices `i_0,i_1,...,i_(n-1)` qui le localise dans le tenseur tel un adressage indirecte et se note `x_(i_0,i_1,i_2,...,i_(n-1))` ou de façon plus explicite `x[i_0,i_1,i_2,...,i_(n-1)]` ou de façon plus développée `x[i_0][i_1][i_2],...,[i_(n-1)]`. Et les indices évoluent comme suit, `i_0"∈"{0..X_0-1}`, `i_1"∈"{0..X_1-1}`, `i_2"∈"{0..X_2-1}`, ..., `i_(n-1)"∈"{0..X_(n-1)-1}`. L'ensemble des tenseurs de corps `bbbK` et de dimension `(X_0,X_1,X_2...,X_(n-1))` se note `bbbK^("("X_0,X_1,X_2...,X_(n-1)")")`.

On choisit de numériter les indices à partir de zéro, et de faire parcourire les indice à partir de zéro, pour pouvoir facilement évoquer la complétion circulaire.

A partir d'une expression fonction par exemple de 3 paramètres, on définit un tenseur de dimension `(n,m,p)` comme suit en multipliant l'expression par le vecteur crochet `{...}` contenant la liste des indices du tenseur et leur borne. Notez que l'ordre des indices est important. Et si les bornes ne sont pas indiquées, c'est le typage par inférence qui les déterminera.

`x = [f(i,j,k)]{i"<"n,j"<"m,k"<"p}`

Le tenseur `x`, s'il n'est pas réduit à un élément du corps, peut être vue comme un vecteur de tenseurs. On utilise pour cela l'adressage partielle suivant :

`x = x[i]{i}`

Et s'il n'est pas réduit à un vecteur d'éléments du corps, il peut être vue comme un vecteur de vecteurs de tenseurs. On utilise pour cela l'adressage partielle suivant :

`x = x[i][j]{i,j}`

Et ainsi de suite. Noter que l'adressage `x[i]` est de priorité syntaxique maximale et s'évalue de gauche à droite. `x[i][j][k] "=" ((x[i])[j])[k]`. Lorsque il y a plusieurs adressages succécifs, on les note de façon groupée, `x[i][j]"="x[i,j]`, `x[i][j][k]"="x[i,j,k]`, etc..

On définit les deux produits, le produit croisé noté par absence de symbole et le produit scalaire généralisé noté `"·"` :

 

---- 26 juillet 2021 ----

 

 

 

Dominique Mabboux-Stromberg

Précédent
Sommaire