Ancora una BOZZA...

Un modo di rappresentare un tensore di rango qualsiasi usabile in linguaggi informatici.

Un tensore è caratterizzato da vari parametri:
  • D: Numero delle dimensioni in cui è definito. Un intero da 2 a ... 4 nello spazio della relatività generale.

  • R: Rango del tensore per cui il numero degli elementi di cui è costituito è  DR .

  • Tipo degli indici: coVarianti o coNtrovarianti. Per convenzione, indicando con una cifra il tipo dell'indice, sarà considerato covariante se pari, considerando pari anche lo zero, e controvariante se dispari oppure, per distinguerli con un carattere alfabetico, userò  v  per indicare un indice covariante e  n  per indicare un indice controvariante.

  • Elementi del tensore: una sequenza di  DR  funzioni delle coordinate dello spazio considerato.

In base a queste regole del tutto generali si potrebbe stabilire una notazione fatta soprattutto per informatici oltre che matematici, coerente con le regole seguite da molti e diffusissimi linguaggi di programmazione.

In moltissimi linguaggi di programmazione i nomi delle variabili sono costituite da sequenze di caratteri alfanumerici con il vincolo che il primo carattere deve essere un carattere alfabetico.

Per questa ragione una sequenza di caratteri iniziante con un carattere numerico sarebbe subito riconoscibile come operatore matematico.

Si può dunque stabile questa regola di scrittura di un operatore monadico o diadico tra tensori:

  1. Rango del primo tensore che precede l'operatore tensoriale. Un vettore è un tensore di rango 1, una matrice è un tensore di rango 2, il simbolo di Christoffel è uno pseudotensore a 3 indici ossia può essere considerato un vettore di matrici simmetriche, il tensore di Riemann è un tensore di rango 4 ossia può essere considerato una matrice di matrici etc. Se il rango è 0 l'operatore è monadico, non diadico ossia non opera sul tensore che lo precede. Dunque l'operatore non opera per fare la banale moltiplicazione di uno scalare per un tensore che si indica col solito carattere  * .

  1. Sequenza alfabetica di accoppiamento tra gli indici, con la convenzione che gli indici sono numerati con la sequenza alfabetica delle lettere minuscole ossia a corrisponde al primo indice, b al secondo indice, c al terzo etc.
    Gli indici sono numerati da sinistra a destra ossia i primi indici, almeno uno, appartengono al primo tensore ( se l'operatore è diadico ) mentre i restanti si riferiscono al secondo tensore, sempre considerati da sinistra a destra.
    Se la stringa di caratteri alfabetici ne contiene un numero dispari, l'ultimo viene ignorato e può avere, se unico, una funzione di pura separazione della sequenza di cifre iniziali dalla seconda sequenza di cifre che conclude la sequenza di caratteri alfabetici.

  2. Rango del secondo tensore, se l'operatore è diadico o dell'unico tensore considerato se l'operatore è monadico ossia se si è indicato 0 come rango del tensore che precede l'operatore tensoriale.
    Il rango può anche essere 0, a patto che l'altro rango non sia anche lui 0, per indicare che l'operatore è monadico ed opera sul tensore che lo precede e non su quello che eventualmente lo segue.

  3. Permutazione degli indici del tensore risultato assumendo, come sequenza non permutata, quella desunta dalla sequenza di indici dei tensori su cui agisce l'operatore, depurata dalle coppie di indici che specificano le tracce o la contrazioni specificate dall'operatore tensoriale.
    Per convenzione si possono specificare non tutti gli indici coinvolti nella permutazione ma solo quelli spostati dalla loro posizione naturale.
    Per esempio se faccio una contrazione tra due matrici, tra il secondo e terzo indice come si fa tradizionalmente in algebra matriciale, ma voglio che l'ultimo indice sia il primo del risultato debbo scrivere  A 2bc2d B  o, più pignolescamente,  A 2bc2da B  mentre se voglio lasciare gli indici del risultato dove starebbero naturalmente posso scrivere  A 2bc2 B  essendo ovvio che il primo indice sopravissuto l'indica  a  appartenente alla matrice  A  mentre il secondo indice sopravissuto, essendo scomparsa la coppia di indici  b  e  c  non può essere che l'indice  d  appartenente inizialmente al tensore ossia matrice  B .

  4. I tensori sono considerati tutti covarianti e il cambiamento della natura di un dato indice, imposta dall'operatore tensoriale che specifica il calcolo di una traccia o di una contrazione, viene fatto solo quando occorre farlo all'interno della funzione che attua l'operazione indicata dall'operatore.
    Per maggiore chiarezza della formula è ammesso specificare il rango del tensore e, opzionalmente farlo seguire dalla sequenza del tipo di indici usando il carattere  v  per indicare un indice covariante e  n  per indicare un indice controvariante.La specifica del tipo dell'indice è facoltativa e gli indici di cui non si specifica la natura sono covarianti.
    Dunque un vettore covariante può essere specificato in tre modi differenti ossia, per esempio, se il suo nome è  A  lo posso specificare esplicitamente come  A1  oppure  A1v  mentre un vettore controvariante lo debbo specificare come  A1n  perché senza indicazione esplicita si considerano covarianti tutti gli indici.

  1. Notare che, a differenza della notazione tradizionale, il prodotto scalare tra due vettori, essendo specificato dall'operatore, viene fatto anche indicando come covarianti entrambi i vettori ossia il prodotto di un vettore con se stesso può essere indicato con   A 1ab1 A   ma non cambia nulla scrivendo   A1 1ab1 A1   oppure, in modo ancora più prolissamente   A1v 1ab1 A1n   oppure   A1n 1ab1 A1v   o, in contrasto con le regole tradizionali,   A1v 1ab1 A1v   o   A1n 1ab1 A1n  .
    In base alla notazione tradizionale si possono contarre solo indici di tipo diverso ossia uno covariante con uno controvariante mentre se si usano due indici entrambi covarianti con due vettori si ottiene una matrice ossia tensore di rango 2 covariante e se, con la stessa coppia di vettori si usano due indici entrambi controvarianti si ottiene una matrice ossia tensore di rango 2 controvariante. Ma la stessa operazione viene specificata scrivendo A 1a1 B che da due vettori covarianti produce un tensore di rango 2 covariante dato che il carattere a non è accoppiato con un altro ossia la contrazione non ha luogo. Se poi si volesse che il risultato sia non quello che è di norma ma un tensore totalmente controvariante basterebbe scrivere (A 1a1 B)2nn obbligati a indicare il rango del risultato che deve essere 2 e la natura dei due indici ossia n che vuol dire controvariante.
    Come ultimo esempio consideriamo il tensore di Riemann che ha rango 4 e che normalmente viene usato col primo indice controvariante e i restanti covarianti. Per precisarlo esplicitamente potrei scrivere R4nvvv ma, sottintendendo la natura covariante degli indici non specificati esplicitamente potrei indicarlo in modo conciso con R4n.
    Lo stesso può essere fatto col simbolo di Christoffel di seconda specie che ha il primo indice controvariante e gli altri due covarianti. Senza usare lettere greche potrei indicarlo con Ch3n oppure, usando il simbolo greco tradizionale potrei indicarlo, usando Unicode ( vedere per esempio http://www.elegio.it/calcolatrice/frazione-con-css.html ), con Γ3n.

Da anni studio e cerco di applicare convenzioni di scrittura delle formule tensoriali e librerie HTML per poterle scrivere in puro testo da utilizzare nella posta elettronica o nei sorgenti di linguaggi di programmazine, ma l'ultima invenzione, ora questa, mi sembra sempre la migliore....

http://www.elegio.it/mc2/

http://www.elegio.it/mc2/convenzioni-proformulex10.html

http://www.elegio.it/mc2/convenzioni-tensoriali.html

http://www.elegio.it/mc2/formule-varie-tensorialix11nolib.html

Ma queste sono forse le più intuitive e facilmente trasformabili in funzioni Javascript concretamente utilizzabili


In questa immagine SVG uso l'elemento defs unito a symbol e ad use e scrivo testi grandi e belli.. {circle r="300" cx="30000" cy="18000" fill="red" /}



In corso di scrittura.... ancora MOLTO INCOMPLETO....