Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / ja / Simplification.texi
blobd9862830d4f984fbde314aac6f44ef70abd58f74
1 @c end concepts Simplification
2 @menu
3 * Functions and Variables for Simplification::  
4 @end menu
6 @c -----------------------------------------------------------------------------
7 @node Functions and Variables for Simplification,  , Simplification, Simplification
8 @section Functions and Variables for Simplification
9 @c -----------------------------------------------------------------------------
11 @c -----------------------------------------------------------------------------
12 @anchor{additive}
13 @defvr {キーワード} additive
15 もし@code{declare(f, additive)}が実行されると:
17 (1) もし@code{f}が1変数関数なら、@code{f}が和に適用された時はいつでも、
18 @code{f}は和の上に分配整理されます。
19 例えば、@code{f(y+x)}は、@code{f(y)+f(x)}に整理されます。
21 (2) もし@code{f}が2変数以上の関数なら、
22 @code{sum}や@code{integrate}の場合と同様に
23 加法性が第一番目の引数に対して定義されます。
24 例えば、@code{f(h(x)+g(x),x)}は@code{f(h(x),x)+f(g(x),x)}に整理されます。
25 @code{f}が@code{sum(x[i],i,lower-limit,upper-limit)}の形の式に適用されたときには
26 この整理はされません。
28 @opencatbox
29 @category{Operators}
30 @category{Declarations and inferences}
31 @closecatbox
32 @end defvr
34 @c -----------------------------------------------------------------------------
35 @anchor{antisymmetric}
36 @defvr {宣言} antisymmetric
37 もし@code{declare(h,antisymmetric)}が実行されると、
38 @code{h}は反対称として整理されます。
39 例えば、@code{h(x,z,y)}は@code{-h(x,y,z)}と整理されます。
40 即ち、@code{symmetric}か@code{commutative}で得られた結果に(-1)^nを掛けたものとなります。
41 ここで、nはその形に変換するのに必要な置換の回数です。
43 @opencatbox
44 @category{Operators}
45 @category{Declarations and inferences}
46 @closecatbox
47 @end defvr
49 @c -----------------------------------------------------------------------------
50 @deffn {関数} combine (@var{expr})
51 同じ分母を持つ項を単一の項に結合することによって和@var{expr}を整理します。
53 @c NEED EXAMPLE HERE
54 @opencatbox
55 @category{Expressions}
56 @closecatbox
57 @end deffn
59 @c -----------------------------------------------------------------------------
60 @anchor{commutative}
61 @defvr {宣言} commutative
63 もし@code{declare(h,commutative)}が実行されたなら、
64 @code{h}は可換関数として整理されます。
65 例えば、@code{h(x,z,y)}は@code{h(x,y,z)}に整理されます。
66 これは@code{symmetric}と同じです。
68 @opencatbox
69 @category{Operators}
70 @category{Declarations and inferences}
71 @closecatbox
72 @end defvr
74 @c NEEDS CLARIFICATION, EXAMPLES
76 @c -----------------------------------------------------------------------------
77 @anchor{demoivre}
78 @deffn  {関数} demoivre (@var{expr})
79 @deffnx {オプション変数} demoivre
81 関数@code{demoivre (expr)}は、
82 グローバル変数@code{demoivre}を設定することなしに式を変換します。
84 変数@code{demoivre}が@code{true}の時、
85 複素数の指数関数は、円関数の項で表した同値な式に変換されます:
86 もし@code{b}が@code{%i}を含まなければ、
87 @code{exp (a + b*%i)}は、@code{%e^a * (cos(b) + %i*sin(b))}に整理されます。
88 @code{a}と@code{b}は展開されません。
90 @code{demoivre}のデフォルト値は@code{false}です。
92 @code{exponentialize}は、円関数や双曲関数を指数関数形に変換します。
93 @code{demoivre}と@code{exponentialize}は、同時に両方trueにはできません。
95 @opencatbox
96 @category{Complex variables}
97 @category{Trigonometric functions}
98 @category{Hyperbolic functions}
99 @closecatbox
100 @end deffn
102 @c NEEDS WORK
104 @c -----------------------------------------------------------------------------
105 @anchor{function_distrib}
106 @deffn {関数} distrib (@var{expr})
108 和を積上に分配します。
109 式のトップレベルのみで働き、すなわち、再帰的でなく、
110 @code{expand}より速い点で、@code{expand}とは違います。
111 トップレベルの和すべてを展開する点で、@code{multthru}とは違います。
113 例:
115 @example
116 (%i1) distrib ((a+b) * (c+d));
117 (%o1)                 b d + a d + b c + a c
118 (%i2) multthru ((a+b) * (c+d));
119 (%o2)                 (b + a) d + (b + a) c
120 (%i3) distrib (1/((a+b) * (c+d)));
121                                 1
122 (%o3)                    ---------------
123                          (b + a) (d + c)
124 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
125                                 1
126 (%o4)                 ---------------------
127                       b d + a d + b c + a c
128 @end example
130 @opencatbox
131 @category{Expressions}
132 @closecatbox
133 @end deffn
135 @c -----------------------------------------------------------------------------
136 @anchor{distribute_over}
137 @defvr {オプション変数} distribute_over
138 デフォルト値: @code{true}
140 @code{distribute_over}は、
141 リストや行列や等式のようなバッグ(重複を許す集合)上の関数のマッピングを制御します。
142 今回、すべてのMaxima関数がこのプロパティを持つ訳ではありません。
143 このプロパティはコマンド@code{properties}で調べることが可能です。
145 @code{distribute_over}を値@code{false}に設定した時、
146 関数のマッピングはオフにスイッチされます。
148 例:
150 @code{sin}関数はリスト上にマップします:
152 @c ===beg===
153 @c sin([x,1,1.0]);
154 @c ===end===
155 @example
156 (%i1) sin([x,1,1.0]);
157 (%o1)                 [sin(x), sin(1), .8414709848078965]
158 @end example
160 @code{mod}は
161 リスト上にマップされる2変数関数です。
162 入れ子のリスト上のマッピングも可能です:
164 @c ===beg===
165 @c mod([x,11,2*a],10);
166 @c mod([[x,y,z],11,2*a],10);
167 @c ===end===
168 @example
169 (%i2) mod([x,11,2*a],10);
170 (%o2)                    [mod(x, 10), 1, 2 mod(a, 5)]
171 (%i3) mod([[x,y,z],11,2*a],10);
172 (%o3)       [[mod(x, 10), mod(y, 10), mod(z, 10)], 1, 2 mod(a, 5)]
173 @end example
175 @code{floor}関数の行列や等式上のマッピング:
177 @c ===beg===
178 @c floor(matrix([a,b],[c,d]));
179 @c floor(a=b);
180 @c ===end===
181 @example
182 (%i4) floor(matrix([a,b],[c,d]));
183                             [ floor(a)  floor(b) ]
184 (%o4)                       [                    ]
185                             [ floor(c)  floor(d) ]
186 (%i5) floor(a=b);
187 (%o5)                         floor(a) = floor(b)
188 @end example
190 1変数以上の関数は、任意の引数上、または、すべての引数上にマップします:
192 @c ===beg===
193 @c expintegral_e([1,2],[x,y]);
194 @c ===end===
195 @example
196 (%i6) expintegral_e([1,2],[x,y]);
197 (%o6) [[expintegral_e(1, x), expintegral_e(1, y)], 
198        [expintegral_e(2, x), expintegral_e(2, y)]]
199 @end example
201 関数がプロパティdistribute_overを持つかチェックします:
203 @c ===beg===
204 @c properties(abs);
205 @c ===end===
206 @example
207 (%i7) properties(abs);
208 (%o7) [integral, distributes over bags, noun, rule, gradef]
209 @end example
211 @opencatbox
212 @category{Simplification flags and variables}
213 @closecatbox
214 @end defvr
216 @c -----------------------------------------------------------------------------
217 @anchor{domain}
218 @defvr {オプション変数} domain
219 デフォルト値: @code{real}
221 @code{domain}が@code{complex}に設定されている時、
222 @code{sqrt (x^2)}は、@code{abs(x)}を返さず、@code{sqrt (x^2)}
223 のままを保ちます。
225 @c PRESERVE EDITORIAL COMMENT -- MAY HAVE SOME SIGNIFICANCE NOT YET UNDERSTOOD !!!
226 @c The notion of a "domain" of simplification is still in its infancy,
227 @c and controls little more than this at the moment.
229 @opencatbox
230 @category{Simplification flags and variables}
231 @closecatbox
232 @end defvr
234 @c -----------------------------------------------------------------------------
235 @anchor{evenfun}
236 @anchor{oddfun}
237 @defvr  {宣言} evenfun
238 @defvrx {宣言} oddfun
240 @code{declare(f, evenfun}や @code{declare(f, oddfun}は
241 関数 @code{f}を奇関数か偶関数として認識するように指示します。
243 例:
245 @example
246 (%i1) o (- x) + o (x);
247 (%o1)                     o(x) + o(- x)
248 (%i2) declare (o, oddfun);
249 (%o2)                         done
250 (%i3) o (- x) + o (x);
251 (%o3)                           0
252 (%i4) e (- x) - e (x);
253 (%o4)                     e(- x) - e(x)
254 (%i5) declare (e, evenfun);
255 (%o5)                         done
256 (%i6) e (- x) - e (x);
257 (%o6)                           0
258 @end example
259 @end defvr
261 @c -----------------------------------------------------------------------------
262 @anchor{expand}
263 @deffn  {関数} expand (@var{expr})
264 @deffnx {関数} expand (@var{expr}, @var{p}, @var{n})
266 式@var{expr}を展開します。
267 指数和や和の積の積を実行し、有理式の分子をそれぞれの項に分割し、
268 (可換、非可換な)積が@var{expr}のすべてのレベルの和で分配されます。
270 多項式の場合、もっと効率的なアルゴリズムの@code{ratexpand}を普通使うべきです。
272 @code{maxnegex}と@code{maxposex}はそれぞれ、展開される最大の負と正の指数を制御します。
274 @code{expand (expr, p, n)}は、
275 @var{expr}を、@code{maxposex}に@var{p}を@code{maxnegex}に@var{n}を使って展開します。
276 これは、式のすべてではなく、一部を展開するために役立ちます。
278 @code{expon} - 自動的に展開される最大の負のべきの指数(@code{expand}のコールに独立して)。
279 例えば、もしも@code{expon}が4なら@code{(x+1)^(-5)}は自動では展開されません。
281 @code{expop} - 自動的に展開される最大の正の指数。
282 もし@code{expop}が3以上なら、@code{(x+1)^3}は自動的に展開されます。
283 もし@code{n}が@code{expop}よりも大きい時@code{(x+1)^n}が展開されるのが望まれるなら、
284 @code{maxposex}が@code{n}より小さくない場合のみ、@code{expand ((x+1)^n)}の実行が行われます。
286 @code{ev}で使われる@code{expand}フラグによって展開が実行されます。
288 ファイル@file{share/simplification/facexp.mac}は、
289 @c I should really use a macro which expands to something like
290 @c @uref{file://...,,simplification/facexp.mac}.  But texi2html
291 @c currently supports @uref only with one argument.
292 @c Worse, the `file:' scheme is OS and browser dependent.
293 ユーザーに制御された展開によって式を構成する機能を提供するいくつかの関連関数
294 (特に自動ロードされる@code{facsum}, @code{factorfacsum}と@code{collectterms})と
295 変数(@code{nextlayerfactor}と@code{facsum_combine})を含みます。
296 @c MERGE share/simplification/facexp.usg INTO THIS FILE OR CREATE NEW FILE facexp.texi
297 簡単な関数の記述が@file{simplification/facexp.usg}にあります。
298 @code{demo("facexp")}でデモが実行できます。
300 例:
302 @c ===beg===
303 @c expr:(x+1)^2*(y+1)^3;
304 @c expand(expr);
305 @c expand(expr,2);
306 @c expr:(x+1)^-2*(y+1)^3;
307 @c expand(expr);
308 @c expand(expr,2,2);
309 @c ===end===
310 @example
311 (%i1) expr:(x+1)^2*(y+1)^3;
312                                2        3
313 (%o1)                   (x + 1)  (y + 1)
314 (%i2) expand(expr);
315        2  3        3    3      2  2        2      2      2
316 (%o2) x  y  + 2 x y  + y  + 3 x  y  + 6 x y  + 3 y  + 3 x  y
317                                                       2
318                                      + 6 x y + 3 y + x  + 2 x + 1
319 (%i3) expand(expr,2);
320                2        3              3          3
321 (%o3)         x  (y + 1)  + 2 x (y + 1)  + (y + 1)
322 (%i4) expr:(x+1)^-2*(y+1)^3;
323                                    3
324                             (y + 1)
325 (%o4)                       --------
326                                    2
327                             (x + 1)
328 (%i5) expand(expr);
329             3               2
330            y             3 y            3 y             1
331 (%o5) ------------ + ------------ + ------------ + ------------
332        2              2              2              2
333       x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1
334 (%i6) expand(expr,2,2);
335 @group
336                                    3
337                             (y + 1)
338 (%o6)                     ------------
339                            2
340                           x  + 2 x + 1
341 @end group
342 @end example
344 展開なしに式を再整理します:
346 @c ===beg===
347 @c expr:(1+x)^2*sin(x);
348 @c exponentialize:true;
349 @c expand(expr,0,0);
350 @c ===end===
351 @example
352 (%i7) expr:(1+x)^2*sin(x);
353                                        2
354 (%o7)                           (x + 1)  sin(x)
355 (%i8) exponentialize:true;
356 (%o8)                                true
357 (%i9) expand(expr,0,0);
358                                    2    %i x     - %i x
359                          %i (x + 1)  (%e     - %e      )
360 (%o9)                  - -------------------------------
361                                         2
362 @end example
364 @opencatbox
365 @category{Expressions}
366 @closecatbox
367 @end deffn
369 @c NEEDS EXAMPLES
371 @c -----------------------------------------------------------------------------
372 @anchor{expandwrt}
373 @deffn {関数} expandwrt (@var{expr}, @var{x_1}, ..., @var{x_n})
375 式@code{expr}を、変数@var{x_1}, ..., @var{x_n}に関して展開します。
376 変数を含む積すべては陽に現れます。
377 返される形式は、変数を含む式の和の積を含みません。
378 @var{x_1}, ..., @var{x_n}は、変数、演算子、式であり得ます。
380 デフォルトでは、分母は展開されませんが、これは、スイッチ@code{expandwrt_denom}によって
381 制御することができます。
383 この関数は@file{simplification/stopex.mac}から自動ロードされます。
385 @opencatbox
386 @category{Expressions}
387 @closecatbox
388 @end deffn
390 @c -----------------------------------------------------------------------------
391 @anchor{expandwert_denom}
392 @defvr {オプション変数} expandwrt_denom
393 デフォルト値: @code{false}
395 @code{expandwrt_denom}は、@code{expandwrt}によって有理式の扱いを制御します。
396 もし@code{true}なら、式の分子も分母も@code{expandwrt}の引数に従って展開されますが、
397 もし@code{expandwrt_denom}が@code{false}なら、分子だけがその方法で展開されます。
399 @opencatbox
400 @category{Expressions}
401 @closecatbox
402 @end defvr
404 @c NEEDS A STAND-ALONE DESCRIPTION (NOT "IS SIMILAR TO")
405 @c NEEDS EXAMPLES
406 @c -----------------------------------------------------------------------------
407 @anchor{expandwrt_factored}
408 @deffn {関数} expandwrt_factored (@var{expr}, @var{x_1}, ..., @var{x_n})
410 @code{expandwrt}に似ていますが、積の式を幾分違って扱います。
411 @code{expandwrt_factored}は、@code{expr}の、
412 変数@var{x_1}, ..., @var{x_n}を含む因子上でだけ展開します。
414 @c NOT SURE WHY WE SHOULD MENTION THIS HERE
415 この関数は、@file{simplification/stopex.mac}から自動ロードされます。
417 @opencatbox
418 @category{Expressions}
419 @closecatbox
420 @end deffn
422 @c -----------------------------------------------------------------------------
423 @anchor{expon}
424 @defvr {オプション変数} expon
425 デフォルト値: 0
427 @code{expon}は、(@code{expand}のコールに依らず)自動的に展開される負のべき乗の最大指数です。
428 例えば、
429 もし@code{expon}が4なら、
430 @code{(x+1)^(-5)}は自動的には展開されません。
432 @opencatbox
433 @category{Expressions}
434 @closecatbox
435 @end defvr
438 @c -----------------------------------------------------------------------------
439 @anchor{exponentialize}
440 @deffn {関数} exponentialize (@var{expr})
441 @deffnx {オプション変数} exponentialize
443 関数@code{exponentialize (expr)}は、
444 @var{expr}の中の円関数や双曲関数を指数関数に変換します。
445 グローバル変数@code{exponentialize}を設定する必要はありません。
447 変数@code{exponentialize}が@code{true}の時、
448 円関数や双曲関数すべては指数関数形に変換されます。
449 デフォルト値は@code{false}です。
451 @code{demoivre}は複素数の指数関数を円関数に変換します。
452 @code{exponentialize}や@code{demoivre}は同時にtrueにすることはできません。
454 @opencatbox
455 @category{Complex variables}
456 @category{Trigonometric functions}
457 @category{Hyperbolic functions}
458 @closecatbox
459 @end deffn
461 @c NEEDS CLARIFICATION
462 @c NEEDS EXAMPLES
464 @c -----------------------------------------------------------------------------
465 @anchor{expop}
466 @defvr {オプション変数} expop
467 デフォルト値: 0
469 @code{expop}は、自動的に展開される最高の正の指数です。
470 例えば、@code{(x + 1)^3}が入力された時、
471 @code{expop}が3以下の時だけ自動的に展開されます。
472 もし、@code{n}が@code{expop}より大きい@code{(x + 1)^n}が展開されることを望むなら、
473 @code{expand ((x + 1)^n)}の実行は、
474 @code{maxposex}がn以上の時だけ機能します。
476 @opencatbox
477 @category{Expressions}
478 @closecatbox
479 @end defvr
481 @c NEEDS CLARIFICATION, EXAMPLES
482 @c -----------------------------------------------------------------------------
483 @anchor{lassociative}
484 @defvr {宣言} lassociative
486 @code{declare (g, lassociative)}は、
487 Maximaの整理器に
488 @code{g}が左結合であることを告げます。
489 例えば、@code{g (g (a, b), g (c, d))}は@code{g (g (g (a, b), c), d)}に整理されます。
491 @opencatbox
492 @category{Declarations and inferences}
493 @category{Operators}
494 @category{Simplification}
495 @closecatbox
496 @end defvr
498 @c NEEDS CLARIFICATION, EXAMPLES
499 @c WHAT'S UP WITH THE QUOTE MARKS ??
501 @c -----------------------------------------------------------------------------
502 @anchor{linear}
503 @defvr {宣言} linear
505 Maximaの演算子のプロパティの1つ。
506 そう宣言された1変数関数@code{f}に関して、
507 "expansion" @code{f(x + y)}は@code{f(x) + f(y)}を出力し、
508 @code{a}が定数の@code{f(a*x)}は、@code{a*f(x)}を出力します。
509 2つ以上の引数の関数に関しては、
510 「線形性」は、@code{sum}や@code{integrate}の場合のように定義されます。
511 すなわち、@code{a}と@code{b}が@code{x}に独立の場合,
512 @code{f (a*x + b, x)}は@code{a*f(x,x) + b*f(1,x)}を出力します。
514 @code{linear}は、@code{additive}かつ@code{outative}と同値です。
515 @code{opproperties}も参照してください。
517 @opencatbox
518 @category{Declarations and inferences}
519 @category{Operators}
520 @category{Simplification}
521 @closecatbox
522 @end defvr
524 @c NEEDS EXAMPLES
526 @c -----------------------------------------------------------------------------
527 @anchor{maxnegex}
528 @defvr {オプション変数} maxnegex
529 デフォルト値: 1000
531 @code{maxnegex}は、
532 @code{expand}コマンドによって展開される最大の負の指数です。
533 (@code{maxposex})も参照してください。)
535 @opencatbox
536 @category{Expressions}
537 @closecatbox
538 @end defvr
540 @c NEEDS EXAMPLES
542 @c -----------------------------------------------------------------------------
543 @anchor{maxposex}
544 @defvr {オプション変数} maxposex
545 デフォルト値: 1000
547 @code{maxposex}は、
548 @code{expand}コマンドで展開される最大指数です。
549 (@code{maxnegex})も参照してください。)
551 @opencatbox
552 @category{Expressions}
553 @closecatbox
554 @end defvr
556 @c NEEDS EXAMPLES
558 @c -----------------------------------------------------------------------------
559 @anchor{multiplicative}
560 @defvr {宣言} multiplicative
562 @code{declare (f, multiplicative)}は、Maxima整理器に
563 @code{f}が乗法的であることを告げます。
565 @enumerate
566 @item
567 もし@code{f}が1変数関数なら、
568 整理器が積に適用された@code{f}に出会うといつでも、
569 @code{f}はその積上に分配されます。
570 例えば、@code{f(x*y)}は@code{f(x)*f(y)}に整理されます。
572 @item
573 もし@code{f}が多変数関数なら、
574 乗法性は、@code{f}の最初の引数の乗法性として定義されます。
575 例えば、
576 @code{f (g(x) * h(x), x)}は、@code{f (g(x) ,x) * f (h(x), x)}に整理されます。
577 @end enumerate
579 この式整理は、@code{f}が@code{product (x[i], i, m, n)}の形の式に適用された時にはなされません。
581 @opencatbox
582 @category{Declarations and inferences}
583 @category{Expressions}
584 @category{Simplification}
585 @closecatbox
586 @end defvr
588 @c NEEDS WORK
590 @c -----------------------------------------------------------------------------
591 @anchor{multthru}
592 @deffn  {関数} multthru (@var{expr})
593 @deffnx {関数} multthru (@var{expr_1}, @var{expr_2})
595 @var{expr}の(和の)因子に@var{expr}の他の因子を掛ける。
596 すなわち、@var{expr}は@code{@var{f_1} @var{f_2} ... @var{f_n}}です。
597 ここで、少なくとも1つの因子、@var{f_i}としましょう、は項の和です。
598 この和の各項に、積の中の他の因子を掛けます。
599 (すなわち、@var{f_i}を除いた因子すべてです。)
600 @code{multthru}は、指数化された和を展開しません。
601 この関数は、(可換であれ非可換であれ)積を和上に分配する最も速い方法です。
602 割り算は積として表現されるので、
603 @code{multthru}は積によって和を割ることにも使うことができます。
605 @code{multthru (@var{expr_1}, @var{expr_2})}は、
606 (和もしくは等式の)@var{expr_2}の中の各項に@var{expr_1}を掛けます。
607 もし@var{expr_1}がそれ自身和でなければ、
608 この形式は@code{multthru (@var{expr_1}*@var{expr_2})}と同値です。
610 @example
611 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
612                       1        x         f(x)
613 (%o1)             - ----- + -------- - --------
614                     x - y          2          3
615                             (x - y)    (x - y)
616 (%i2) multthru ((x-y)^3, %);
617                            2
618 (%o2)             - (x - y)  + x (x - y) - f(x)
619 (%i3) ratexpand (%);
620                            2
621 (%o3)                   - y  + x y - f(x)
622 (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
623                         10  2              2  2
624                  (b + a)   s  + 2 a b s + a  b
625 (%o4)            ------------------------------
626                                   2
627                              a b s
628 (%i5) multthru (%);  /* note that this does not expand (b+a)^10 */
629                                         10
630                        2   a b   (b + a)
631 (%o5)                  - + --- + ---------
632                        s    2       a b
633                            s
634 (%i6) multthru (a.(b+c.(d+e)+f));
635 (%o6)            a . f + a . c . (e + d) + a . b
636 (%i7) expand (a.(b+c.(d+e)+f));
637 (%o7)         a . f + a . c . e + a . c . d + a . b
638 @end example
640 @opencatbox
641 @category{Expressions}
642 @closecatbox
643 @end deffn
645 @c -----------------------------------------------------------------------------
646 @anchor{declaration_nary}
647 @defvr {宣言} nary
649 @code{declare(f, nary)}はMaximaに
650 関数 @code{f}をn項関数として認識するよう指示します。
652 @code{nary}宣言は
653 @mxref{operator_nary, nary}関数をコールするのと同じではありません。
654 @code{declare(f, nary)}は唯一の効果は
655 例えば、 @code{foo(x, foo(y, z))}を
656 @code{foo(x, y, z)}に整理するように
657 入れ子の式をフラットにするようMaxima整理器に指示することです。
658 @mrefdot{declare}も参照してください。
660 例:
662 @example
663 (%i1) H (H (a, b), H (c, H (d, e)));
664 (%o1)               H(H(a, b), H(c, H(d, e)))
665 (%i2) declare (H, nary);
666 (%o2)                         done
667 (%i3) H (H (a, b), H (c, H (d, e)));
668 (%o3)                   H(a, b, c, d, e)
669 @end example
670 @end defvr
672 @c NEEDS CLARIFICATION, EXAMPLES
674 @c -----------------------------------------------------------------------------
675 @anchor{negdistrib}
676 @defvr {オプション変数} negdistrib
677 デフォルト値: @code{true}
679 @code{negdistrib}が@code{true}の時,
680  -1が式上に分配されます。
681 例えば、@code{-(x + y)}は@code{- y - x}になります。
682 @code{false}に設定すると、@code{- (x + y)}はそのまま表示されることになるでしょう。
683 これは時々役に立ちますが、非常に注意してください;
684 @code{simp}フラグ同様に、
685 当然のことながら、Maximaの中でローカルな使用以外には、
686 これは、@code{false}に設定したくないフラグの1つです。
688 @opencatbox
689 @category{Simplification flags and variables}
690 @closecatbox
692 @end defvr
694 @c -----------------------------------------------------------------------------
695 @anchor{opproperties}
696 @defvr {システム変数} opproperties
698 @code{opproperties}は、Maximaの整理器が認識する特殊演算子プロパティのリストです:
699 @code{linear}, @code{additive}, @code{multiplicative}, @code{outative}, @code{evenfun},
700 @code{oddfun}, @code{commutative}, @code{symmetric}, @code{antisymmetric}, @code{nary}, 
701 @code{lassociative}, @code{rassociative}.
703 @opencatbox
704 @category{Global variables}
705 @category{Operators}
706 @closecatbox
707 @end defvr
710 @c NEEDS EXAMPLES
712 @c -----------------------------------------------------------------------------
713 @anchor{outative}
714 @defvr {宣言} outative
716 @code{declare (f, outative)}は、Maximaの整理器に
717 @code{f}の引数の中の定数因子が外に出すことができることを告げます。
719 @enumerate
720 @item
721 もし@code{f}が1変数関数なら、
722 整理器が積に適用された@code{f}に出会うといつでも、その積は定数因子と、ていすうでない因子に分割され、定数因子が外に出されます。
723 例えば、@code{f(a*x)}は、@code{a}を定数とすると、@code{a*f(x)}に整理されます。
724 非アトムな定数因子は外に出されません。
725 @item
726 もし@code{f}が多変数関数なら、
727 outativityは、@code{sum}や@code{integrate}の場合のように定義されます。
728 すなわち、@code{f (a*g(x), x)}は、@code{a}が@code{x}に依らないとすると、
729 @code{a * f(g(x), x)}に整理されます。
730 @end enumerate
732 @code{sum}, @code{integrate}, @code{limit}はすべて@code{outative}です。
734 @opencatbox
735 @category{Declarations and inferences}
736 @category{Operators}
737 @closecatbox
738 @end defvr
740 @c -----------------------------------------------------------------------------
741 @anchor{radcan}
742 @deffn {関数} radcan (@var{expr})
744 対数関数、指数関数、累乗根を含む@var{expr}を、与えられ場変数の順序で式の大きなクラス上の標準形式に整理します;
745 関数的に同値な形式は特殊な形式にマップされます。
746 式の幾分大きなクラスのため、@code{radcan}は正規の形式を生成します。
747 このクラスの2つの式は、必ずしも、同じ結果ではありませんが、それらの差は@code{radcan}によって0に整理されます。
749 いくつかの式のため、@code{radcan}は特殊な時間消費をします。
750 これは、因数分解や指数関数の部分分解展開に基づいた整理のための式のコンポーネントの間のある関係を探求するコストです。
752 @c %e_to_numlog NEEDS ITS OWN @defvar !!!
754 @c %e_to_numlog HAS NO EFFECT ON RADCAN. RADCAN ALWAYS SIMPLIFIES 
755 @c exp(a*log(x)) --> x^a. Commenting the following out. 11/2009
756 @c When @code{%e_to_numlog} is @code{true}, @code{%e^(r*log(expr))} simplifies 
757 @c to @code{expr^r} if @code{r} is a rational number.
759 @c RADEXPAND CONTROLS THE SIMPLIFICATION OF THE POWER FUNCTION, E.G.
760 @c (x*y)^a --> x^a*y^a AND (x^a)^b --> x^(a*b), IF RADEXPAND HAS THE VALUE 'ALL.
761 @c THE VALUE OF RADEXPAND HAS NO EFFECT ON RADCAN. RADCAN ALWAYS SIMPLIFIES
762 @c THE ABOVE EXPRESSIONS. COMMENTING THE FOLLOWING OUT. 11/2009
763 @c When @code{radexpand} is @code{false}, certain transformations are inhibited.
764 @c @code{radcan (sqrt (1-x))} remains @code{sqrt (1-x)} and is not simplified 
765 @c to @code{%i sqrt (x-1)}. @code{radcan (sqrt (x^2 - 2*x + 1))} remains 
766 @c @code{sqrt (x^2 - 2*x + 1)} and is not simplified to @code{x - 1}.
768 例:
770 @c ===beg===
771 @c radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
772 @c radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
773 @c radcan((%e^x-1)/(1+%e^(x/2)));
774 @c ===end===
775 @example
776 (%i1) radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
777                                            a/2
778 (%o1)                            log(x + 1)
780 (%i2) radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
781 (%o2)                                  2
783 (%i3) radcan((%e^x-1)/(1+%e^(x/2)));
784                                      x/2
785 (%o3)                              %e    - 1
786 @end example
788 @opencatbox
789 @category{Simplification functions}
790 @closecatbox
791 @end deffn
793 @c NEEDS CLARIFICATION, EXAMPLES
795 @c -----------------------------------------------------------------------------
796 @anchor{radexpand}
797 @defvr {オプション変数} radexpand
798 デフォルト値: @code{true}
800 @code{radexpand}は、根号のいくつかの整理を制御します。
802 @code{radexpand}が@code{all}の時
803 n乗の積の因子のn番目の根を根号の外に出すようにします。
804 例えば、もし@code{radexpand}が@code{all}なら、
805 @code{sqrt (16*x^2)}は@code{4*x}に整理されます。
807 @c EXPRESS SIMPLIFICATON RULES IN GENERAL CASE, NOT SPECIAL CASE
808 特に、@code{sqrt (x^2)}を考えます。
809 @itemize @bullet
810 @item
811 もし@code{radexpand}が@code{all}もしくは@code{assume (x > 0)}が実行されたなら、
812 @code{sqrt(x^2)}は@code{x}に整理されます。
813 @item
814 もし@code{radexpand}が@code{true}、かつ@code{domain}が@code{real}(これはデフォルトです)なら、
815 @code{sqrt(x^2)}は@code{abs(x)}に整理されます。
816 @item
817 もし@code{radexpand}が@code{false}、もしくは、@code{radexpand}が@code{true}かつ@code{domain}が@code{complex}なら、
818 @code{sqrt(x^2)}は整理されません。
819 @end itemize
821 @c CORRECT STATEMENT HERE ???
822 @code{domain}は、@code{radexpand}が@code{true}の時だけ意味を持つことに注意してください。
824 @opencatbox
825 @category{Simplification flags and variables}
826 @closecatbox
828 @end defvr
831 @c NEEDS CLARIFICATION, EXAMPLES
833 @c -----------------------------------------------------------------------------
834 @anchor{rassociative}
835 @defvr {宣言} rassociative
837 @code{declare (g, rassociative)}は、
838 Maximaの整理器に
839 @code{g}が右結合であることを告げます。
840 例えば、
841 @code{g(g(a, b), g(c, d))}は、@code{g(a, g(b, g(c, d)))}に整理されます。
843 @opencatbox
844 @category{Declarations and inferences}
845 @category{Operators}
846 @closecatbox
847 @end defvr
849 @c NEEDS CLARIFICATION, EXAMPLES
851 @c -----------------------------------------------------------------------------
852 @anchor{scsimp}
853 @deffn {関数} scsimp (@var{expr}, @var{rule_1}, ..., @var{rule_n})
855 順次的な相対整理(Sequential Comparative Simplification) (Stouteによる方法)。
856 @code{scsimp}は、
857 規則@var{rule_1}, ..., @var{rule_n}に従って、
858 @var{expr}を整理しようとします。
859 もしより小さな式が得られたら、
860 プロセスは繰り返されます。
861 そうでなければ、すべての整理が試された後、
862 元の答えを返します。
864 @c MERGE EXAMPLES INTO THIS FILE
865 @code{example (scsimp)}はいくつかの例を表示します。
867 @opencatbox
868 @category{Simplification functions}
869 @closecatbox
870 @end deffn
872 @c -----------------------------------------------------------------------------
873 @anchor{simp}
874 @defvr {オプション変数} simp
875 デフォルト値: @code{true}
877 @code{simp}は整理を有効にします。
878 これは標準です。
879 @code{simp}は@code{evflag}でもあります。
880 それは関数@code{ev}に認識されます。@code{ev}を参照してください。
882 @code{simp}が
883 値@code{false}で@code{evflag}として使われる時、
884 式の評価フェイズの間だけ
885 整理は抑制されます。
886 フラグは評価フェイズに続く整理を抑制できません。
888 例:
890 整理がグローバルにオフにスイッチされます。
891 式@code{sin(1.0)}は数値に整理されません。
892 @code{simp}-フラグは整理をオンにスイッチします。
894 @c ===beg===
895 @c simp:false;
896 @c sin(1.0);
897 @c sin(1.0),simp;
898 @c ===end===
899 @example
900 (%i1) simp:false;
901 (%o1)                                false
902 (%i2) sin(1.0);
903 (%o2)                              sin(1.0)
904 (%i3) sin(1.0),simp;
905 (%o3)                          .8414709848078965
906 @end example
908 整理が再びオンにスイッチされます。
909 @code{simp}-フラグは完全に整理を抑制できません。
910 割り当ては式の評価フェイズの間に起こるので、
911 出力は整理された式を示しますが、
912 変数@code{x}は、値として未整理の式を持ちます。
914 @c ===beg===
915 @c simp:true;
916 @c x:sin(1.0),simp:false;
917 @c :lisp $x
918 @c ===end===
919 @example
920 (%i4) simp:true;
921 (%o4)                                true
922 (%i5) x:sin(1.0),simp:false;
923 (%o5)                          .8414709848078965
924 (%i6) :lisp $X
925 ((%SIN) 1.0)
926 @end example
928 @opencatbox
929 @category{Evaluation flags}
930 @closecatbox
931 @end defvr
933 @c NEEDS CLARIFICATION, EXAMPLES
935 @c -----------------------------------------------------------------------------
936 @anchor{symmetric}
937 @defvr {宣言} symmetric
939 @code{declare (h, symmetric)}は、Maximaの整理器に
940 @code{h}が対称関数であることを告げます。
941 例えば、@code{h (x, z, y)}は@code{h (x, y, z)}に整理されます。
943 @code{commutative}は@code{symmetric}と同義です。
945 @opencatbox
946 @category{Declarations and inferences}
947 @category{Operators}
948 @closecatbox
949 @end defvr
951 @c -----------------------------------------------------------------------------
952 @anchor{xthru}
953 @deffn {関数} xthru (@var{expr})
955 (和でなければいけない)@var{expr}のすべての項を、
956 共通分母上で、@code{ratsimp}がするように積や指数和を展開することなしに結合させます。
957 @code{xthru}は、因子が陽であるときだけ、有理式の分子と分母の共通因子を消去します。
959 @c REPHRASE IN NEUTRAL TONE (GET RID OF "IT IS BETTER")
960 分子と分母の最大公約数の陽因子を消去するために、式を@code{ratsimp}する前に@code{xthru}を使うのがよい場合があります。
962 @c ===beg===
963 @c ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
964 @c xthru (%);
965 @c ===end===
966 @example
967 (%i1) ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
968 @group
969                                 20
970                  1       (x + 2)   - 2 y       x
971 (%o1)        --------- + --------------- - ---------
972                     19             20             20
973              (y + x)        (y + x)        (y + x)
974 @end group
975 (%i2) xthru (%);
976                                  20
977                           (x + 2)   - y
978 (%o2)                     -------------
979                                    20
980                             (y + x)
981 @end example
983 @opencatbox
984 @category{Expressions}
985 @closecatbox
986 @end deffn