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 この例では使わず、四元数乗算表を行列として組むよう試みます:
33 (%i1) load("atensor");
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 望みの整理を得ることができるわけではありません。
108 @category{Share packages}
109 @category{Package atensor}
112 @c end concepts atensor
113 @node Functions and Variables for atensor, , Introduction to atensor, atensor
115 @section Functions and Variables for atensor
117 @deffn {関数} init_atensor (@var{alg_type}, @var{opt_dims})
118 @deffnx {関数} init_atensor (@var{alg_type})
121 @code{atensor}パッケージを初期化します。
122 @var{alg_type}は以下のいずれかであり得ます:
124 @code{universal}: 普遍代数は交換規則を持ちません。
126 @code{grassmann}: Grassman代数は交換関係 @code{u.v+v.u=0}で定義されます。
128 @code{clifford}: Clifford代数は
129 交換関係 @code{u.v+v.u=-2*sf(u,v)}で定義されます。
130 ここで、 @code{sf}は対称スカラ値函数です。
131 この代数では、 @var{opt_dims}は、
132 代数の正の次元数、縮退次元数、負の次元数をそれぞれ表す3つの非負整数までありえます。
133 もしいずれかの @var{opt_dims}値が供給されたら、
135 @code{adim}と @code{aform}の値を適切に構成します。
137 @code{adim}はデフォルトが0で、 @code{aform}は未定義です。
139 @code{symmetric}: 対称代数は交換関係 @code{u.v-v.u=0}で定義されます。
141 @code{symplectic}: シンプレクティック代数は
142 交換関係 @code{u.v-v.u=2*af(u,v)}で定義されます。
143 ここで、 @code{af}は反対称スカラ値函数です。
146 非縮退次元数、縮退次元数をそれぞれ表す2つの非負整数までありえます。
147 もしいずれかの @var{opt_dims}値が供給されたら、
149 @code{adim}と @code{aform}の値を適切に構成します。
151 @code{adim}はデフォルトが0で、 @code{aform}は未定義です。
153 @code{lie_envelop}: Lie包絡代数は交換関係 @code{u.v-v.u=2*av(u,v)}で定義されます。
154 ここで、 @code{av}は反対称函数です。
156 @code{init_atensor}関数はいくつかの予め定義された代数型も認識します:
158 @code{complex}は複素数代数をClifford代数 Cl(0,1)として実装します。
159 @code{init_atensor(complex)}をコールすることは
160 @code{init_atensor(clifford,0,0,1)}と同値です。
162 @code{quaternion}は四元数代数を実装します。
163 @code{init_atensor (quaternion)}をコールすることは
164 @code{init_atensor (clifford,0,0,2)}と同値です。
166 @code{pauli}はPauliスピノール代数をClifford代数 Cl(3,0)として実装します。
167 @code{init_atensor(pauli)}をコールすることは
168 @code{init_atensor(clifford,3)}と同値です。
170 @code{dirac}はDiracスピノール代数をClifford代数 Cl(3,1)として実装します。
171 @code{init_atensor(dirac)}をコールすることは
172 @code{init_atensor(clifford,3,0,1)}と同値です。
175 @category{Package atensor}
180 @deffn {関数} atensimp (@var{expr})
182 @code{init_atensor}のコールで構成された規則に従って、
183 代数テンソル式 @var{expr}を整理します。
186 交換関係の再帰的な適用と@code{sf}, @code{af}, @code{av}のコールの決定を含みます。
188 関数がいつでも終了することを確実にするために
192 @category{Package atensor}
193 @category{Simplification functions}
198 @c @deffn {関数} alg_type
200 @c 代数型。有効な値は @code{universal}, @code{grassmann},
201 @c @code{clifford}, @code{symmetric}, @code{symplectic}, @code{lie_envelop}です。
204 @c @category{Package atensor}
214 添字付きオブジェクトが有効な基底ベクトルか決定するのに
216 @code{abasep}を参照してください。
219 @category{Package atensor}
220 @category{Global variables}
226 デフォルト値: @code{ident(3)}
228 双一次形式@code{sf}, @code{af}, @code{av}のデフォルト値。
229 デフォルトは、単位行列 @code{ident(3)}です。
232 @category{Package atensor}
233 @category{Global variables}
244 @category{Package atensor}
245 @category{Global variables}
250 @deffn {関数} sf (@var{u}, @var{v})
254 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
255 もしそうなら、行列 @code{aform}から対応する値を代入します。
258 @category{Package atensor}
263 @deffn {関数} af (@var{u}, @var{v})
267 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
268 もしそうなら、行列 @code{aform}から対応する値を代入します。
271 @category{Package atensor}
276 @deffn {関数} av (@var{u}, @var{v})
280 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
281 もしそうなら、行列 @code{aform}から対応する値を代入します。
286 (%i1) load("atensor");
287 (%o1) /share/tensor/atensor.mac
290 (%i3) aform:matrix([0,3,-2],[-3,0,1],[2,-1,0]);
304 @category{Package atensor}
310 @deffn {関数} abasep (@var{v})
312 引数が @code{atensor}基底ベクトルかチェックします。
313 すなわち、@code{asymbol}の値と同じシンボルと
314 1と @code{adim}の間の数値の添字を持つ添字付きシンボルかどうか、チェックします。
317 @category{Package atensor}
318 @category{Predicate functions}