2 * Introduction to atensor::
3 * Functions and Variables for atensor::
6 @node Introduction to atensor, Functions and Variables for atensor, atensor, atensor
7 @section Introduction to atensor
9 @code{atensor}は、代数テンソル操作パッケージです。
10 @code{atensor}を使うには、@code{load(atensor)}をタイプしてください。
11 続いて、@code{init_atensor}関数コールしてください。
13 @code{atensor}の本質は非可換(ドット)積演算子 ("@code{.}")の整理ルール一式です
14 @code{atensor}はいくつかの代数型を認識します;
15 @code{init_atensor}関数がコールされた時、
19 四元数代数を2つの基底ベクトルを持つClifford代数 Cl(0,2)として
21 3つの四元数虚数単位は2つの基底ベクトルとその積、すなわち以下の通りです:
29 四元数代数に関する組み込みの定義を持ちますが、
30 この例では使わず、四元数乗算表を行列として組むよう試みます:
34 (%o1) /share/tensor/atensor.mac
35 (%i2) init_atensor(clifford,0,0,2);
37 (%i3) atensimp(v[1].v[1]);
39 (%i4) atensimp((v[1].v[2]).(v[1].v[2]));
41 (%i5) q:zeromatrix(4,4);
51 (%i7) for i thru adim do q[1,i+1]:q[i+1,1]:v[i];
53 (%i8) q[1,4]:q[4,1]:v[1].v[2];
56 (%i9) for i from 2 thru 4 do for j from 2 thru 4 do
57 q[i,j]:atensimp(q[i,1].q[1,j]);
76 添字付きシンボルを基底ベクトルと認識します。
77 シンボルは@code{asymbol}の中に記憶されたものであり、
78 添字は1から@code{adim}まで間です。
81 @code{sf}, @code{af}, @code{av}が評価されます。
83 @code{fun(v[i],v[j])}に
84 @code{aform[i,j]}の値を代入します
85 ここで、@code{v}は @code{asymbol}の値を表し、
86 @code{fun}は @code{af}か @code{sf}を示します;
88 @code{av(v[i],v[j])}に @code{v[aform[i,j]]}を代入します。
90 言うまでもなく、関数 @code{sf}, @code{af}, @code{av}は再定義するこができます。
92 @code{atensor}パッケージがロードされる時、以下のフラグが設定されます:
101 @code{dotassoc}を @code{false}に設定することも考えるかもしれません。
104 望みの整理を得ることができるわけではありません。
107 @category{Tensors} @category{Share packages} @category{Package atensor}
110 @c end concepts atensor
111 @node Functions and Variables for atensor, , Introduction to atensor, atensor
113 @section Functions and Variables for atensor
115 @deffn {関数} init_atensor (@var{alg_type}, @var{opt_dims})
116 @deffnx {関数} init_atensor (@var{alg_type})
119 @code{atensor}パッケージを初期化します。
120 @var{alg_type}は以下のいずれかであり得ます:
122 @code{universal}: 普遍代数は交換規則を持ちません。
124 @code{grassmann}: Grassman代数は交換関係 @code{u.v+v.u=0}で定義されます。
126 @code{clifford}: Clifford代数は
127 交換関係 @code{u.v+v.u=-2*sf(u,v)}で定義されます。
128 ここで、 @code{sf}は対称スカラ値函数です。
129 この代数では、 @var{opt_dims}は、
130 代数の正の次元数、縮退次元数、負の次元数をそれぞれ表す3つの非負整数までありえます。
131 もしいずれかの @var{opt_dims}値が供給されたら、
133 @code{adim}と @code{aform}の値を適切に構成します。
135 @code{adim}はデフォルトが0で、 @code{aform}は未定義です。
137 @code{symmetric}: 対称代数は交換関係 @code{u.v-v.u=0}で定義されます。
139 @code{symplectic}: シンプレクティック代数は
140 交換関係 @code{u.v-v.u=2*af(u,v)}で定義されます。
141 ここで、 @code{af}は反対称スカラ値函数です。
144 非縮退次元数、縮退次元数をそれぞれ表す2つの非負整数までありえます。
145 もしいずれかの @var{opt_dims}値が供給されたら、
147 @code{adim}と @code{aform}の値を適切に構成します。
149 @code{adim}はデフォルトが0で、 @code{aform}は未定義です。
151 @code{lie_envelop}: Lie包絡代数は交換関係 @code{u.v-v.u=2*av(u,v)}で定義されます。
152 ここで、 @code{av}は反対称函数です。
154 @code{init_atensor}関数はいくつかの予め定義された代数型も認識します:
156 @code{complex}は複素数代数をClifford代数 Cl(0,1)として実装します。
157 @code{init_atensor(complex)}をコールすることは
158 @code{init_atensor(clifford,0,0,1)}と同値です。
160 @code{quaternion}は四元数代数を実装します。
161 @code{init_atensor (quaternion)}をコールすることは
162 @code{init_atensor (clifford,0,0,2)}と同値です。
164 @code{pauli}はPauliスピノール代数をClifford代数 Cl(3,0)として実装します。
165 @code{init_atensor(pauli)}をコールすることは
166 @code{init_atensor(clifford,3)}と同値です。
168 @code{dirac}はDiracスピノール代数をClifford代数 Cl(3,1)として実装します。
169 @code{init_atensor(dirac)}をコールすることは
170 @code{init_atensor(clifford,3,0,1)}と同値です。
173 @category{Package atensor}
178 @deffn {関数} atensimp (@var{expr})
180 @code{init_atensor}のコールで構成された規則に従って、
181 代数テンソル式 @var{expr}を整理します。
184 交換関係の再帰的な適用と@code{sf}, @code{af}, @code{av}のコールの決定を含みます。
186 関数がいつでも終了することを確実にするために
190 @category{Package atensor} @category{Simplification functions}
195 @c @deffn {関数} alg_type
197 @c 代数型。有効な値は @code{universal}, @code{grassmann},
198 @c @code{clifford}, @code{symmetric}, @code{symplectic}, @code{lie_envelop}です。
201 @c @category{Package atensor}
211 添字付きオブジェクトが有効な基底ベクトルか決定するのに
213 @code{abasep}を参照してください。
216 @category{Package atensor} @category{Global variables}
222 デフォルト値: @code{ident(3)}
224 双一次形式@code{sf}, @code{af}, @code{av}のデフォルト値。
225 デフォルトは、単位行列 @code{ident(3)}です。
228 @category{Package atensor} @category{Global variables}
239 @category{Package atensor} @category{Global variables}
244 @deffn {関数} sf (@var{u}, @var{v})
248 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
249 もしそうなら、行列 @code{aform}から対応する値を代入します。
252 @category{Package atensor}
257 @deffn {関数} af (@var{u}, @var{v})
261 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
262 もしそうなら、行列 @code{aform}から対応する値を代入します。
265 @category{Package atensor}
270 @deffn {関数} av (@var{u}, @var{v})
274 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
275 もしそうなら、行列 @code{aform}から対応する値を代入します。
281 (%o1) /share/tensor/atensor.mac
284 (%i3) aform:matrix([0,3,-2],[-3,0,1],[2,-1,0]);
298 @category{Package atensor}
304 @deffn {関数} abasep (@var{v})
306 引数が @code{atensor}基底ベクトルかチェックします。
307 すなわち、@code{asymbol}の値と同じシンボルと
308 1と @code{adim}の間の数値の添字を持つ添字付きシンボルかどうか、チェックします。
311 @category{Package atensor} @category{Predicate functions}