Nächste: , Vorige: , Nach oben: Paket ATENSOR   [Inhalt][Index]

20.4.1 Einführung in ATENSOR

Das Paket atensor erlaubt das algebraische Rechnen mit Tensoren. Mit dem Kommando load("atensor") wird das Paket geladen. Um das Paket zu initialisieren, wird die Funktion init_atensor ausgeführt.

Im wesentlichen enthält das Paket atensor Regeln für die Vereinfachung von Ausdrücken mit dem dot-Operator Operator ".". atensor kennt verschiedene Algebren. Mit der Funktion init_atensor werden die Regeln einer Algebra initialisiert.

Um die Möglichkeiten des Paketes atensor zu zeigen, wird im Folgenden die Algebra der Quaternionen als eine Clifford-Algebra Cl(0,2) mit zwei Basisvektoren definiert. Die drei imaginären Einheiten i, j und k werden durch die zwei Vektoren v[1] und v[2] sowie das Produkt v[1] . v[2] dargestellt:

    i = v     j = v     k = v  . v
         1         2         1    2

Das Paket atensor hat eine vordefinierte Algebra der Quaternionen. Hier wird die Algebra der Quaterinonen als Clifford-Algebra Cl(0,2) definiert und die Multiplikationstabelle der Basisvektoren konstruiert.

(%i1) load("atensor")$

(%i2) init_atensor(clifford,0,0,2);
(%o2)                         done
(%i3) atensimp(v[1].v[1]);
(%o3)                          - 1
(%i4) atensimp((v[1].v[2]).(v[1].v[2]));
(%o4)                          - 1
(%i5) q:zeromatrix(4,4);
                         [ 0  0  0  0 ]
                         [            ]
                         [ 0  0  0  0 ]
(%o5)                    [            ]
                         [ 0  0  0  0 ]
                         [            ]
                         [ 0  0  0  0 ]
(%i6) q[1,1]:1;
(%o6)                           1
(%i7) for i thru adim do q[1,i+1]:q[i+1,1]:v[i];
(%o7)                         done
(%i8) q[1,4]:q[4,1]:v[1].v[2];
(%o8)                        v  . v
                              1    2
(%i9) for i from 2 thru 4 do
          for j from 2 thru 4 do
              q[i,j]:atensimp(q[i,1].q[1,j]);
(%o9)                         done
(%i10) q;
            [    1        v         v      v  . v  ]
            [              1         2      1    2 ]
            [                                      ]
            [   v         - 1     v  . v    - v    ]
            [    1                 1    2      2   ]
(%o10)      [                                      ]
            [   v      - v  . v     - 1      v     ]
            [    2        1    2              1    ]
            [                                      ]
            [ v  . v      v        - v       - 1   ]
            [  1    2      2          1            ]

Indizierte Symbole mit dem Namen, der in der Optionsvariablen asymbol abgelegt ist, werden von atensor als Basisvektoren erkannt. Dabei läuft der Index von 1 bis adim. Für indizierte Symbole werden die Bilinearformen sf, af und av ausgewertet. Die Auswertung ersetzt die Bilinearform fun(v[i].v[j]), durch das Matrixelement aform[i,j], wobei v einen Basisvektor bezeichnet und fun einer der Bilinearformen sf oder af ist. Ist fun die Bilinearform av, dann wird v[aform[i,j]] für av(v[i],v[j]) substituiert. Siehe auch die Optionsvariable aform.

Die Bilinearformen sf, af und av können vom Nutzer neu definiert werden, um eine gewünschte Algebra zu definieren.

Wird das Paket atensor geladen, werden die folgenden Schalter auf die angegebenen Werte gesetzt:

dotscrules  : true
dotdistrib  : true
dotexptsimp : false

Wird das symbolische Rechnen in einer nicht-assoziativen Algebra gewünscht, kann auch noch der Schalter dotassoc auf den Wert false gesetzt werden. In diesem Fall kann jedoch die Funktion atensimp nicht immer eine gewünschte Vereinfachung erzielen.


Nächste: , Vorige: , Nach oben: Paket ATENSOR   [Inhalt][Index]