Next: Sums, Products, and Series, Previous: ctensor [Contents][Index]
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
はいつも
望みの整理を得ることができるわけではありません。
Previous: Introduction to atensor, Up: atensor [Contents][Index]
特定の代数型で
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)
と同値です。
init_atensor
のコールで構成された規則に従って、
代数テンソル式 exprを整理します。
整理は、
適用可能な場所への
交換関係の再帰的な適用とsf
, af
, av
のコールの決定を含みます。
複雑な式に関してさえ、
関数がいつでも終了することを確実にするために
保護手段が使われます。
デフォルト値: 0
代数の次元。
atensor
は
添字付きオブジェクトが有効な基底ベクトルか決定するのに
adim
の値を使います。
abasep
を参照してください。
デフォルト値: ident(3)
双一次形式sf
, af
, av
のデフォルト値。
デフォルトは、単位行列 ident(3)
です。
デフォルト値: v
基底ベクトルのシンボル。
交換関係で使われる対称スカラ関数。
デフォルトの実装は
両方の引数がabasep
を使った基底ベクトルかチェックし、
もしそうなら、行列 aform
から対応する値を代入します。
交換関係で使われる反対称スカラ関数。
デフォルトの実装は
両方の引数がabasep
を使った基底ベクトルかチェックし、
もしそうなら、行列 aform
から対応する値を代入します。
交換関係で使われる反対称スカラ関数。
デフォルトの実装は
両方の引数が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
引数が atensor
基底ベクトルかチェックします。
すなわち、asymbol
の値と同じシンボルと
1と adim
の間の数値の添字を持つ添字付きシンボルかどうか、チェックします。
Next: Sums, Products, and Series, Previous: ctensor [Contents][Index]