[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
27.1 Introduction to atensor | ||
27.2 Functions and Variables for atensor |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [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
はいつも望みの整理を得ることができるわけではありません。
Categories: Tensors · Share packages · Package atensor
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [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)
と同値です。
Categories: Package atensor
init_atensor
のコールで構成された規則に従って代数テンソル式
exprを整理します。
整理は、適用可能な場所への交換関係の再帰的な適用と
sf
, af
, av
のコールの分解 (resolving calls)を含みます。
複雑な式に関してさえ、保護手段を使い、関数がいつでも終了することを確実にします。
Categories: Package atensor · Simplification functions
代数型。有効な値は universal
, grassmann
,
clifford
, symmetric
, symplectic
, lie_envelop
です。
Categories: Package atensor
デフォルト値: 0
代数の次元。
atensor
は添字付きオブジェクトが有効な基底ベクトルか決定するのに
adim
の値を使います。
abasep
を参照してください。
Categories: Package atensor · Global variables
デフォルト値: ident(3)
双一次形式sf
, af
, av
のデフォルト値。
デフォルトは、単位行列 ident(3)
です。
Categories: Package atensor · Global variables
デフォルト値: v
基底ベクトルのシンボル。
Categories: Package atensor · Global variables
交換関係で使われる対称スカラ関数。
デフォルトの実装は
両方の引数が abasep
を使った基底ベクトルかチェックし、
もしそうなら行列 aform
から対応する値を代入します。
Categories: Package atensor
交換関係で使われる反対称スカラ関数。
デフォルトの実装は
両方の引数が abasep
を使った基底ベクトルかチェックし、
もしそうなら行列 aform
から対応する値を代入します。
Categories: Package atensor
交換関係で使われる反対称スカラ関数。
デフォルトの実装は
両方の引数が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
引数が 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.