2 * Introduction to simplification::
12 @node Introduction to simplification, Package absimp, simplification, simplification
13 @section Introduction to simplification
15 ディレクトリ@code{maxima/share/simplification}は
16 整理ルールと整理関数を実装するいくつかのスクリプトと整理に関係しないいくつかの関数を含みます。
18 @c Adapted from absimp.usg ----------------------
20 @node Package absimp, Package facexp, Introduction to simplification, simplification
21 @section Package absimp
24 @code{abs}と@code{signum}関数のために
28 組み込み@code{assume}関数で、また、
29 偶数や奇数に関して@code{modedeclare (m, even, n, odd)}のような宣言によって
33 @code{abs}と@code{signum}を使って
34 @code{unitramp}と@code{unitstep}関数を定義します。
36 @code{load ("absimp")}はこのパッケージをロードします。
37 @code{demo (absimp)}はこのパッケージのデモを表示します。
48 (%i1) load ("absimp")$
52 (%i3) diff (abs (x), x);
60 @c disol.usg: "disolate" already in doc/info/Expressions.texi
62 @c elim.usg: "eliminate" already in doc/info/Polynomials.texi
65 @category{Simplification functions}
66 @category{Rules and patterns}
67 @category{Share packages}
68 @category{Package absimp}
72 @c Adapted from facexp.usg ----------------------
73 @c ALL OF THE TEXT IN FACEXP.USG IS VERY VAGUE.
74 @c I HAVE NO IDEA WHAT THESE FUNCTIONS DO.
75 @c ALL OF THESE ITEMS NEED TO BE HEAVILY REVISED
76 @c (ASSUMING THIS PACKAGE IS SOMETHING WE WANT TO INVEST TIME IN)
77 @node Package facexp, Package functs, Package absimp, simplification
78 @section Package facexp
80 @c THIS IS VERY VAGUE. JUST WHAT DOES THIS DO?
82 制御された展開によって式を構造化する能力をユーザーに与えるいくつかの関連関数を含みます。
83 式が物理的意味を持つ変数を含むとき、この能力は特に役に立ちます。
84 そんな式の最も簡潔な形式は、それらの変数に関して式を完全に展開し、
85 その後係数を因数分解することで得られることがしばしばあるからです。
86 この手続きは標準のMaxima関数を使って実行することは難しくありませんが、
87 追加の微調整も望まれていて、これらの仕上げは適用するのが更に難しくなることがあります。
89 関数@code{facsum}とその関連形式は、
90 この方法で式の構造を制御するための便利な手段を提供します。
91 別の関数@code{collectterms}は、
93 式全体を再整理することなく、足し合わせるのに使うことができます。
94 式が非常に大きいとき、この関数は役に立つかもしれません。
96 @c CAN'T FIND ANY SUCH FILE "DIAGEVAL".
97 @c THERE ARE COMMENTED-OUT DEFNS OF FACTENEXPAND, FACEXPTEN, AND FACTORFACEXPTEN
98 @c IN FACEXP (AND NOWHERE ELSE).
99 @c COMMENTING OUT THIS TEXT FOR NOW.
100 @c Note: @code{factenexpand}, @code{facexpten}, and @code{factorfacexpten} are available only
101 @c after loading @code{diageval}. They are special functions used for tensor
104 @code{load ("facexp")}はこのパッケージをロードします。
105 @code{demo (facexp)}はこのパッケージのデモを見せます。
108 @category{Expressions}
109 @category{Share packages}
110 @category{Package facexp}
114 @c THIS IS VERY VAGUE. JUST WHAT DOES THIS DO?
115 @c SOME EXAMPLES WOULD HELP HERE
116 @deffn {関数} facsum (@var{expr}, @var{arg_1}, ..., @var{arg_n})
117 引数@var{arg_1}, ..., @var{arg_n}に依存する
119 引数は@code{ratvars}に適した任意の形式か、そんな形式のリストを取り得ます。
121 返される形式は、引数に関して完全に展開され、引数の係数は因数分解されます。
122 これらの係数は、非合理的な意味合いを除いて引数に依存しません。
124 引数のいずれかがリストなら、リストすべては1つのリストに結合されて、
125 引数の係数に対して@code{factor}をコールする代わりに
127 これらの係数に対して自分自身をコールします。
128 この再帰コールに関しては、上記で新しく構成されたリストが新しい引数リストとして使われます。
129 この処理は、リストの中に望まれた要素を入れ子にすることで、任意の深さまで繰り返すことができます。
132 It is possible that one may wish to @code{facsum} with respect to more
133 complicated subexpressions, such as
134 @code{log (x + y)}のような、より複雑な部分式に関して
135 @code{facsum}したいかも知れません。
138 @c CUTTING THIS OUT, BECAUSE IT IS OBVIOUSLY NOT CORRECT
139 @c SEE EXAMPLE IN BUG REPORT ID: 2834336 - ratsimp vs facsum
140 @c With no variable specification, for example @code{facsum (@var{expr})}, the
141 @c result returned is the same as that returned by @code{ratsimp (@var{expr})}.
144 式に関して、先頭演算子によってのみ指定された上記形式いずれかが欲しいかもしれません。
146 すべての@code{log}に関して@code{facsum}したかもしれません。
148 この方法で扱われる特定の@code{log}か、
149 代わりに式@code{operator (log)}や@code{'operator (log)}
152 演算子@var{op_1}, ..., @var{op_n}に関して
153 式@var{expr}を@code{facsum}したいなら、
154 @code{facsum (@var{expr}, operator (@var{op_1}, ..., @var{op_n}))}を評価します。
155 @code{operator}形式はリスト引数の中でも可能です。
158 スイッチ@code{facsum_combine}と@code{nextlayerfactor}の設定は
159 @code{facsum}の結果に影響するかもしれません。
162 @category{Package facexp}
163 @category{Expressions}
168 @defvr {グローバル変数} nextlayerfactor
171 @code{nextlayerfactor}が@code{true}の時、
173 引数の係数の因数分解された形式の因子に適用されます。
177 @code{facsum}への再帰コールが起こる時はいつでも、全体としてそれぞれの係数に適用されます。
181 アトム@code{nextlayerfactor}を入れると、
182 @code{nextlayerfactor: true}の効果がありますが、
185 @code{nextlayerfactor}はいつも
186 @code{true}か@code{false}にバインドされているので、
187 @code{facsum}の引数リストの中に現れる時はいつでも、
188 シングルクォートで表さなければいけません。
191 @category{Package facexp}
192 @category{Expressions}
197 @defvr {グローバル変数} facsum_combine
201 @code{facsum_combine}は
202 @code{facsum}が返す最終結果の形式を制御します。
203 もし@code{facsum_combine}が@code{false}なら、
204 形式は既に記述したような完全に展開された和として返されますが、
206 返される式は、既に記述した形式の多項式の比です。
208 有理式の分子と分母両方を@code{facsum}したいが、
210 このスイッチの@code{true}設定は役に立ちます。
213 @category{Package facexp}
214 @category{Expressions}
219 @deffn {関数} factorfacsum (@var{expr}, @var{arg_1}, ... @var{arg_n})
220 @var{expr}の因子に関して引数として
221 @var{arg_1}, ... @var{arg_n}を付けて@code{facsum}をコールすることで得られる
223 もし@var{expr}の因子のいずれかがべきに累乗されるなら、
224 因子と指数と両方がこの方法で処理されます。
227 @category{Package facexp}
228 @category{Expressions}
233 @c -----------------------------------------------------------------------------
234 @anchor{collectterms}
235 @deffn {関数} collectterms (@var{expr}, @var{arg_1}, ..., @var{arg_n})
237 もしいくつかの式が@code{facsum}もしくは@code{factorfacsum}, @code{factenexpand}, @code{facexpten},
238 @code{factorfacexpten}で整理されていて、それらが一緒に加算されているなら、
239 関数@code{collectterms}を使ってそれらを結合することが望まれる場合があります。
240 @code{collectterms}は、@code{nextlayerfactor}を除いてこれらの他の関連した関数に渡すことができる引数すべてを
242 @code{collectterms}の利点は、@code{facsum}と似た形式を返すことです。
243 しかし、既に@code{facsum}で処理された加算形式なのでこの処理を繰り返す必要はありません。
244 この能力は加算する式が非常に大きい時特に役立ちます。
247 @category{Package facexp}
248 @category{Expressions}
252 @c Adapted from functs.usg ----------------------
254 @c conjugate already described in doc/info/Matrices.texi
255 @node Package functs, Package ineq, Package facexp, simplification
256 @section Package functs
259 @category{Share packages}
260 @category{Package functs}
263 @deffn {関数} rempart (@var{expr}, @var{n})
264 式@var{expr}からパーツ@var{n}を取り除きます。
266 もし@var{n}が形式@code{[@var{l}, @var{m}]}のリストなら、
267 パーツ@var{l}から@var{m}までが取り除かれます。
269 この関数を使うには、最初に@code{load("functs")}を書いてください。
272 @category{Package functs}
273 @category{Expressions}
278 @deffn {関数} wronskian ([@var{f_1}, ..., @var{f_n}], @var{x})
279 変数@var{x}に関する式のリスト[@var{f_1}, ..., @var{f_n}]の
282 式のリストのWronskian行列式です。
284 @code{wronskian}を使うには、最初に@code{load("functs")}してください。例えば:
288 @c wronskian([f(x), g(x)],x);
291 (%i1) load("functs")$
292 (%i2) wronskian([f(x), g(x)],x);
293 (%o2) matrix([f(x),g(x)],['diff(f(x),x,1),'diff(g(x),x,1)])
297 @category{Package functs}
298 @category{Differential calculus}
303 @c adjoint already described in doc/info/Matrices.texi
305 @deffn {関数} tracematrix (@var{M})
306 行列@var{M}の跡(対角要素の和)を返します。
308 この関数を使うには、最初に@code{load("functs")}を書いてください。
311 @category{Package functs}
317 @deffn {関数} rational (@code{z})
319 @var{z}の分子と分母に分母の複素共役を掛けます。
320 もし与えられたものがそうであれば、正準有理式(CRE)形式を返し、
323 この関数を使うには、最初に@code{load("functs")}を書いてください。
326 @category{Package functs}
327 @category{Expressions}
332 @c uprobe calls ?uprobe and assumes file is a list => obsolete, not common lisp
334 @c kronecker superseded by kron_delta in src/nset.lisp
336 @deffn {関数} nonzeroandfreeof (@var{x}, @var{expr})
338 @code{freeof (@var{x}, @var{expr})}が@code{true}を返すなら、
340 そうでなければ、@code{false}を返します。
342 この関数を使うには、最初に@code{load("functs")}を書いてください。
345 @category{Package functs}
346 @category{Expressions}
351 @deffn {関数} linear (@var{expr}, @var{x})
352 @var{expr}が変数@var{x}に関して線形の式の時、
353 @code{linear}は@code{@var{a}*@var{x} + @var{b}}を返します。
354 ここで、@var{a}はゼロでなく、@var{a}と@var{b}は@var{x}に依存しません。
355 そうでなければ、@code{linear}は@var{expr}を返します。
357 この関数を使うには、最初に@code{load("functs")}を書いてください。
360 @category{Package functs}
361 @category{Expressions}
366 @c -----------------------------------------------------------------------------
368 @deffn {関数} gcdivide (@var{p}, @var{q})
370 @code{takegcd}が@code{true}の時、
371 @code{gcdivide}は多項式@var{p}と@var{q}を最大公約多項式で割り、
374 @code{takegcd}が@code{false}の時、
375 @code{gcdivide}は比@code{@var{p}/@var{q}}を返します。
377 この関数を使うには、最初に@code{load("functs")}を書いてください。
379 @mref{ezgcd}, @mref{gcd}, @mref{gcdex}, @mref{poly_gcd}も参照してください。
384 (%i1) load("functs")$
386 (%i2) p1:6*x^3+19*x^2+19*x+6;
388 (%o2) 6 x + 19 x + 19 x + 6
389 (%i3) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x;
391 (%o3) 6 x + 13 x + 12 x + 13 x + 6 x
392 (%i4) gcdivide(p1, p2);
399 (%i6) gcdivide(p1, p2);
401 6 x + 19 x + 19 x + 6
402 (%o6) ----------------------------------
404 6 x + 13 x + 12 x + 13 x + 6 x
413 @category{Package functs}
414 @category{Polynomials}
418 @c lcm already described in doc/info/Number.texi
420 @deffn {関数} arithmetic (@var{a}, @var{d}, @var{n})
421 算術級数@code{@var{a}, @var{a} + @var{d}, @var{a} + 2*@var{d}, ..., @var{a} + (@var{n} - 1)*@var{d}}の第@var{n}項を返します。
423 この関数を使うには、最初に@code{load("functs")}を書いてください。
426 @category{Package functs}
427 @category{Sums and products}
432 @deffn {関数} geometric (@var{a}, @var{r}, @var{n})
433 幾何級数@code{@var{a}, @var{a}*@var{r}, @var{a}*@var{r}^2, ..., @var{a}*@var{r}^(@var{n} - 1)}の第@var{n}項を返します。
435 この関数を使うには、最初に@code{load("functs")}を書いてください。
438 @category{Package functs}
439 @category{Sums and products}
444 @deffn {関数} harmonic (@var{a}, @var{b}, @var{c}, @var{n})
445 調和級数@code{@var{a}/@var{b}, @var{a}/(@var{b} + @var{c}), @var{a}/(@var{b} + 2*@var{c}), ..., @var{a}/(@var{b} + (@var{n} - 1)*@var{c})}の第@var{n}項を返します。
447 この関数を使うには、最初に@code{load("functs")}を書いてください。
450 @category{Package functs}
451 @category{Sums and products}
456 @deffn {関数} arithsum (@var{a}, @var{d}, @var{n})
457 算術級数の1から@var{n}までの和を返します。
459 この関数を使うには、最初に@code{load("functs")}を書いてください。
462 @category{Package functs}
463 @category{Sums and products}
468 @deffn {関数} geosum (@var{a}, @var{r}, @var{n})
469 幾何級数の1から@var{n}までの和を返します。
470 もし@var{n}が無限大(@code{inf})なら、
471 @var{r}の絶対値が1未満でのみ、和は有限です。
473 この関数を使うには、最初に@code{load("functs")}を書いてください。
476 @category{Package functs}
477 @category{Sums and products}
482 @deffn {関数} gaussprob (@var{x})
483 Gaussian確率函数@code{%e^(-@var{x}^2/2) / sqrt(2*%pi)}を返します。
485 この関数を使うには、最初に@code{load("functs")}を書いてください。
488 @category{Package functs}
489 @category{Mathematical functions}
494 @deffn {関数} gd (@var{x})
495 Gudermannian函数@code{2*atan(%e^x)-%pi/2}を返します。
497 この関数を使うには、最初に@code{load("functs")}を書いてください。
500 @category{Package functs}
501 @category{Mathematical functions}
506 @deffn {関数} agd (@var{x})
507 逆Gudermannian函数@code{log (tan (%pi/4 + x/2)))}を返します。
509 この関数を使うには、最初に@code{load("functs")}を書いてください。
512 @category{Package functs}
513 @category{Mathematical functions}
518 @deffn {関数} vers (@var{x})
519 正矢(せいし)@code{1 - cos (x)}を返します。
521 この関数を使うには、最初に@code{load("functs")}を書いてください。
524 @category{Package functs}
525 @category{Mathematical functions}
530 @deffn {関数} covers (@var{x})
531 余矢(よし)@code{1 - sin (@var{x})}を返します。
533 この関数を使うには、最初に@code{load("functs")}を書いてください。
536 @category{Package functs}
537 @category{Mathematical functions}
542 @deffn {関数} exsec (@var{x})
543 外正割(exsecant)@code{sec (@var{x}) - 1}を返します。
545 この関数を使うには、最初に@code{load("functs")}を書いてください。
548 @category{Package functs}
549 @category{Mathematical functions}
554 @deffn {関数} hav (@var{x})
555 半正矢@code{(1 - cos(x))/2}を返します。
557 この関数を使うには、最初に@code{load("functs")}を書いてください。
560 @category{Package functs}
561 @category{Mathematical functions}
566 @c REDUNDANT WITH BINOMIAL COEFFICIENT; CUT IT ??
567 @deffn {関数} combination (@var{n}, @var{r})
568 一度に@var{r}個を取る@var{n}個のオブジェクトの組み合わせの数を返します。
570 この関数を使うには、最初に@code{load("functs")}を書いてください。
573 @category{Package functs}
574 @category{Mathematical functions}
579 @c REDUNDANT WITH PERMUTATIONS FUNCTION IN NSET; CUT IT ??
580 @deffn {関数} permutation (@var{n}, @var{r})
581 @var{n}個のオブジェクトの集合から選択された@var{r}個のオブジェクトの置換の数を返します。
583 この関数を使うには、最初に@code{load("functs")}を書いてください。
586 @category{Package functs}
587 @category{Mathematical functions}
592 @c Adapted from ineq.usg ----------------------
593 @c THIS PACKAGE IS INTERESTING BUT THIS TEXT NEEDS WORK AND EXAMPLES
594 @node Package ineq, Package rducon, Package functs, simplification
595 @section Package ineq
597 @code{ineq}パッケージは不等式の整理規則を含みます。
603 @c a>=4; /* a sample inequality */
604 @c (b>c)+%; /* add a second, strict inequality */
605 @c 7*(x<y); /* multiply by a positive number */
606 @c -2*(x>=3*z); /* multiply by a negative number */
607 @c (1+a^2)*(1/(1+a^2)<=1); /* Maxima knows that 1+a^2 > 0 */
608 @c assume(x>0)$ x*(2<3); /* assuming x>0 */
609 @c a>=b; /* another inequality */
610 @c 3+%; /* add something */
611 @c %-3; /* subtract it out */
612 @c a>=c-b; /* yet another inequality */
613 @c b+%; /* add b to both sides */
614 @c %-c; /* subtract c from both sides */
615 @c -%; /* multiply by -1 */
616 @c (z-1)^2>-2*z; /* determining truth of assertion */
617 @c expand(%)+2*z; /* expand this and add 2*z to both sides */
622 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
623 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
624 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
625 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
626 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
627 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
628 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
629 Warning: Putting rules on '+' or '*' is inefficient, and may not work.
630 (%i2) a>=4; /* a sample inequality */
632 (%i3) (b>c)+%; /* add a second, strict inequality */
634 (%i4) 7*(x<y); /* multiply by a positive number */
636 (%i5) -2*(x>=3*z); /* multiply by a negative number */
638 (%i6) (1+a^2)*(1/(1+a^2)<=1); /* Maxima knows that 1+a^2 > 0 */
641 (%i7) assume(x>0)$ x*(2<3); /* assuming x>0 */
643 (%i8) a>=b; /* another inequality */
645 (%i9) 3+%; /* add something */
647 (%i10) %-3; /* subtract it out */
649 (%i11) a>=c-b; /* yet another inequality */
651 (%i12) b+%; /* add b to both sides */
653 (%i13) %-c; /* subtract c from both sides */
654 (%o13) - c + b + a >= 0
655 (%i14) -%; /* multiply by -1 */
656 (%o14) c - b - a <= 0
657 (%i15) (z-1)^2>-2*z; /* determining truth of assertion */
659 (%o15) (z - 1) > - 2 z
660 (%i16) expand(%)+2*z; /* expand this and add 2*z to both sides */
667 不等式の回りで括弧を使うことについて注意してください;
668 ユーザーが@code{(A > B) + (C = 5)}と入力した時、
669 結果は@code{A + C > B + 5}ですが、@code{A > B + C = 5}は構文エラーであり、
670 @code{(A > B + C) = 5}は完全に何か他のものです。
673 @code{disprule (all)}を実行してください。
675 Maximaが不等式に掛けられる量の符号を決定できない時、
678 最もありふれた仕様の欠陥を以下に例示します:
695 これを0にするデフォルト動作はそのままです。
697 もし@code{X*@var{some_inequality}}とタイプして、
698 Maximaが@code{X}の符号を尋ね、
699 @code{zero} (または@code{z})と答えたなら、
700 プログラムは@code{X*@var{some_inequality}}を返し、
701 @code{X}が0という情報を使いません。
703 データベースは、決定の際、@code{X}を評価する目的ではなく、比較目的のためだけに使われるので、
704 @code{ev (%, x: 0)}を実行すべきです。
707 整理器が、パッケージなしよりたくさんの規則を検証するよう強制されるので、
708 ユーザーはより遅い応答に気がつくかもしれません。
709 だから、これらを利用した後、規則を取り除きたいかもしれません。
710 (あなたが定義したかもしれないものすべてを含み)規則すべてを消すには、
711 @code{kill (rules)}してください;
712 もしくは、もっと選択的にそれらのうちのいくつかだけ消すかもしれません;
713 もしくは、特定の規則に@code{remrule}を使ってください。
715 もし自分の規則を定義した後、このパッケージをロードするなら、
716 同じ名前を持つあなたの規則をつぶすでしょう。
718 @code{*rule1}, ..., @code{*rule8},
719 @code{+rule1}, ..., @code{+rule18},
721 @code{"+"}に関する最初の規則を限定して取り除くための@code{remrule ("+", "+rule1")}とか、
722 二番目の乗法規則の定義を表示するための@code{disprule ("*rule2")}とか、
726 @category{Simplification functions}
727 @category{Rules and patterns}
728 @category{Share packages}
729 @category{Package ineq}
733 @c lrats.usg: "lratsubst" and "fullratsubst" already in doc/info/Polynomials.texi
735 @c Adapted from rducon.usg ----------------------
736 @c THIS IS AN INTERESTING FUNCTION BUT THIS TEXT NEEDS WORK AND EXAMPLES
737 @node Package rducon, Package scifac, Package ineq, simplification
738 @section Package rducon
741 @category{Expressions}
742 @category{Share packages}
743 @category{Package rducon}
747 @deffn {関数} reduce_consts (@var{expr})
748 @var{expr}の定部分式を構成された定アトムで置き換え、
749 これら構成された定数すべての定義を等式のリスト@code{const_eqns}に保存し、
750 修正された@var{expr}を返します。
751 @var{expr}のそれらのパーツは、関数@code{constantp}が施された時@code{true}を返す
754 @code{reduce_consts}を呼び出す前に、
756 declare ([@var{objects to be given the constant property}], constant)$
758 をして、自分の式に現れる定数量のデータベースを設定すべきです。
760 もしこれらの数式計算の後、Fortran出力を生成する予定があるなら、
761 最初のコードセクションの1つはすべての定数の計算であるべきです。
764 map ('fortran, const_eqns)$
768 @code{reduce_consts}に影響する@code{const_eqns}
770 @code{const_prefix} (デフォルト値: @code{xx})
771 定部分式を表すために@code{reduce_consts}が生成するシンボルすべてに接頭として付けるのに使われる文字列です。
773 @code{const_counter} (デフォルト値: 1)は
774 @code{reduce_consts}が見つける定部分式それぞれを表すためのユニークなシンボルを生成するのに使われる整数添字です。
776 @code{load ("rducon")}はこの関数をロードします。
777 @code{demo (rducon)}はこの関数のデモを見せます。
780 @category{Package rducon}
781 @category{Expressions}
786 @c rncomb.usg: "rncombine" already in doc/info/Miscellaneous.texi
788 @c Adapted from scifac.usg ----------------------
789 @node Package scifac, Package sqdnst, Package rducon, simplification
790 @section Package scifac
793 @category{Expressions}
794 @category{Share packages}
795 @category{Package scifac}
799 @deffn {関数} gcfac (@var{expr})
801 科学者が式をより簡単にしようとする時に適用するのと同じ発見的方法の適用を試みる
803 @code{gcfac}は単項式タイプの因数分解に限られます。
804 和に関しては、@code{gcfac}は以下を行います:
810 項の複雑さに関わらず、生じる項の最大の冪を係数として因数分解します。
812 項の隣同士の対を因数分解する時に、(1)と(2)を使います。
815 これらのテクニックを繰り返し、再帰的に適用します。
818 対のすべての可能な再配列の中から最も簡潔な対因数分解された結果を産むものを見つけることの
820 項目(3)は必ずしも、対での因数分解の最善の仕事をしません。
822 @code{load ("scifac")}はこの関数をロードします。
823 @code{demo (scifac)}はこの関数のデモを見せます。
826 @category{Package scifac}
827 @category{Expressions}
832 @c Adapted from sqdnst.usg ----------------------
833 @c THIS FUNCTION IS INTERESTING BUT THIS TEXT NEEDS WORK. HOW DEEPLY CAN SQRT BE NESTED ??
834 @node Package sqdnst, , Package scifac, simplification
835 @section Package sqdnst
837 @deffn {関数} sqrtdenest (@var{expr})
838 可能なら、簡単で、数値的で、二項無理数(binomial surds)の@code{sqrt}をdenestします。
844 @c sqrt(sqrt(3)/2+1)/sqrt(11*sqrt(2)-12);
848 (%i1) load ("sqdnst")$
849 (%i2) sqrt(sqrt(3)/2+1)/sqrt(11*sqrt(2)-12);
853 (%o2) ---------------------
854 sqrt(11 sqrt(2) - 12)
865 @code{(19601-13860 sqrt(2))^(7/4)}に対してのように、
866 @code{sqrtdenest}を複数回適用することが役立ちます。
868 @code{load ("sqdnst")}はこの関数をロードします。
871 @category{Expressions}
872 @category{Share packages}
873 @category{Package sqdnst}
878 @c stopex.usg: "expandwrt", "expandwrt_denom", and "expandwrt_factored" already in doc/info/Simplification.texi