Maxima 5.46.0 Manual: Introduction to atensor

Next: Functions and Variables for atensor, Previous: atensor, Up: atensor [Contents][Index]

### 27.1 Introduction to atensor

`atensor`は、代数テンソル操作パッケージです。 `atensor`を使うには、`load("atensor")`をタイプしてください。 続いて、`init_atensor`関数コールしてください。

`atensor`の本質は非可換(ドット)積演算子 ("`.`")の整理ルール一式です `atensor`はいくつかの代数型を認識します; `init_atensor`関数がコールされた時、 対応する整理ルールが有効になります。

`atensor`の能力は、 四元数代数を2つの基底ベクトルを持つClifford代数 Cl(0,2)として 定義することで実演することができます。 3つの四元数虚数単位は2つの基底ベクトルとその積、すなわち以下の通りです:

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

`atensor`パッケージは 四元数代数に関する組み込みの定義を持ちますが、 この例では使わず、四元数乗算表を行列として組むよう試みます:

    (%i1) load("atensor");
    (%o1)       /share/tensor/atensor.mac
    (%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            ]

`atensor`は 添字付きシンボルを基底ベクトルと認識します。 シンボルは`asymbol`の中に記憶されたものであり、 添字は1から`adim`まで間です。 添字付きシンボルだけに関して 双一次形式 `sf`, `af`, `av`が評価されます。 評価は `fun(v[i],v[j])`に `aform[i,j]`の値を代入します ここで、`v`は `asymbol`の値を表し、 `fun`は `af`か `sf`を示します; あるいは、 `av(v[i],v[j])`に `v[aform[i,j]]`を代入します。

言うまでもなく、関数 `sf`, `af`, `av`は再定義するこができます。

`atensor`パッケージがロードされる時、以下のフラグが設定されます:

    dotscrules:true;
    dotdistrib:true;
    dotexptsimp:false;

もし非結合代数で実験したいなら、 `dotassoc`を `false`に設定することも考えるかもしれません。 しかし、この場合、 `atensimp`はいつも 望みの整理を得ることができるわけではありません。

Tensors ·Share packages ·Package atensor ·

Next: Functions and Variables for atensor, Previous: atensor, Up: atensor [Contents][Index]