[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# 27. atensor

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [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`はいつも望みの整理を得ることができるわけではありません。

Categories: Tensors · Share packages · Package atensor

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 27.2 Functions and Variables for atensor

関数: init_atensor
`init_atensor` (alg_type, opt_dims)
`init_atensor` (alg_type)

  特定の代数型で `atensor`パッケージを初期化します。 alg_typeは以下のいずれかであり得ます:

  `universal`: 普遍代数は交換規則を持ちません。

  `grassmann`: Grassman代数は交換関係 `u.v+v.u=0`で定義されます。

  `clifford`: Clifford代数は交換関係 `u.v+v.u=-2*sf(u,v)`で定義されます。 ここで `sf`は対称スカラ値函数です。 この代数では、 opt_dimsは代数の正の次元数、縮退次元数、負の次元数をそれぞれ表す 3つの非負整数までありえます。 もしいずれかの opt_dims値が供給されたら、 `atensor`は `adim`と `aform`の値を適切に構成します。 そうでないなら、 `adim`はデフォルトが 0で、 `aform`は未定義です。

  `symmetric`: 対称代数は交換関係 `u.v-v.u=0`で定義されます。

  `symplectic`: シンプレクティック代数は交換関係 `u.v-v.u=2*af(u,v)`で定義されます。 ここで `af`は反対称スカラ値函数です。 シンプレクティック代数では opt_dimsは非縮退次元数、縮退次元数をそれぞれ表す 2つの非負整数までありえます。 もしいずれかの opt_dims値が供給されたら、 `atensor`は `adim`と `aform`の値を適切に構成します。 そうでないなら `adim`はデフォルトが 0で、 `aform`は未定義です。

  `lie_envelop`: Lie包絡代数は交換関係 `u.v-v.u=2*av(u,v)`で定義されます。 ここで `av`は反対称函数です。

  `init_atensor`関数はいくつかの予め定義された代数型も認識します:

  `complex`は複素数代数を Clifford代数 Cl(0,1)として実装します。 `init_atensor(complex)`をコールすることは `init_atensor(clifford,0,0,1)`と同値です。

  `quaternion`は四元数代数を実装します。 `init_atensor (quaternion)`をコールすることは `init_atensor (clifford,0,0,2)`と同値です。

  `pauli`は Pauliスピノール代数を Clifford代数 Cl(3,0)として実装します。 `init_atensor(pauli)`をコールすることは `init_atensor(clifford,3)`と同値です。

  `dirac`は Diracスピノール代数を Clifford代数 Cl(3,1)として実装します。 `init_atensor(dirac)`をコールすることは `init_atensor(clifford,3,0,1)`と同値です。

  Categories: Package atensor

関数: atensimp (expr)

  `init_atensor`のコールで構成された規則に従って代数テンソル式 exprを整理します。 整理は、適用可能な場所への交換関係の再帰的な適用と `sf`, `af`, `av`のコールの分解 (resolving calls)を含みます。 複雑な式に関してさえ、保護手段を使い、関数がいつでも終了することを確実にします。

  Categories: Package atensor · Simplification functions

関数: alg_type

  代数型。有効な値は `universal`, `grassmann`, `clifford`, `symmetric`, `symplectic`, `lie_envelop`です。

  Categories: Package atensor

変数: adim

  デフォルト値: 0

  代数の次元。 `atensor`は添字付きオブジェクトが有効な基底ベクトルか決定するのに `adim`の値を使います。 `abasep`を参照してください。

  Categories: Package atensor · Global variables

変数: aform

  デフォルト値: `ident(3)`

  双一次形式`sf`, `af`, `av`のデフォルト値。 デフォルトは、単位行列 `ident(3)`です。

  Categories: Package atensor · Global variables

変数: asymbol

  デフォルト値: `v`

  基底ベクトルのシンボル。

  Categories: Package atensor · Global variables

関数: sf (u, v)

  交換関係で使われる対称スカラ関数。 デフォルトの実装は 両方の引数が `abasep`を使った基底ベクトルかチェックし、 もしそうなら行列 `aform`から対応する値を代入します。

  Categories: Package atensor

関数: af (u, v)

  交換関係で使われる反対称スカラ関数。 デフォルトの実装は 両方の引数が `abasep`を使った基底ベクトルかチェックし、 もしそうなら行列 `aform`から対応する値を代入します。

  Categories: Package atensor

関数: av (u, v)

  交換関係で使われる反対称スカラ関数。 デフォルトの実装は 両方の引数が`abasep`を使った基底ベクトルかチェックし、 もしそうなら行列 `aform`から対応する値を代入します。

  例えば:

      (%i1) load(atensor);
      (%o1)       /share/tensor/atensor.mac
      (%i2) adim:3;
      (%o2)                                  3
      (%i3) aform:matrix([0,3,-2],[-3,0,1],[2,-1,0]);
                                     [  0    3   - 2 ]
                                     [               ]
      (%o3)                          [ - 3   0    1  ]
                                     [               ]
                                     [  2   - 1   0  ]
      (%i4) asymbol:x;
      (%o4)                                  x
      (%i5) av(x[1],x[2]);
      (%o5)                                 x
                                             3

  Categories: Package atensor

関数: abasep (v)

  引数が `atensor`基底ベクトルかチェックします。 すなわち、それが添字付きシンボルかどうか、 `asymbol`の値と同じシンボルを持つかどうか、 そして、1から `adim`までの間の数値の添字を持つどうかチェックします。

  Categories: Package atensor · Predicate functions

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.