Next: Functions and Variables for atensor, Previous: atensor, Up: atensor [Contents][Index]
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
はいつも
望みの整理を得ることができるわけではありません。
Next: Functions and Variables for atensor, Previous: atensor, Up: atensor [Contents][Index]