Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / ja / Atensor.texi
blob3238dbbfc5e7d9ac077f82aa6836d891e0bd0856
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}
108 @category{Share packages}
109 @category{Package atensor}
110 @closecatbox
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})
120 特定の代数型で
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}値が供給されたら、
134 @code{atensor}は
135 @code{adim}と @code{aform}の値を適切に構成します。
136 そうでなければ、
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}は反対称スカラ値函数です。
144 シンプレクティック代数では、
145 @var{opt_dims}は
146 非縮退次元数、縮退次元数をそれぞれ表す2つの非負整数までありえます。
147 もしいずれかの @var{opt_dims}値が供給されたら、
148 @code{atensor}は
149 @code{adim}と @code{aform}の値を適切に構成します。
150 そうでなければ、
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)}と同値です。
174 @opencatbox
175 @category{Package atensor}
176 @closecatbox
177 @end deffn
180 @deffn {関数} atensimp (@var{expr})
182 @code{init_atensor}のコールで構成された規則に従って、
183 代数テンソル式 @var{expr}を整理します。
184 整理は、
185 適用可能な場所への
186 交換関係の再帰的な適用と@code{sf}, @code{af}, @code{av}のコールの決定を含みます。
187 複雑な式に関してさえ、
188 関数がいつでも終了することを確実にするために
189 保護手段が使われます。
191 @opencatbox
192 @category{Package atensor}
193 @category{Simplification functions}
194 @closecatbox
196 @end deffn
198 @c @deffn {関数} alg_type
199 @c 
200 @c 代数型。有効な値は @code{universal}, @code{grassmann},
201 @c @code{clifford}, @code{symmetric}, @code{symplectic}, @code{lie_envelop}です。
202 @c 
203 @c @opencatbox
204 @c @category{Package atensor}
205 @c @closecatbox
206 @c 
207 @c @end deffn
209 @defvr {変数} adim
210 デフォルト値: 0
212 代数の次元。
213 @code{atensor}は
214 添字付きオブジェクトが有効な基底ベクトルか決定するのに
215 @code{adim}の値を使います。
216 @code{abasep}を参照してください。
218 @opencatbox
219 @category{Package atensor}
220 @category{Global variables}
221 @closecatbox
223 @end defvr
225 @defvr {変数} aform
226 デフォルト値: @code{ident(3)}
228 双一次形式@code{sf}, @code{af}, @code{av}のデフォルト値。
229 デフォルトは、単位行列 @code{ident(3)}です。
231 @opencatbox
232 @category{Package atensor}
233 @category{Global variables}
234 @closecatbox
236 @end defvr
238 @defvr {変数} asymbol
239 デフォルト値: @code{v}
241 基底ベクトルのシンボル。
243 @opencatbox
244 @category{Package atensor}
245 @category{Global variables}
246 @closecatbox
248 @end defvr
250 @deffn {関数} sf (@var{u}, @var{v})
252 交換関係で使われる対称スカラ関数。
253 デフォルトの実装は
254 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
255 もしそうなら、行列 @code{aform}から対応する値を代入します。
257 @opencatbox
258 @category{Package atensor}
259 @closecatbox
261 @end deffn
263 @deffn {関数} af (@var{u}, @var{v})
265 交換関係で使われる反対称スカラ関数。
266 デフォルトの実装は
267 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
268 もしそうなら、行列 @code{aform}から対応する値を代入します。
270 @opencatbox
271 @category{Package atensor}
272 @closecatbox
274 @end deffn
276 @deffn {関数} av (@var{u}, @var{v})
278 交換関係で使われる反対称スカラ関数。
279 デフォルトの実装は
280 両方の引数が@code{abasep}を使った基底ベクトルかチェックし、
281 もしそうなら、行列 @code{aform}から対応する値を代入します。
283 例えば:
285 @example
286 (%i1) load("atensor");
287 (%o1)       /share/tensor/atensor.mac
288 (%i2) adim:3;
289 (%o2)                                  3
290 (%i3) aform:matrix([0,3,-2],[-3,0,1],[2,-1,0]);
291                                [  0    3   - 2 ]
292                                [               ]
293 (%o3)                          [ - 3   0    1  ]
294                                [               ]
295                                [  2   - 1   0  ]
296 (%i4) asymbol:x;
297 (%o4)                                  x
298 (%i5) av(x[1],x[2]);
299 (%o5)                                 x
300                                        3
301 @end example
303 @opencatbox
304 @category{Package atensor}
305 @closecatbox
307 @end deffn
310 @deffn {関数} abasep (@var{v})
312 引数が @code{atensor}基底ベクトルかチェックします。
313 すなわち、@code{asymbol}の値と同じシンボルと
314 1と @code{adim}の間の数値の添字を持つ添字付きシンボルかどうか、チェックします。
316 @opencatbox
317 @category{Package atensor}
318 @category{Predicate functions}
319 @closecatbox
321 @end deffn