[ < ] [ > ]   [ << ] [ 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]の値が代入されます。 ここで vasymbolの値を表し、 funafsfを示します; また、 av(v[i],v[j])v[aform[i,j]]が代入されます。

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

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

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

もし非結合代数で実験したいなら、 dotassocfalseに設定することも考えるかもしれません。 しかし、この場合、 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値が供給されたら、 atensoradimaformの値を適切に構成します。 そうでないなら、 adimはデフォルトが 0で、 aformは未定義です。

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

symplectic: シンプレクティック代数は交換関係 u.v-v.u=2*af(u,v)で定義されます。 ここで afは反対称スカラ値函数です。 シンプレクティック代数では opt_dimsは非縮退次元数、縮退次元数をそれぞれ表す 2つの非負整数までありえます。 もしいずれかの opt_dims値が供給されたら、 atensoradimaformの値を適切に構成します。 そうでないなら 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)を含みます。 複雑な式に関してさえ、保護手段を使い、関数がいつでも終了することを確実にします。

関数: 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までの間の数値の添字を持つどうかチェックします。


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

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