Examples cleanup
[maxima.git] / doc / info / ja / Atensor.texi
blob53ce66b618f20c8e46724dfb9b75a00510be11a6
1 @menu
2 * Introduction to atensor::
3 * Functions and Variables for atensor::
4 @end menu
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}関数がコールされた時、
16 対応する整理ルールが有効になります。
18 @code{atensor}の能力は、
19 四元数代数を2つの基底ベクトルを持つClifford代数 Cl(0,2)として
20 定義することで実演することができます。
21 3つの四元数虚数単位は2つの基底ベクトルとその積、すなわち以下の通りです:
23 @example
24     i = v     j = v     k = v  . v
25          1         2         1    2
26 @end example
28 @code{atensor}パッケージは
29 四元数代数に関する組み込みの定義を持ちますが、
30 この例では使わず、四元数乗算表を行列として組むよう試みます:
32 @example
33 (%i1) load(atensor);
34 (%o1)       /share/tensor/atensor.mac
35 (%i2) init_atensor(clifford,0,0,2);
36 (%o2)                                done
37 (%i3) atensimp(v[1].v[1]);
38 (%o3)                                 - 1
39 (%i4) atensimp((v[1].v[2]).(v[1].v[2]));
40 (%o4)                                 - 1
41 (%i5) q:zeromatrix(4,4);
42                                 [ 0  0  0  0 ]
43                                 [            ]
44                                 [ 0  0  0  0 ]
45 (%o5)                           [            ]
46                                 [ 0  0  0  0 ]
47                                 [            ]
48                                 [ 0  0  0  0 ]
49 (%i6) q[1,1]:1;
50 (%o6)                                  1
51 (%i7) for i thru adim do q[1,i+1]:q[i+1,1]:v[i];
52 (%o7)                                done
53 (%i8) q[1,4]:q[4,1]:v[1].v[2];
54 (%o8)                               v  . v
55                                      1    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]);
58 (%o9)                                done
59 (%i10) q;
60 @group
61                    [    1        v         v      v  . v  ]
62                    [              1         2      1    2 ]
63                    [                                      ]
64                    [   v         - 1     v  . v    - v    ]
65                    [    1                 1    2      2   ]
66 (%o10)             [                                      ]
67                    [   v      - v  . v     - 1      v     ]
68                    [    2        1    2              1    ]
69                    [                                      ]
70                    [ v  . v      v        - v       - 1   ]
71                    [  1    2      2          1            ]
72 @end group
73 @end example
75 @code{atensor}は
76 添字付きシンボルを基底ベクトルと認識します。
77 シンボルは@code{asymbol}の中に記憶されたものであり、
78 添字は1から@code{adim}まで間です。
79 添字付きシンボルだけに関して
80 双一次形式
81 @code{sf}, @code{af}, @code{av}が評価されます。
82 評価は
83 @code{fun(v[i],v[j])}に
84 @code{aform[i,j]}の値を代入します
85 ここで、@code{v}は @code{asymbol}の値を表し、
86 @code{fun}は @code{af}か @code{sf}を示します;
87 あるいは、
88 @code{av(v[i],v[j])}に @code{v[aform[i,j]]}を代入します。
90 言うまでもなく、関数 @code{sf}, @code{af}, @code{av}は再定義するこができます。
92 @code{atensor}パッケージがロードされる時、以下のフラグが設定されます:
94 @example
95 dotscrules:true;
96 dotdistrib:true;
97 dotexptsimp:false;
98 @end example
100 もし非結合代数で実験したいなら、
101 @code{dotassoc}を @code{false}に設定することも考えるかもしれません。
102 しかし、この場合、
103 @code{atensimp}はいつも
104 望みの整理を得ることができるわけではありません。
106 @opencatbox
107 @category{Tensors} @category{Share packages} @category{Package atensor}
108 @closecatbox
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})
118 特定の代数型で
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}値が供給されたら、
132 @code{atensor}は
133 @code{adim}と @code{aform}の値を適切に構成します。
134 そうでなければ、
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}は反対称スカラ値函数です。
142 シンプレクティック代数では、
143 @var{opt_dims}は
144 非縮退次元数、縮退次元数をそれぞれ表す2つの非負整数までありえます。
145 もしいずれかの @var{opt_dims}値が供給されたら、
146 @code{atensor}は
147 @code{adim}と @code{aform}の値を適切に構成します。
148 そうでなければ、
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)}と同値です。
172 @opencatbox
173 @category{Package atensor}
174 @closecatbox
175 @end deffn
178 @deffn {関数} atensimp (@var{expr})
180 @code{init_atensor}のコールで構成された規則に従って、
181 代数テンソル式 @var{expr}を整理します。
182 整理は、
183 適用可能な場所への
184 交換関係の再帰的な適用と@code{sf}, @code{af}, @code{av}のコールの決定を含みます。
185 複雑な式に関してさえ、
186 関数がいつでも終了することを確実にするために
187 保護手段が使われます。
189 @opencatbox
190 @category{Package atensor} @category{Simplification functions}
191 @closecatbox
193 @end deffn
195 @c @deffn {関数} alg_type
196 @c 
197 @c 代数型。有効な値は @code{universal}, @code{grassmann},
198 @c @code{clifford}, @code{symmetric}, @code{symplectic}, @code{lie_envelop}です。
199 @c 
200 @c @opencatbox
201 @c @category{Package atensor}
202 @c @closecatbox
203 @c 
204 @c @end deffn
206 @defvr {変数} adim
207 デフォルト値: 0
209 代数の次元。
210 @code{atensor}は
211 添字付きオブジェクトが有効な基底ベクトルか決定するのに
212 @code{adim}の値を使います。
213 @code{abasep}を参照してください。
215 @opencatbox
216 @category{Package atensor} @category{Global variables}
217 @closecatbox
219 @end defvr
221 @defvr {変数} aform
222 デフォルト値: @code{ident(3)}
224 双一次形式@code{sf}, @code{af}, @code{av}のデフォルト値。
225 デフォルトは、単位行列 @code{ident(3)}です。
227 @opencatbox
228 @category{Package atensor} @category{Global variables}
229 @closecatbox
231 @end defvr
233 @defvr {変数} asymbol
234 デフォルト値: @code{v}
236 基底ベクトルのシンボル。
238 @opencatbox
239 @category{Package atensor} @category{Global variables}
240 @closecatbox
242 @end defvr
244 @deffn {関数} sf (@var{u}, @var{v})
246 交換関係で使われる対称スカラ関数。
247 デフォルトの実装は
248 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
249 もしそうなら、行列 @code{aform}から対応する値を代入します。
251 @opencatbox
252 @category{Package atensor}
253 @closecatbox
255 @end deffn
257 @deffn {関数} af (@var{u}, @var{v})
259 交換関係で使われる反対称スカラ関数。
260 デフォルトの実装は
261 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
262 もしそうなら、行列 @code{aform}から対応する値を代入します。
264 @opencatbox
265 @category{Package atensor}
266 @closecatbox
268 @end deffn
270 @deffn {関数} av (@var{u}, @var{v})
272 交換関係で使われる反対称スカラ関数。
273 デフォルトの実装は
274 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
275 もしそうなら、行列 @code{aform}から対応する値を代入します。
277 例えば:
279 @example
280 (%i1) load(atensor);
281 (%o1)       /share/tensor/atensor.mac
282 (%i2) adim:3;
283 (%o2)                                  3
284 (%i3) aform:matrix([0,3,-2],[-3,0,1],[2,-1,0]);
285                                [  0    3   - 2 ]
286                                [               ]
287 (%o3)                          [ - 3   0    1  ]
288                                [               ]
289                                [  2   - 1   0  ]
290 (%i4) asymbol:x;
291 (%o4)                                  x
292 (%i5) av(x[1],x[2]);
293 (%o5)                                 x
294                                        3
295 @end example
297 @opencatbox
298 @category{Package atensor}
299 @closecatbox
301 @end deffn
304 @deffn {関数} abasep (@var{v})
306 引数が @code{atensor}基底ベクトルかチェックします。
307 すなわち、@code{asymbol}の値と同じシンボルと
308 1と @code{adim}の間の数値の添字を持つ添字付きシンボルかどうか、チェックします。
310 @opencatbox
311 @category{Package atensor} @category{Predicate functions}
312 @closecatbox
314 @end deffn