Examples cleanup
[maxima.git] / doc / info / ja / Simplification.texi
blob4874884fb345f5b0666ac7bcf347dafbc0f1eb02
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} @category{Declarations and inferences}
30 @closecatbox
31 @end defvr
33 @c -----------------------------------------------------------------------------
34 @anchor{antisymmetric}
35 @defvr {宣言} antisymmetric
36 もし@code{declare(h,antisymmetric)}が実行されると、
37 @code{h}は反対称として整理されます。
38 例えば、@code{h(x,z,y)}は@code{-h(x,y,z)}と整理されます。
39 即ち、@code{symmetric}か@code{commutative}で得られた結果に(-1)^nを掛けたものとなります。
40 ここで、nはその形に変換するのに必要な置換の回数です。
42 @opencatbox
43 @category{Operators} @category{Declarations and inferences}
44 @closecatbox
45 @end defvr
47 @c -----------------------------------------------------------------------------
48 @deffn {関数} combine (@var{expr})
49 同じ分母を持つ項を単一の項に結合することによって和@var{expr}を整理します。
51 @c NEED EXAMPLE HERE
52 @opencatbox
53 @category{Expressions}
54 @closecatbox
55 @end deffn
57 @c -----------------------------------------------------------------------------
58 @anchor{commutative}
59 @defvr {宣言} commutative
61 もし@code{declare(h,commutative)}が実行されたなら、
62 @code{h}は可換関数として整理されます。
63 例えば、@code{h(x,z,y)}は@code{h(x,y,z)}に整理されます。
64 これは@code{symmetric}と同じです。
66 @opencatbox
67 @category{Operators} @category{Declarations and inferences}
68 @closecatbox
69 @end defvr
71 @c NEEDS CLARIFICATION, EXAMPLES
73 @c -----------------------------------------------------------------------------
74 @anchor{demoivre}
75 @deffn  {関数} demoivre (@var{expr})
76 @deffnx {オプション変数} demoivre
78 関数@code{demoivre (expr)}は、
79 グローバル変数@code{demoivre}を設定することなしに式を変換します。
81 変数@code{demoivre}が@code{true}の時、
82 複素数の指数関数は、円関数の項で表した同値な式に変換されます:
83 もし@code{b}が@code{%i}を含まなければ、
84 @code{exp (a + b*%i)}は、@code{%e^a * (cos(b) + %i*sin(b))}に整理されます。
85 @code{a}と@code{b}は展開されません。
87 @code{demoivre}のデフォルト値は@code{false}です。
89 @code{exponentialize}は、円関数や双曲関数を指数関数形に変換します。
90 @code{demoivre}と@code{exponentialize}は、同時に両方trueにはできません。
92 @opencatbox
93 @category{Complex variables} @category{Trigonometric functions} @category{Hyperbolic functions}
94 @closecatbox
95 @end deffn
97 @c NEEDS WORK
99 @c -----------------------------------------------------------------------------
100 @anchor{function_distrib}
101 @deffn {関数} distrib (@var{expr})
103 和を積上に分配します。
104 式のトップレベルのみで働き、すなわち、再帰的でなく、
105 @code{expand}より速い点で、@code{expand}とは違います。
106 トップレベルの和すべてを展開する点で、@code{multthru}とは違います。
108 例:
110 @example
111 (%i1) distrib ((a+b) * (c+d));
112 (%o1)                 b d + a d + b c + a c
113 (%i2) multthru ((a+b) * (c+d));
114 (%o2)                 (b + a) d + (b + a) c
115 (%i3) distrib (1/((a+b) * (c+d)));
116                                 1
117 (%o3)                    ---------------
118                          (b + a) (d + c)
119 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
120                                 1
121 (%o4)                 ---------------------
122                       b d + a d + b c + a c
123 @end example
125 @opencatbox
126 @category{Expressions}
127 @closecatbox
128 @end deffn
130 @c -----------------------------------------------------------------------------
131 @anchor{distribute_over}
132 @defvr {オプション変数} distribute_over
133 デフォルト値: @code{true}
135 @code{distribute_over}は、
136 リストや行列や等式のようなバッグ(重複を許す集合)上の関数のマッピングを制御します。
137 今回、すべてのMaxima関数がこのプロパティを持つ訳ではありません。
138 このプロパティはコマンド@code{properties}で調べることが可能です。
140 @code{distribute_over}を値@code{false}に設定した時、
141 関数のマッピングはオフにスイッチされます。
143 例:
145 @code{sin}関数はリスト上にマップします:
147 @c ===beg===
148 @c sin([x,1,1.0]);
149 @c ===end===
150 @example
151 (%i1) sin([x,1,1.0]);
152 (%o1)                 [sin(x), sin(1), .8414709848078965]
153 @end example
155 @code{mod}は
156 リスト上にマップされる2変数関数です。
157 入れ子のリスト上のマッピングも可能です:
159 @c ===beg===
160 @c mod([x,11,2*a],10);
161 @c mod([[x,y,z],11,2*a],10);
162 @c ===end===
163 @example
164 (%i2) mod([x,11,2*a],10);
165 (%o2)                    [mod(x, 10), 1, 2 mod(a, 5)]
166 (%i3) mod([[x,y,z],11,2*a],10);
167 (%o3)       [[mod(x, 10), mod(y, 10), mod(z, 10)], 1, 2 mod(a, 5)]
168 @end example
170 @code{floor}関数の行列や等式上のマッピング:
172 @c ===beg===
173 @c floor(matrix([a,b],[c,d]));
174 @c floor(a=b);
175 @c ===end===
176 @example
177 (%i4) floor(matrix([a,b],[c,d]));
178                             [ floor(a)  floor(b) ]
179 (%o4)                       [                    ]
180                             [ floor(c)  floor(d) ]
181 (%i5) floor(a=b);
182 (%o5)                         floor(a) = floor(b)
183 @end example
185 1変数以上の関数は、任意の引数上、または、すべての引数上にマップします:
187 @c ===beg===
188 @c expintegral_e([1,2],[x,y]);
189 @c ===end===
190 @example
191 (%i6) expintegral_e([1,2],[x,y]);
192 (%o6) [[expintegral_e(1, x), expintegral_e(1, y)], 
193        [expintegral_e(2, x), expintegral_e(2, y)]]
194 @end example
196 関数がプロパティdistribute_overを持つかチェックします:
198 @c ===beg===
199 @c properties(abs);
200 @c ===end===
201 @example
202 (%i7) properties(abs);
203 (%o7) [integral, distributes over bags, noun, rule, gradef]
204 @end example
206 @opencatbox
207 @category{Simplification flags and variables}
208 @closecatbox
209 @end defvr
211 @c -----------------------------------------------------------------------------
212 @anchor{domain}
213 @defvr {オプション変数} domain
214 デフォルト値: @code{real}
216 @code{domain}が@code{complex}に設定されている時、
217 @code{sqrt (x^2)}は、@code{abs(x)}を返さず、@code{sqrt (x^2)}
218 のままを保ちます。
220 @c PRESERVE EDITORIAL COMMENT -- MAY HAVE SOME SIGNIFICANCE NOT YET UNDERSTOOD !!!
221 @c The notion of a "domain" of simplification is still in its infancy,
222 @c and controls little more than this at the moment.
224 @opencatbox
225 @category{Simplification flags and variables}
226 @closecatbox
227 @end defvr
229 @c -----------------------------------------------------------------------------
230 @anchor{evenfun}
231 @anchor{oddfun}
232 @defvr  {宣言} evenfun
233 @defvrx {宣言} oddfun
235 @code{declare(f, evenfun}や @code{declare(f, oddfun}は
236 関数 @code{f}を奇関数か偶関数として認識するように指示します。
238 例:
240 @example
241 (%i1) o (- x) + o (x);
242 (%o1)                     o(x) + o(- x)
243 (%i2) declare (o, oddfun);
244 (%o2)                         done
245 (%i3) o (- x) + o (x);
246 (%o3)                           0
247 (%i4) e (- x) - e (x);
248 (%o4)                     e(- x) - e(x)
249 (%i5) declare (e, evenfun);
250 (%o5)                         done
251 (%i6) e (- x) - e (x);
252 (%o6)                           0
253 @end example
254 @end defvr
256 @c -----------------------------------------------------------------------------
257 @anchor{expand}
258 @deffn  {関数} expand (@var{expr})
259 @deffnx {関数} expand (@var{expr}, @var{p}, @var{n})
261 式@var{expr}を展開します。
262 指数和や和の積の積を実行し、有理式の分子をそれぞれの項に分割し、
263 (可換、非可換な)積が@var{expr}のすべてのレベルの和で分配されます。
265 多項式の場合、もっと効率的なアルゴリズムの@code{ratexpand}を普通使うべきです。
267 @code{maxnegex}と@code{maxposex}はそれぞれ、展開される最大の負と正の指数を制御します。
269 @code{expand (expr, p, n)}は、
270 @var{expr}を、@code{maxposex}に@var{p}を@code{maxnegex}に@var{n}を使って展開します。
271 これは、式のすべてではなく、一部を展開するために役立ちます。
273 @code{expon} - 自動的に展開される最大の負のべきの指数(@code{expand}のコールに独立して)。
274 例えば、もしも@code{expon}が4なら@code{(x+1)^(-5)}は自動では展開されません。
276 @code{expop} - 自動的に展開される最大の正の指数。
277 もし@code{expop}が3以上なら、@code{(x+1)^3}は自動的に展開されます。
278 もし@code{n}が@code{expop}よりも大きい時@code{(x+1)^n}が展開されるのが望まれるなら、
279 @code{maxposex}が@code{n}より小さくない場合のみ、@code{expand ((x+1)^n)}の実行が行われます。
281 @code{ev}で使われる@code{expand}フラグによって展開が実行されます。
283 ファイル@file{share/simplification/facexp.mac}は、
284 @c I should really use a macro which expands to something like
285 @c @uref{file://...,,simplification/facexp.mac}.  But texi2html
286 @c currently supports @uref only with one argument.
287 @c Worse, the `file:' scheme is OS and browser dependent.
288 ユーザーに制御された展開によって式を構成する機能を提供するいくつかの関連関数
289 (特に自動ロードされる@code{facsum}, @code{factorfacsum}と@code{collectterms})と
290 変数(@code{nextlayerfactor}と@code{facsum_combine})を含みます。
291 @c MERGE share/simplification/facexp.usg INTO THIS FILE OR CREATE NEW FILE facexp.texi
292 簡単な関数の記述が@file{simplification/facexp.usg}にあります。
293 @code{demo("facexp")}でデモが実行できます。
295 例:
297 @c ===beg===
298 @c expr:(x+1)^2*(y+1)^3;
299 @c expand(expr);
300 @c expand(expr,2);
301 @c expr:(x+1)^-2*(y+1)^3;
302 @c expand(expr);
303 @c expand(expr,2,2);
304 @c ===end===
305 @example
306 (%i1) expr:(x+1)^2*(y+1)^3;
307                                2        3
308 (%o1)                   (x + 1)  (y + 1)
309 (%i2) expand(expr);
310        2  3        3    3      2  2        2      2      2
311 (%o2) x  y  + 2 x y  + y  + 3 x  y  + 6 x y  + 3 y  + 3 x  y
312                                                       2
313                                      + 6 x y + 3 y + x  + 2 x + 1
314 (%i3) expand(expr,2);
315                2        3              3          3
316 (%o3)         x  (y + 1)  + 2 x (y + 1)  + (y + 1)
317 (%i4) expr:(x+1)^-2*(y+1)^3;
318                                    3
319                             (y + 1)
320 (%o4)                       --------
321                                    2
322                             (x + 1)
323 (%i5) expand(expr);
324             3               2
325            y             3 y            3 y             1
326 (%o5) ------------ + ------------ + ------------ + ------------
327        2              2              2              2
328       x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1
329 (%i6) expand(expr,2,2);
330 @group
331                                    3
332                             (y + 1)
333 (%o6)                     ------------
334                            2
335                           x  + 2 x + 1
336 @end group
337 @end example
339 展開なしに式を再整理します:
341 @c ===beg===
342 @c expr:(1+x)^2*sin(x);
343 @c exponentialize:true;
344 @c expand(expr,0,0);
345 @c ===end===
346 @example
347 (%i7) expr:(1+x)^2*sin(x);
348                                        2
349 (%o7)                           (x + 1)  sin(x)
350 (%i8) exponentialize:true;
351 (%o8)                                true
352 (%i9) expand(expr,0,0);
353                                    2    %i x     - %i x
354                          %i (x + 1)  (%e     - %e      )
355 (%o9)                  - -------------------------------
356                                         2
357 @end example
359 @opencatbox
360 @category{Expressions}
361 @closecatbox
362 @end deffn
364 @c NEEDS EXAMPLES
366 @c -----------------------------------------------------------------------------
367 @anchor{expandwrt}
368 @deffn {関数} expandwrt (@var{expr}, @var{x_1}, ..., @var{x_n})
370 式@code{expr}を、変数@var{x_1}, ..., @var{x_n}に関して展開します。
371 変数を含む積すべては陽に現れます。
372 返される形式は、変数を含む式の和の積を含みません。
373 @var{x_1}, ..., @var{x_n}は、変数、演算子、式であり得ます。
375 デフォルトでは、分母は展開されませんが、これは、スイッチ@code{expandwrt_denom}によって
376 制御することができます。
378 この関数は@file{simplification/stopex.mac}から自動ロードされます。
380 @opencatbox
381 @category{Expressions}
382 @closecatbox
383 @end deffn
385 @c -----------------------------------------------------------------------------
386 @anchor{expandwert_denom}
387 @defvr {オプション変数} expandwrt_denom
388 デフォルト値: @code{false}
390 @code{expandwrt_denom}は、@code{expandwrt}によって有理式の扱いを制御します。
391 もし@code{true}なら、式の分子も分母も@code{expandwrt}の引数に従って展開されますが、
392 もし@code{expandwrt_denom}が@code{false}なら、分子だけがその方法で展開されます。
394 @opencatbox
395 @category{Expressions}
396 @closecatbox
397 @end defvr
399 @c NEEDS A STAND-ALONE DESCRIPTION (NOT "IS SIMILAR TO")
400 @c NEEDS EXAMPLES
401 @c -----------------------------------------------------------------------------
402 @anchor{expandwrt_factored}
403 @deffn {関数} expandwrt_factored (@var{expr}, @var{x_1}, ..., @var{x_n})
405 @code{expandwrt}に似ていますが、積の式を幾分違って扱います。
406 @code{expandwrt_factored}は、@code{expr}の、
407 変数@var{x_1}, ..., @var{x_n}を含む因子上でだけ展開します。
409 @c NOT SURE WHY WE SHOULD MENTION THIS HERE
410 この関数は、@file{simplification/stopex.mac}から自動ロードされます。
412 @opencatbox
413 @category{Expressions}
414 @closecatbox
415 @end deffn
417 @c -----------------------------------------------------------------------------
418 @anchor{expon}
419 @defvr {オプション変数} expon
420 デフォルト値: 0
422 @code{expon}は、(@code{expand}のコールに依らず)自動的に展開される負のべき乗の最大指数です。
423 例えば、
424 もし@code{expon}が4なら、
425 @code{(x+1)^(-5)}は自動的には展開されません。
427 @opencatbox
428 @category{Expressions}
429 @closecatbox
430 @end defvr
433 @c -----------------------------------------------------------------------------
434 @anchor{exponentialize}
435 @deffn {関数} exponentialize (@var{expr})
436 @deffnx {オプション変数} exponentialize
438 関数@code{exponentialize (expr)}は、
439 @var{expr}の中の円関数や双曲関数を指数関数に変換します。
440 グローバル変数@code{exponentialize}を設定する必要はありません。
442 変数@code{exponentialize}が@code{true}の時、
443 円関数や双曲関数すべては指数関数形に変換されます。
444 デフォルト値は@code{false}です。
446 @code{demoivre}は複素数の指数関数を円関数に変換します。
447 @code{exponentialize}や@code{demoivre}は同時にtrueにすることはできません。
449 @opencatbox
450 @category{Complex variables} @category{Trigonometric functions} @category{Hyperbolic functions}
451 @closecatbox
452 @end deffn
454 @c NEEDS CLARIFICATION
455 @c NEEDS EXAMPLES
457 @c -----------------------------------------------------------------------------
458 @anchor{expop}
459 @defvr {オプション変数} expop
460 デフォルト値: 0
462 @code{expop}は、自動的に展開される最高の正の指数です。
463 例えば、@code{(x + 1)^3}が入力された時、
464 @code{expop}が3以下の時だけ自動的に展開されます。
465 もし、@code{n}が@code{expop}より大きい@code{(x + 1)^n}が展開されることを望むなら、
466 @code{expand ((x + 1)^n)}の実行は、
467 @code{maxposex}がn以上の時だけ機能します。
469 @opencatbox
470 @category{Expressions}
471 @closecatbox
472 @end defvr
474 @c NEEDS CLARIFICATION, EXAMPLES
475 @c -----------------------------------------------------------------------------
476 @anchor{lassociative}
477 @defvr {宣言} lassociative
479 @code{declare (g, lassociative)}は、
480 Maximaの整理器に
481 @code{g}が左結合であることを告げます。
482 例えば、@code{g (g (a, b), g (c, d))}は@code{g (g (g (a, b), c), d)}に整理されます。
484 @opencatbox
485 @category{Declarations and inferences} @category{Operators} @category{Simplification}
486 @closecatbox
487 @end defvr
489 @c NEEDS CLARIFICATION, EXAMPLES
490 @c WHAT'S UP WITH THE QUOTE MARKS ??
492 @c -----------------------------------------------------------------------------
493 @anchor{linear}
494 @defvr {宣言} linear
496 Maximaの演算子のプロパティの1つ。
497 そう宣言された1変数関数@code{f}に関して、
498 "expansion" @code{f(x + y)}は@code{f(x) + f(y)}を出力し、
499 @code{a}が定数の@code{f(a*x)}は、@code{a*f(x)}を出力します。
500 2つ以上の引数の関数に関しては、
501 「線形性」は、@code{sum}や@code{integrate}の場合のように定義されます。
502 すなわち、@code{a}と@code{b}が@code{x}に独立の場合,
503 @code{f (a*x + b, x)}は@code{a*f(x,x) + b*f(1,x)}を出力します。
505 @code{linear}は、@code{additive}かつ@code{outative}と同値です。
506 @code{opproperties}も参照してください。
508 @opencatbox
509 @category{Declarations and inferences} @category{Operators} @category{Simplification}
510 @closecatbox
511 @end defvr
513 @c NEEDS EXAMPLES
515 @c -----------------------------------------------------------------------------
516 @anchor{maxnegex}
517 @defvr {オプション変数} maxnegex
518 デフォルト値: 1000
520 @code{maxnegex}は、
521 @code{expand}コマンドによって展開される最大の負の指数です。
522 (@code{maxposex})も参照してください。)
524 @opencatbox
525 @category{Expressions}
526 @closecatbox
527 @end defvr
529 @c NEEDS EXAMPLES
531 @c -----------------------------------------------------------------------------
532 @anchor{maxposex}
533 @defvr {オプション変数} maxposex
534 デフォルト値: 1000
536 @code{maxposex}は、
537 @code{expand}コマンドで展開される最大指数です。
538 (@code{maxnegex})も参照してください。)
540 @opencatbox
541 @category{Expressions}
542 @closecatbox
543 @end defvr
545 @c NEEDS EXAMPLES
547 @c -----------------------------------------------------------------------------
548 @anchor{multiplicative}
549 @defvr {宣言} multiplicative
551 @code{declare (f, multiplicative)}は、Maxima整理器に
552 @code{f}が乗法的であることを告げます。
554 @enumerate
555 @item
556 もし@code{f}が1変数関数なら、
557 整理器が積に適用された@code{f}に出会うといつでも、
558 @code{f}はその積上に分配されます。
559 例えば、@code{f(x*y)}は@code{f(x)*f(y)}に整理されます。
561 @item
562 もし@code{f}が多変数関数なら、
563 乗法性は、@code{f}の最初の引数の乗法性として定義されます。
564 例えば、
565 @code{f (g(x) * h(x), x)}は、@code{f (g(x) ,x) * f (h(x), x)}に整理されます。
566 @end enumerate
568 この式整理は、@code{f}が@code{product (x[i], i, m, n)}の形の式に適用された時にはなされません。
570 @opencatbox
571 @category{Declarations and inferences} @category{Expressions} @category{Simplification}
572 @closecatbox
573 @end defvr
575 @c NEEDS WORK
577 @c -----------------------------------------------------------------------------
578 @anchor{multthru}
579 @deffn  {関数} multthru (@var{expr})
580 @deffnx {関数} multthru (@var{expr_1}, @var{expr_2})
582 @var{expr}の(和の)因子に@var{expr}の他の因子を掛ける。
583 すなわち、@var{expr}は@code{@var{f_1} @var{f_2} ... @var{f_n}}です。
584 ここで、少なくとも1つの因子、@var{f_i}としましょう、は項の和です。
585 この和の各項に、積の中の他の因子を掛けます。
586 (すなわち、@var{f_i}を除いた因子すべてです。)
587 @code{multthru}は、指数化された和を展開しません。
588 この関数は、(可換であれ非可換であれ)積を和上に分配する最も速い方法です。
589 割り算は積として表現されるので、
590 @code{multthru}は積によって和を割ることにも使うことができます。
592 @code{multthru (@var{expr_1}, @var{expr_2})}は、
593 (和もしくは等式の)@var{expr_2}の中の各項に@var{expr_1}を掛けます。
594 もし@var{expr_1}がそれ自身和でなければ、
595 この形式は@code{multthru (@var{expr_1}*@var{expr_2})}と同値です。
597 @example
598 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
599                       1        x         f(x)
600 (%o1)             - ----- + -------- - --------
601                     x - y          2          3
602                             (x - y)    (x - y)
603 (%i2) multthru ((x-y)^3, %);
604                            2
605 (%o2)             - (x - y)  + x (x - y) - f(x)
606 (%i3) ratexpand (%);
607                            2
608 (%o3)                   - y  + x y - f(x)
609 (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
610                         10  2              2  2
611                  (b + a)   s  + 2 a b s + a  b
612 (%o4)            ------------------------------
613                                   2
614                              a b s
615 (%i5) multthru (%);  /* note that this does not expand (b+a)^10 */
616                                         10
617                        2   a b   (b + a)
618 (%o5)                  - + --- + ---------
619                        s    2       a b
620                            s
621 (%i6) multthru (a.(b+c.(d+e)+f));
622 (%o6)            a . f + a . c . (e + d) + a . b
623 (%i7) expand (a.(b+c.(d+e)+f));
624 (%o7)         a . f + a . c . e + a . c . d + a . b
625 @end example
627 @opencatbox
628 @category{Expressions}
629 @closecatbox
630 @end deffn
632 @c -----------------------------------------------------------------------------
633 @anchor{declaration_nary}
634 @defvr {宣言} nary
636 @code{declare(f, nary)}はMaximaに
637 関数 @code{f}をn項関数として認識するよう指示します。
639 @code{nary}宣言は
640 @mxref{operator_nary, nary}関数をコールするのと同じではありません。
641 @code{declare(f, nary)}は唯一の効果は
642 例えば、 @code{foo(x, foo(y, z))}を
643 @code{foo(x, y, z)}に整理するように
644 入れ子の式をフラットにするようMaxima整理器に指示することです。
645 @mrefdot{declare}も参照してください。
647 例:
649 @example
650 (%i1) H (H (a, b), H (c, H (d, e)));
651 (%o1)               H(H(a, b), H(c, H(d, e)))
652 (%i2) declare (H, nary);
653 (%o2)                         done
654 (%i3) H (H (a, b), H (c, H (d, e)));
655 (%o3)                   H(a, b, c, d, e)
656 @end example
657 @end defvr
659 @c NEEDS CLARIFICATION, EXAMPLES
661 @c -----------------------------------------------------------------------------
662 @anchor{negdistrib}
663 @defvr {オプション変数} negdistrib
664 デフォルト値: @code{true}
666 @code{negdistrib}が@code{true}の時,
667  -1が式上に分配されます。
668 例えば、@code{-(x + y)}は@code{- y - x}になります。
669 @code{false}に設定すると、@code{- (x + y)}はそのまま表示されることになるでしょう。
670 これは時々役に立ちますが、非常に注意してください;
671 @code{simp}フラグ同様に、
672 当然のことながら、Maximaの中でローカルな使用以外には、
673 これは、@code{false}に設定したくないフラグの1つです。
675 @opencatbox
676 @category{Simplification flags and variables}
677 @closecatbox
679 @end defvr
681 @c -----------------------------------------------------------------------------
682 @anchor{opproperties}
683 @defvr {システム変数} opproperties
685 @code{opproperties}は、Maximaの整理器が認識する特殊演算子プロパティのリストです:
686 @code{linear}, @code{additive}, @code{multiplicative}, @code{outative}, @code{evenfun},
687 @code{oddfun}, @code{commutative}, @code{symmetric}, @code{antisymmetric}, @code{nary}, 
688 @code{lassociative}, @code{rassociative}.
690 @opencatbox
691 @category{Global variables} @category{Operators}
692 @closecatbox
693 @end defvr
696 @c NEEDS EXAMPLES
698 @c -----------------------------------------------------------------------------
699 @anchor{outative}
700 @defvr {宣言} outative
702 @code{declare (f, outative)}は、Maximaの整理器に
703 @code{f}の引数の中の定数因子が外に出すことができることを告げます。
705 @enumerate
706 @item
707 もし@code{f}が1変数関数なら、
708 整理器が積に適用された@code{f}に出会うといつでも、その積は定数因子と、ていすうでない因子に分割され、定数因子が外に出されます。
709 例えば、@code{f(a*x)}は、@code{a}を定数とすると、@code{a*f(x)}に整理されます。
710 非アトムな定数因子は外に出されません。
711 @item
712 もし@code{f}が多変数関数なら、
713 outativityは、@code{sum}や@code{integrate}の場合のように定義されます。
714 すなわち、@code{f (a*g(x), x)}は、@code{a}が@code{x}に依らないとすると、
715 @code{a * f(g(x), x)}に整理されます。
716 @end enumerate
718 @code{sum}, @code{integrate}, @code{limit}はすべて@code{outative}です。
720 @opencatbox
721 @category{Declarations and inferences} @category{Operators}
722 @closecatbox
723 @end defvr
725 @c -----------------------------------------------------------------------------
726 @anchor{radcan}
727 @deffn {関数} radcan (@var{expr})
729 対数関数、指数関数、累乗根を含む@var{expr}を、与えられ場変数の順序で式の大きなクラス上の標準形式に整理します;
730 関数的に同値な形式は特殊な形式にマップされます。
731 式の幾分大きなクラスのため、@code{radcan}は正規の形式を生成します。
732 このクラスの2つの式は、必ずしも、同じ結果ではありませんが、それらの差は@code{radcan}によって0に整理されます。
734 いくつかの式のため、@code{radcan}は特殊な時間消費をします。
735 これは、因数分解や指数関数の部分分解展開に基づいた整理のための式のコンポーネントの間のある関係を探求するコストです。
737 @c %e_to_numlog NEEDS ITS OWN @defvar !!!
739 @c %e_to_numlog HAS NO EFFECT ON RADCAN. RADCAN ALWAYS SIMPLIFIES 
740 @c exp(a*log(x)) --> x^a. Commenting the following out. 11/2009
741 @c When @code{%e_to_numlog} is @code{true}, @code{%e^(r*log(expr))} simplifies 
742 @c to @code{expr^r} if @code{r} is a rational number.
744 @c RADEXPAND CONTROLS THE SIMPLIFICATION OF THE POWER FUNCTION, E.G.
745 @c (x*y)^a --> x^a*y^a AND (x^a)^b --> x^(a*b), IF RADEXPAND HAS THE VALUE 'ALL.
746 @c THE VALUE OF RADEXPAND HAS NO EFFECT ON RADCAN. RADCAN ALWAYS SIMPLIFIES
747 @c THE ABOVE EXPRESSIONS. COMMENTING THE FOLLOWING OUT. 11/2009
748 @c When @code{radexpand} is @code{false}, certain transformations are inhibited.
749 @c @code{radcan (sqrt (1-x))} remains @code{sqrt (1-x)} and is not simplified 
750 @c to @code{%i sqrt (x-1)}. @code{radcan (sqrt (x^2 - 2*x + 1))} remains 
751 @c @code{sqrt (x^2 - 2*x + 1)} and is not simplified to @code{x - 1}.
753 例:
755 @c ===beg===
756 @c radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
757 @c radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
758 @c radcan((%e^x-1)/(1+%e^(x/2)));
759 @c ===end===
760 @example
761 (%i1) radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
762                                            a/2
763 (%o1)                            log(x + 1)
765 (%i2) radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
766 (%o2)                                  2
768 (%i3) radcan((%e^x-1)/(1+%e^(x/2)));
769                                      x/2
770 (%o3)                              %e    - 1
771 @end example
773 @opencatbox
774 @category{Simplification functions}
775 @closecatbox
776 @end deffn
778 @c NEEDS CLARIFICATION, EXAMPLES
780 @c -----------------------------------------------------------------------------
781 @anchor{radexpand}
782 @defvr {オプション変数} radexpand
783 デフォルト値: @code{true}
785 @code{radexpand}は、根号のいくつかの整理を制御します。
787 @code{radexpand}が@code{all}の時
788 n乗の積の因子のn番目の根を根号の外に出すようにします。
789 例えば、もし@code{radexpand}が@code{all}なら、
790 @code{sqrt (16*x^2)}は@code{4*x}に整理されます。
792 @c EXPRESS SIMPLIFICATON RULES IN GENERAL CASE, NOT SPECIAL CASE
793 特に、@code{sqrt (x^2)}を考えます。
794 @itemize @bullet
795 @item
796 もし@code{radexpand}が@code{all}もしくは@code{assume (x > 0)}が実行されたなら、
797 @code{sqrt(x^2)}は@code{x}に整理されます。
798 @item
799 もし@code{radexpand}が@code{true}、かつ@code{domain}が@code{real}(これはデフォルトです)なら、
800 @code{sqrt(x^2)}は@code{abs(x)}に整理されます。
801 @item
802 もし@code{radexpand}が@code{false}、もしくは、@code{radexpand}が@code{true}かつ@code{domain}が@code{complex}なら、
803 @code{sqrt(x^2)}は整理されません。
804 @end itemize
806 @c CORRECT STATEMENT HERE ???
807 @code{domain}は、@code{radexpand}が@code{true}の時だけ意味を持つことに注意してください。
809 @opencatbox
810 @category{Simplification flags and variables}
811 @closecatbox
813 @end defvr
816 @c NEEDS CLARIFICATION, EXAMPLES
818 @c -----------------------------------------------------------------------------
819 @anchor{rassociative}
820 @defvr {宣言} rassociative
822 @code{declare (g, rassociative)}は、
823 Maximaの整理器に
824 @code{g}が右結合であることを告げます。
825 例えば、
826 @code{g(g(a, b), g(c, d))}は、@code{g(a, g(b, g(c, d)))}に整理されます。
828 @opencatbox
829 @category{Declarations and inferences} @category{Operators}
830 @closecatbox
831 @end defvr
833 @c NEEDS CLARIFICATION, EXAMPLES
835 @c -----------------------------------------------------------------------------
836 @anchor{scsimp}
837 @deffn {関数} scsimp (@var{expr}, @var{rule_1}, ..., @var{rule_n})
839 順次的な相対整理(Sequential Comparative Simplification) (Stouteによる方法)。
840 @code{scsimp}は、
841 規則@var{rule_1}, ..., @var{rule_n}に従って、
842 @var{expr}を整理しようとします。
843 もしより小さな式が得られたら、
844 プロセスは繰り返されます。
845 そうでなければ、すべての整理が試された後、
846 元の答えを返します。
848 @c MERGE EXAMPLES INTO THIS FILE
849 @code{example (scsimp)}はいくつかの例を表示します。
851 @opencatbox
852 @category{Simplification functions}
853 @closecatbox
854 @end deffn
856 @c -----------------------------------------------------------------------------
857 @anchor{simp}
858 @defvr {オプション変数} simp
859 デフォルト値: @code{true}
861 @code{simp}は整理を有効にします。
862 これは標準です。
863 @code{simp}は@code{evflag}でもあります。
864 それは関数@code{ev}に認識されます。@code{ev}を参照してください。
866 @code{simp}が
867 値@code{false}で@code{evflag}として使われる時、
868 式の評価フェイズの間だけ
869 整理は抑制されます。
870 フラグは評価フェイズに続く整理を抑制できません。
872 例:
874 整理がグローバルにオフにスイッチされます。
875 式@code{sin(1.0)}は数値に整理されません。
876 @code{simp}-フラグは整理をオンにスイッチします。
878 @c ===beg===
879 @c simp:false;
880 @c sin(1.0);
881 @c sin(1.0),simp;
882 @c ===end===
883 @example
884 (%i1) simp:false;
885 (%o1)                                false
886 (%i2) sin(1.0);
887 (%o2)                              sin(1.0)
888 (%i3) sin(1.0),simp;
889 (%o3)                          .8414709848078965
890 @end example
892 整理が再びオンにスイッチされます。
893 @code{simp}-フラグは完全に整理を抑制できません。
894 割り当ては式の評価フェイズの間に起こるので、
895 出力は整理された式を示しますが、
896 変数@code{x}は、値として未整理の式を持ちます。
898 @c ===beg===
899 @c simp:true;
900 @c x:sin(1.0),simp:false;
901 @c :lisp $x
902 @c ===end===
903 @example
904 (%i4) simp:true;
905 (%o4)                                true
906 (%i5) x:sin(1.0),simp:false;
907 (%o5)                          .8414709848078965
908 (%i6) :lisp $X
909 ((%SIN) 1.0)
910 @end example
912 @opencatbox
913 @category{Evaluation flags}
914 @closecatbox
915 @end defvr
917 @c NEEDS CLARIFICATION, EXAMPLES
919 @c -----------------------------------------------------------------------------
920 @anchor{symmetric}
921 @defvr {宣言} symmetric
923 @code{declare (h, symmetric)}は、Maximaの整理器に
924 @code{h}が対称関数であることを告げます。
925 例えば、@code{h (x, z, y)}は@code{h (x, y, z)}に整理されます。
927 @code{commutative}は@code{symmetric}と同義です。
929 @opencatbox
930 @category{Declarations and inferences} @category{Operators}
931 @closecatbox
932 @end defvr
934 @c -----------------------------------------------------------------------------
935 @anchor{xthru}
936 @deffn {関数} xthru (@var{expr})
938 (和でなければいけない)@var{expr}のすべての項を、
939 共通分母上で、@code{ratsimp}がするように積や指数和を展開することなしに結合させます。
940 @code{xthru}は、因子が陽であるときだけ、有理式の分子と分母の共通因子を消去します。
942 @c REPHRASE IN NEUTRAL TONE (GET RID OF "IT IS BETTER")
943 分子と分母の最大公約数の陽因子を消去するために、式を@code{ratsimp}する前に@code{xthru}を使うのがよい場合があります。
945 @c ===beg===
946 @c ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
947 @c xthru (%);
948 @c ===end===
949 @example
950 (%i1) ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
951 @group
952                                 20
953                  1       (x + 2)   - 2 y       x
954 (%o1)        --------- + --------------- - ---------
955                     19             20             20
956              (y + x)        (y + x)        (y + x)
957 @end group
958 (%i2) xthru (%);
959                                  20
960                           (x + 2)   - y
961 (%o2)                     -------------
962                                    20
963                             (y + x)
964 @end example
966 @opencatbox
967 @category{Expressions}
968 @closecatbox
969 @end deffn