1 @c end concepts Simplification
3 * Functions and Variables for Simplification::
6 @c -----------------------------------------------------------------------------
7 @node Functions and Variables for Simplification, , Simplification, Simplification
8 @section Functions and Variables for Simplification
9 @c -----------------------------------------------------------------------------
11 @c -----------------------------------------------------------------------------
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)}の形の式に適用されたときには
30 @category{Declarations and inferences}
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はその形に変換するのに必要な置換の回数です。
45 @category{Declarations and inferences}
49 @c -----------------------------------------------------------------------------
50 @deffn {関数} combine (@var{expr})
51 同じ分母を持つ項を単一の項に結合することによって和@var{expr}を整理します。
55 @category{Expressions}
59 @c -----------------------------------------------------------------------------
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}と同じです。
70 @category{Declarations and inferences}
74 @c NEEDS CLARIFICATION, EXAMPLES
76 @c -----------------------------------------------------------------------------
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にはできません。
96 @category{Complex variables}
97 @category{Trigonometric functions}
98 @category{Hyperbolic functions}
104 @c -----------------------------------------------------------------------------
105 @anchor{function_distrib}
106 @deffn {関数} distrib (@var{expr})
109 式のトップレベルのみで働き、すなわち、再帰的でなく、
110 @code{expand}より速い点で、@code{expand}とは違います。
111 トップレベルの和すべてを展開する点で、@code{multthru}とは違います。
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)));
122 (%o3) ---------------
124 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
126 (%o4) ---------------------
127 b d + a d + b c + a c
131 @category{Expressions}
135 @c -----------------------------------------------------------------------------
136 @anchor{distribute_over}
137 @defvr {オプション変数} distribute_over
140 @code{distribute_over}は、
141 リストや行列や等式のようなバッグ(重複を許す集合)上の関数のマッピングを制御します。
142 今回、すべてのMaxima関数がこのプロパティを持つ訳ではありません。
143 このプロパティはコマンド@code{properties}で調べることが可能です。
145 @code{distribute_over}を値@code{false}に設定した時、
146 関数のマッピングはオフにスイッチされます。
150 @code{sin}関数はリスト上にマップします:
156 (%i1) sin([x,1,1.0]);
157 (%o1) [sin(x), sin(1), .8414709848078965]
165 @c mod([x,11,2*a],10);
166 @c mod([[x,y,z],11,2*a],10);
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)]
175 @code{floor}関数の行列や等式上のマッピング:
178 @c floor(matrix([a,b],[c,d]));
182 (%i4) floor(matrix([a,b],[c,d]));
183 [ floor(a) floor(b) ]
185 [ floor(c) floor(d) ]
187 (%o5) floor(a) = floor(b)
190 1変数以上の関数は、任意の引数上、または、すべての引数上にマップします:
193 @c expintegral_e([1,2],[x,y]);
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)]]
201 関数がプロパティdistribute_overを持つかチェックします:
207 (%i7) properties(abs);
208 (%o7) [integral, distributes over bags, noun, rule, gradef]
212 @category{Simplification flags and variables}
216 @c -----------------------------------------------------------------------------
218 @defvr {オプション変数} domain
221 @code{domain}が@code{complex}に設定されている時、
222 @code{sqrt (x^2)}は、@code{abs(x)}を返さず、@code{sqrt (x^2)}
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.
230 @category{Simplification flags and variables}
234 @c -----------------------------------------------------------------------------
240 @code{declare(f, evenfun}や @code{declare(f, oddfun}は
241 関数 @code{f}を奇関数か偶関数として認識するように指示します。
246 (%i1) o (- x) + o (x);
248 (%i2) declare (o, oddfun);
250 (%i3) o (- x) + o (x);
252 (%i4) e (- x) - e (x);
254 (%i5) declare (e, evenfun);
256 (%i6) e (- x) - e (x);
261 @c -----------------------------------------------------------------------------
263 @deffn {関数} expand (@var{expr})
264 @deffnx {関数} expand (@var{expr}, @var{p}, @var{n})
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")}でデモが実行できます。
303 @c expr:(x+1)^2*(y+1)^3;
306 @c expr:(x+1)^-2*(y+1)^3;
311 (%i1) expr:(x+1)^2*(y+1)^3;
313 (%o1) (x + 1) (y + 1)
316 (%o2) x y + 2 x y + y + 3 x y + 6 x y + 3 y + 3 x y
318 + 6 x y + 3 y + x + 2 x + 1
319 (%i3) expand(expr,2);
321 (%o3) x (y + 1) + 2 x (y + 1) + (y + 1)
322 (%i4) expr:(x+1)^-2*(y+1)^3;
331 (%o5) ------------ + ------------ + ------------ + ------------
333 x + 2 x + 1 x + 2 x + 1 x + 2 x + 1 x + 2 x + 1
334 (%i6) expand(expr,2,2);
347 @c expr:(1+x)^2*sin(x);
348 @c exponentialize:true;
352 (%i7) expr:(1+x)^2*sin(x);
355 (%i8) exponentialize:true;
357 (%i9) expand(expr,0,0);
359 %i (x + 1) (%e - %e )
360 (%o9) - -------------------------------
365 @category{Expressions}
371 @c -----------------------------------------------------------------------------
373 @deffn {関数} expandwrt (@var{expr}, @var{x_1}, ..., @var{x_n})
375 式@code{expr}を、変数@var{x_1}, ..., @var{x_n}に関して展開します。
377 返される形式は、変数を含む式の和の積を含みません。
378 @var{x_1}, ..., @var{x_n}は、変数、演算子、式であり得ます。
380 デフォルトでは、分母は展開されませんが、これは、スイッチ@code{expandwrt_denom}によって
383 この関数は@file{simplification/stopex.mac}から自動ロードされます。
386 @category{Expressions}
390 @c -----------------------------------------------------------------------------
391 @anchor{expandwert_denom}
392 @defvr {オプション変数} expandwrt_denom
395 @code{expandwrt_denom}は、@code{expandwrt}によって有理式の扱いを制御します。
396 もし@code{true}なら、式の分子も分母も@code{expandwrt}の引数に従って展開されますが、
397 もし@code{expandwrt_denom}が@code{false}なら、分子だけがその方法で展開されます。
400 @category{Expressions}
404 @c NEEDS A STAND-ALONE DESCRIPTION (NOT "IS SIMILAR TO")
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}から自動ロードされます。
418 @category{Expressions}
422 @c -----------------------------------------------------------------------------
424 @defvr {オプション変数} expon
427 @code{expon}は、(@code{expand}のコールに依らず)自動的に展開される負のべき乗の最大指数です。
430 @code{(x+1)^(-5)}は自動的には展開されません。
433 @category{Expressions}
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にすることはできません。
455 @category{Complex variables}
456 @category{Trigonometric functions}
457 @category{Hyperbolic functions}
461 @c NEEDS CLARIFICATION
464 @c -----------------------------------------------------------------------------
466 @defvr {オプション変数} expop
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以上の時だけ機能します。
477 @category{Expressions}
481 @c NEEDS CLARIFICATION, EXAMPLES
482 @c -----------------------------------------------------------------------------
483 @anchor{lassociative}
484 @defvr {宣言} lassociative
486 @code{declare (g, lassociative)}は、
488 @code{g}が左結合であることを告げます。
489 例えば、@code{g (g (a, b), g (c, d))}は@code{g (g (g (a, b), c), d)}に整理されます。
492 @category{Declarations and inferences}
494 @category{Simplification}
498 @c NEEDS CLARIFICATION, EXAMPLES
499 @c WHAT'S UP WITH THE QUOTE MARKS ??
501 @c -----------------------------------------------------------------------------
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)}を出力します。
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}も参照してください。
518 @category{Declarations and inferences}
520 @category{Simplification}
526 @c -----------------------------------------------------------------------------
528 @defvr {オプション変数} maxnegex
532 @code{expand}コマンドによって展開される最大の負の指数です。
533 (@code{maxposex})も参照してください。)
536 @category{Expressions}
542 @c -----------------------------------------------------------------------------
544 @defvr {オプション変数} maxposex
548 @code{expand}コマンドで展開される最大指数です。
549 (@code{maxnegex})も参照してください。)
552 @category{Expressions}
558 @c -----------------------------------------------------------------------------
559 @anchor{multiplicative}
560 @defvr {宣言} multiplicative
562 @code{declare (f, multiplicative)}は、Maxima整理器に
563 @code{f}が乗法的であることを告げます。
568 整理器が積に適用された@code{f}に出会うといつでも、
569 @code{f}はその積上に分配されます。
570 例えば、@code{f(x*y)}は@code{f(x)*f(y)}に整理されます。
574 乗法性は、@code{f}の最初の引数の乗法性として定義されます。
576 @code{f (g(x) * h(x), x)}は、@code{f (g(x) ,x) * f (h(x), x)}に整理されます。
579 この式整理は、@code{f}が@code{product (x[i], i, m, n)}の形の式に適用された時にはなされません。
582 @category{Declarations and inferences}
583 @category{Expressions}
584 @category{Simplification}
590 @c -----------------------------------------------------------------------------
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 この関数は、(可換であれ非可換であれ)積を和上に分配する最も速い方法です。
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})}と同値です。
611 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
613 (%o1) - ----- + -------- - --------
616 (%i2) multthru ((x-y)^3, %);
618 (%o2) - (x - y) + x (x - y) - f(x)
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);
624 (b + a) s + 2 a b s + a b
625 (%o4) ------------------------------
628 (%i5) multthru (%); /* note that this does not expand (b+a)^10 */
631 (%o5) - + --- + ---------
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
641 @category{Expressions}
645 @c -----------------------------------------------------------------------------
646 @anchor{declaration_nary}
649 @code{declare(f, nary)}はMaximaに
650 関数 @code{f}をn項関数として認識するよう指示します。
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}も参照してください。
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);
667 (%i3) H (H (a, b), H (c, H (d, e)));
668 (%o3) H(a, b, c, d, e)
672 @c NEEDS CLARIFICATION, EXAMPLES
674 @c -----------------------------------------------------------------------------
676 @defvr {オプション変数} negdistrib
679 @code{negdistrib}が@code{true}の時,
681 例えば、@code{-(x + y)}は@code{- y - x}になります。
682 @code{false}に設定すると、@code{- (x + y)}はそのまま表示されることになるでしょう。
683 これは時々役に立ちますが、非常に注意してください;
685 当然のことながら、Maximaの中でローカルな使用以外には、
686 これは、@code{false}に設定したくないフラグの1つです。
689 @category{Simplification flags and variables}
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}.
704 @category{Global variables}
712 @c -----------------------------------------------------------------------------
716 @code{declare (f, outative)}は、Maximaの整理器に
717 @code{f}の引数の中の定数因子が外に出すことができることを告げます。
722 整理器が積に適用された@code{f}に出会うといつでも、その積は定数因子と、ていすうでない因子に分割され、定数因子が外に出されます。
723 例えば、@code{f(a*x)}は、@code{a}を定数とすると、@code{a*f(x)}に整理されます。
727 outativityは、@code{sum}や@code{integrate}の場合のように定義されます。
728 すなわち、@code{f (a*g(x), x)}は、@code{a}が@code{x}に依らないとすると、
729 @code{a * f(g(x), x)}に整理されます。
732 @code{sum}, @code{integrate}, @code{limit}はすべて@code{outative}です。
735 @category{Declarations and inferences}
740 @c -----------------------------------------------------------------------------
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}.
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)));
776 (%i1) radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
780 (%i2) radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
783 (%i3) radcan((%e^x-1)/(1+%e^(x/2)));
789 @category{Simplification functions}
793 @c NEEDS CLARIFICATION, EXAMPLES
795 @c -----------------------------------------------------------------------------
797 @defvr {オプション変数} radexpand
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)}を考えます。
811 もし@code{radexpand}が@code{all}もしくは@code{assume (x > 0)}が実行されたなら、
812 @code{sqrt(x^2)}は@code{x}に整理されます。
814 もし@code{radexpand}が@code{true}、かつ@code{domain}が@code{real}(これはデフォルトです)なら、
815 @code{sqrt(x^2)}は@code{abs(x)}に整理されます。
817 もし@code{radexpand}が@code{false}、もしくは、@code{radexpand}が@code{true}かつ@code{domain}が@code{complex}なら、
818 @code{sqrt(x^2)}は整理されません。
821 @c CORRECT STATEMENT HERE ???
822 @code{domain}は、@code{radexpand}が@code{true}の時だけ意味を持つことに注意してください。
825 @category{Simplification flags and variables}
831 @c NEEDS CLARIFICATION, EXAMPLES
833 @c -----------------------------------------------------------------------------
834 @anchor{rassociative}
835 @defvr {宣言} rassociative
837 @code{declare (g, rassociative)}は、
839 @code{g}が右結合であることを告げます。
841 @code{g(g(a, b), g(c, d))}は、@code{g(a, g(b, g(c, d)))}に整理されます。
844 @category{Declarations and inferences}
849 @c NEEDS CLARIFICATION, EXAMPLES
851 @c -----------------------------------------------------------------------------
853 @deffn {関数} scsimp (@var{expr}, @var{rule_1}, ..., @var{rule_n})
855 順次的な相対整理(Sequential Comparative Simplification) (Stouteによる方法)。
857 規則@var{rule_1}, ..., @var{rule_n}に従って、
858 @var{expr}を整理しようとします。
861 そうでなければ、すべての整理が試された後、
864 @c MERGE EXAMPLES INTO THIS FILE
865 @code{example (scsimp)}はいくつかの例を表示します。
868 @category{Simplification functions}
872 @c -----------------------------------------------------------------------------
874 @defvr {オプション変数} simp
877 @code{simp}は整理を有効にします。
879 @code{simp}は@code{evflag}でもあります。
880 それは関数@code{ev}に認識されます。@code{ev}を参照してください。
883 値@code{false}で@code{evflag}として使われる時、
886 フラグは評価フェイズに続く整理を抑制できません。
890 整理がグローバルにオフにスイッチされます。
891 式@code{sin(1.0)}は数値に整理されません。
892 @code{simp}-フラグは整理をオンにスイッチします。
905 (%o3) .8414709848078965
909 @code{simp}-フラグは完全に整理を抑制できません。
910 割り当ては式の評価フェイズの間に起こるので、
912 変数@code{x}は、値として未整理の式を持ちます。
916 @c x:sin(1.0),simp:false;
922 (%i5) x:sin(1.0),simp:false;
923 (%o5) .8414709848078965
929 @category{Evaluation flags}
933 @c NEEDS CLARIFICATION, EXAMPLES
935 @c -----------------------------------------------------------------------------
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}と同義です。
946 @category{Declarations and inferences}
951 @c -----------------------------------------------------------------------------
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}を使うのがよい場合があります。
963 @c ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
967 (%i1) ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
971 (%o1) --------- + --------------- - ---------
973 (y + x) (y + x) (y + x)
984 @category{Expressions}