Examples cleanup
[maxima.git] / doc / info / ja / Polynomials.texi
blob238dd0a12a59b1b8d056e8d7d14429f39c5bcd86
1 @c FOR THE FUNCTIONS WHICH RETURN A CRE, BE SURE TO MENTION THAT
2 @menu
3 * Introduction to Polynomials::  
4 * Functions and Variables for Polynomials::  
5 @end menu
7 @c -----------------------------------------------------------------------------
8 @node Introduction to Polynomials, Functions and Variables for Polynomials, Polynomials, Polynomials
9 @section Introduction to Polynomials
10 @c -----------------------------------------------------------------------------
12 多項式は、Maximaの中では、一般形もしくは、標準有理式(CRE)形として記憶されます。
13 後者は標準形であり、factor, ratsimpなどのような演算によって内部で使われます。
15 標準有理式は、特に
16 (RATFACが@code{true}に設定された時の部分的に因数分解された多項式や有理関数はもちろん)
17 展開された多項式や有理関数に適したある種の表現を構成します。
18 このCRE形では、変数の(最もメインから最小にまでの)順序付けは、
19 式それぞれに仮定されます。
20 多項式は、一連の式の対が続く主変数から成るリストによって再帰的に表現されます。
21 それぞれの対の最初のメンバーは、その項の主変数の指数であり、
22 2番目のメンバーは、その項の係数で、係数は、数、もしくは、再度の形式で表現された別の変数の多項式です。
23 このように、3*X^2-1のCRE形の主要な部分は、(X 2 3 0 -1)であり、
24 2*X*Y+X-3のそれは、
25 Yが主変数と仮定すると(Y 1 (X 1 2) 0 (X 1 1 0 -3)) であり、
26 Xが主変数と仮定すると(X 1 (Y 1 2 0 1) 0 -3)です。
27 「主」であることは、普通、アルファベットの逆順で決定されます。
28 CRE式の「変数」はアトムである必要はありません。
29 実査、主演算子が+ - * /でも、整数べきの^でもない任意の部分式は、
30 それが式の中で現れると、(CRE形の)式の「変数」と考えられます。
31 例えば、式X+SIN(X+1)+2*SQRT(X)+1のCRE変数は、XとSQRT(X)、SIN(X+1)です。
32 もしユーザーがRATVARS関数を使って変数の順序付けを指定しないなら、
33 Maximaはアルファベットの順序付けを選びます。
34 一般に、CREは、有理式、すなわち、分子と分母が共通因子を持たず、分母が正の多項式の比を表します。
35 内部形は、本質的に、変数順序付けリストが先行する多項式の対(分子と分母)です。
36 もし表示される式がCRE形なら、もしくはもしCRE形の部分式を含むなら、
37 シンボル/R/が行ラベルに続きます。
38 式をCRE形に変換することに関してはRAT関数を参照してください。
39 拡張CRE形は、テイラー級数の表現に使われます。
40 有理式の概念が拡張され、変数の指数は、単に正の整数ではなく、正の有理数も負の有理数も取ることができ、係数はそれ自身単なる多項式ではなく上で記載された有理式を取ることができます。
41 これらは内部的にはCRE形に似ていて、その一般化である再帰多項式形によって表現されます。
42 それは、切り詰めの次数のような追加の情報を持ちます。
43 CRE形として、そんな式の行ラベルにはシンボル/T/が続きます。
45 @opencatbox
46 @category{Polynomials} @category{Rational expressions}
47 @closecatbox
49 @c end concepts Polynomials
51 @c -----------------------------------------------------------------------------
52 @node Functions and Variables for Polynomials,  , Introduction to Polynomials, Polynomials
53 @section Functions and Variables for Polynomials
54 @c -----------------------------------------------------------------------------
56 @c -----------------------------------------------------------------------------
57 @anchor{algebraic}
58 @defvr {オプション変数} algebraic
59 デフォルト値: @code{false}
61 代数的整数の整理の効果が現れるようにするためには、
62 @code{algebraic}は@code{true}に設定されなければいけません。
64 @opencatbox
65 @category{Simplification flags and variables}
66 @closecatbox
67 @end defvr
69 @c -----------------------------------------------------------------------------
70 @defvr {オプション変数} berlefact
71 デフォルト値: @code{true}
73 @code{berlefact}が@code{false}の時、
74 Kroneckerの因数分解アルゴリズムが使われます。
75 そうでなければ、Berlekampのアルゴリズム―これがデフォルトですーが使われます。
77 @opencatbox
78 @category{Polynomials}
79 @closecatbox
80 @end defvr
82 @c WHAT IS THIS ABOUT EXACTLY ??
84 @c -----------------------------------------------------------------------------
85 @deffn {関数} bezout (@var{p1}, @var{p2}, @var{x})
87 @code{resultant}コマンドの代替。
88 行列を返します。
89 この行列の@code{determinant}は、望みの結果です。
91 @opencatbox
92 @category{Polynomials}
93 @closecatbox
94 @end deffn
96 @c REWORD THIS ITEM -- COULD BE MORE CONCISE
98 @c -----------------------------------------------------------------------------
99 @deffn {関数} bothcoef (@var{expr}, @var{x})
101 最初のメンバーが@var{expr}の中の@var{x}の
102 (もし@var{expr}がCRE形なら@code{ratcoef}が見つけるような)
103 係数であり、
104 2番目のメンバーが@var{expr}の残りの部分であるリストを返します。
105 例えば、
106 @code{@var{expr} = A*@var{x} + B}の@code{[A, B]}。
108 例:
109 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
110 @c islinear (expr, x) := block ([c],
111 @c         c: bothcoef (rat (expr, x), x),
112 @c         is (freeof (x, c) and c[1] # 0))$
113 @c islinear ((r^2 - (x - r)^2)/x, x);
115 @example
116 (%i1) islinear (expr, x) := block ([c],
117         c: bothcoef (rat (expr, x), x),
118         is (freeof (x, c) and c[1] # 0))$
119 (%i2) islinear ((r^2 - (x - r)^2)/x, x);
120 (%o2)                         true
121 @end example
123 @opencatbox
124 @category{Polynomials}
125 @closecatbox
126 @end deffn
128 @c -----------------------------------------------------------------------------
129 @deffn  {関数} coeff (@var{expr}, @var{x}, @var{n})
130 @deffnx {関数} coeff (@var{expr}, @var{x})
132 @var{expr}の@code{@var{x}^@var{n}}の係数を返します。
133 ここで、@var{expr}は@var{x}の多項式か単項式です。
135 @code{coeff(@var{expr}, @var{x}^@var{n})}は
136 @code{coeff(@var{expr}, @var{x}, @var{n})}と同値です。
137 @code{coeff(@var{expr}, @var{x}, 0)}は
138 @var{x}を含まない@var{expr}の剰余項を返します。
139 もし省略されたら、@var{n}は1が仮定されます。
141 @var{x}は単純変数か添字付き変数か、演算子1つとその引数のすべてから構成されるexprの部分式です。
143 @code{expand}か@code{factor}を適用することで、
144 @var{expr}と同値な式の係数を計算することが可能かもしれません。
145 @code{coeff}自身は@code{expand}や@code{factor}や他のいかなる関数も
146 適用しません。
148 例:
150 @code{coeff}は@var{expr}の@code{@var{x}^@var{n}}の係数を返します。
152 @c ===beg===
153 @c coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
154 @c ===end===
155 @example
156 (%i1) coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
157                                 3
158 (%o1)                          b
159 @end example
161 @code{coeff(@var{expr}, @var{x}^@var{n})}は
162 @code{coeff(@var{expr}, @var{x}, @var{n})}と同値です。
164 @c ===beg===
165 @c coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
166 @c coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
167 @c ===end===
168 @example
169 (%i1) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
170 (%o1)                         - c
171                                  3
172 (%i2) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
173 (%o2)                         - c
174                                  3
175 @end example
177 @code{coeff(@var{expr}, @var{x}, 0)}は
178 @var{expr}の@var{x}を含まない剰余項です。
180 @c ===beg===
181 @c coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
182 @c ===end===
183 @example
184 (%i1) coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
185                             3  3
186 (%o1)                      c  u  + a u
187 @end example
189 @var{x}は単純変数か添字付き変数か、演算子1つとその引数のすべてから構成されるexprの部分式です。
191 @c ===beg===
192 @c coeff (h^4 - 2*%pi*h^2 + 1, h, 2);
193 @c coeff (v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
194 @c coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
195 @c coeff ((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
196 @c ===end===
197 @example
198 (%i1) coeff (h^4 - 2*%pi*h^2 + 1, h, 2);
199 (%o1)                        - 2 %pi
200 (%i2) coeff (v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
201 (%o2)                        - 2 %pi
202 (%i3) coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
203                                 3
204 (%o3)                        sin (x)
205 (%i4) coeff ((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
206 (%o4)                         c - d
207 @end example
209 @code{coeff}自身は@code{expand}や@code{factor}や他のいかなる関数も
210 適用しません。
212 @c ===beg===
213 @c coeff (c*(a + b)^3, a);
214 @c expand (c*(a + b)^3);
215 @c coeff (%, a);
216 @c coeff (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
217 @c factor (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
218 @c coeff (%, (a + b)^3);
219 @c ===end===
220 @example
221 (%i1) coeff (c*(a + b)^3, a);
222 (%o1)                           0
223 (%i2) expand (c*(a + b)^3);
224                  3          2        2        3
225 (%o2)           b  c + 3 a b  c + 3 a  b c + a  c
226 (%i3) coeff (%, a);
227                                 2
228 (%o3)                        3 b  c
229 (%i4) coeff (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
230 (%o4)                           0
231 (%i5) factor (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
232                                   3
233 (%o5)                      (b + a)  c
234 (%i6) coeff (%, (a + b)^3);
235 (%o6)                           c
236 @end example
238 @code{coeff}はリスト、行列、等式上を散逸します。
240 @c ===beg===
241 @c coeff ([4*a, -3*a, 2*a], a);
242 @c coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x);
243 @c coeff (a*u - b*v = 7*u + 3*v, u);
244 @c ===end===
245 @example
246 (%i1) coeff ([4*a, -3*a, 2*a], a);
247 (%o1)                      [4, - 3, 2]
248 (%i2) coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x);
249                           [  a    b  ]
250 (%o2)                     [          ]
251                           [ - c  - d ]
252 (%i3) coeff (a*u - b*v = 7*u + 3*v, u);
253 (%o3)                         a = 7
254 @end example
256 @opencatbox
257 @category{Polynomials}
258 @closecatbox
259 @end deffn
261 @c -----------------------------------------------------------------------------
262 @deffn {関数} content (@var{p_1}, @var{x_1}, @dots{}, @var{x_n})
263 最初のメンバーが、多項式変数@var{p_1}の@var{x_n}
264 に関する項の係数(これが中身です)の最大公約数であり、
265 2番目のメンバーが中身で多項式@var{p_1}を割ったものであるリストを返します。
266 @c APPEARS TO WORK AS ADVERTISED -- ONLY x_n HAS ANY EFFECT ON THE RESULT
267 @c WHAT ARE THE OTHER VARIABLES x_1 THROUGH x_{n-1} FOR ??
269 例:
270 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
271 @c content (2*x*y + 4*x^2*y^2, y);
273 @example
274 (%i1) content (2*x*y + 4*x^2*y^2, y);
275 @group
276                                    2
277 (%o1)                   [2 x, 2 x y  + y]
278 @end group
279 @end example
281 @opencatbox
282 @category{Polynomials}
283 @closecatbox
284 @end deffn
286 @c -----------------------------------------------------------------------------
287 @deffn {関数} denom (@var{expr})
289 有理式@var{expr}の分母を返します。
291 @opencatbox
292 @category{Expressions}
293 @closecatbox
294 @end deffn
296 @c -----------------------------------------------------------------------------
297 @deffn {関数} divide (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
299 メインの多項式変数@var{x_n}に関して、
300 多項式@var{p_2}で割った多項式@var{p_1}の商と余りを計算します。
301 @c SPELL OUT THE PURPOSE OF THE OTHER VARIABLES
302 他の変数は、@code{ratvars}関数の中でようなものです。
303 結果は、最初の要素が商で、2番目の要素が余りのリストです。
305 例:
306 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
307 @c divide (x + y, x - y, x);
308 @c divide (x + y, x - y);
310 @example
311 (%i1) divide (x + y, x - y, x);
312 (%o1)                       [1, 2 y]
313 (%i2) divide (x + y, x - y);
314 (%o2)                      [- 1, 2 x]
315 @end example
317 @noindent
318 @code{y}は2番目の例の主変数であることに注意してください。
320 @opencatbox
321 @category{Polynomials}
322 @closecatbox
323 @end deffn
325 @c -----------------------------------------------------------------------------
326 @deffn {関数} eliminate ([@var{eqn_1}, @dots{}, @var{eqn_n}], [@var{x_1}, @dots{}, @var{x_k}])
328 連続する結果を取ることによって、式(もしくは0に等しいと仮定された式)から変数を消去します。
329 これは、@var{k}個の変数@var{x_1}, ..., @var{x_k}が消去された
330 @code{@var{n} - @var{k}}個の式のリストを返します。
331 最初、@var{x_1}が消去され、@code{@var{n} - 1}個の式をもたらし、
332 そして、変数@var{x_2}が消去され、などなど。
333 もし@code{@var{k} = @var{n}}なら、
334 変数@var{x_1}, ..., @var{x_k}に依らないリストの中の単一式が返されます。
335 この場合、最後の変数について最後の結果を解くため、@code{solve}がコールされます。
337 例:
339 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
340 @c expr1: 2*x^2 + y*x + z;
341 @c expr2: 3*x + 5*y - z - 1;
342 @c expr3: z^2 + x - y^2 + 5;
343 @c eliminate ([expr3, expr2, expr1], [y, z]);
344 @example
345 (%i1) expr1: 2*x^2 + y*x + z;
346                                       2
347 (%o1)                    z + x y + 2 x
348 (%i2) expr2: 3*x + 5*y - z - 1;
349 (%o2)                  - z + 5 y + 3 x - 1
350 (%i3) expr3: z^2 + x - y^2 + 5;
351                           2    2
352 (%o3)                    z  - y  + x + 5
353 (%i4) eliminate ([expr3, expr2, expr1], [y, z]);
354              8         7         6          5          4
355 (%o4) [7425 x  - 1170 x  + 1299 x  + 12076 x  + 22887 x
357                                     3         2
358                             - 5154 x  - 1291 x  + 7688 x + 15376]
359 @end example
361 @opencatbox
362 @category{Polynomials} @category{Algebraic equations}
363 @closecatbox
364 @end deffn
366 @c -----------------------------------------------------------------------------
367 @anchor{ezgcd}
368 @deffn {関数} ezgcd (@var{p_1}, @var{p_2}, @var{p_3}, @dots{})
369 最初の要素が、多項式@var{p_1}, @var{p_2}, @var{p_3}, @dots{}の最大公約数で、
370 残りの要素が、多項式を最大公約数で割ったものであるリストを返します。
371 これはいつも@code{ezgcd}アルゴリズムを使います。
373 @mref{gcd}, @mref{gcdex}, @mref{gcdivide}, @mref{poly_gcd}も参照してください。
375 例:
377 三つの多項式は最大公約数 @code{2*x-3}を持ちます。
378 GCDは最初、関数 @code{gcd}で計算され、その後、関数 @code{ezgcd}で計算されます。
380 @example
381 (%i1) p1 : 6*x^3-17*x^2+14*x-3;
382                         3       2
383 (%o1)                6 x  - 17 x  + 14 x - 3
384 (%i2) p2 : 4*x^4-14*x^3+12*x^2+2*x-3;
385                     4       3       2
386 (%o2)            4 x  - 14 x  + 12 x  + 2 x - 3
387 (%i3) p3 : -8*x^3+14*x^2-x-3;
388                           3       2
389 (%o3)                - 8 x  + 14 x  - x - 3
391 (%i4) gcd(p1, gcd(p2, p3));
392 (%o4)                        2 x - 3
394 (%i5) ezgcd(p1, p2, p3);
395                    2               3      2           2
396 (%o5) [2 x - 3, 3 x  - 4 x + 1, 2 x  - 4 x  + 1, - 4 x  + x + 1]
397 @end example
399 @opencatbox
400 @category{Polynomials}
401 @closecatbox
402 @end deffn
404 @c -----------------------------------------------------------------------------
405 @defvr {オプション変数} facexpand
406 デフォルト値: @code{true}
408 @code{facexpand}は、@code{factor}が返すこれ以上小さくできない因子が
409 展開された形式(デフォルト)か再帰的(正規のCRE)形式かを制御します。
411 @opencatbox
412 @category{Polynomials}
413 @closecatbox
415 @end defvr
417 @c -----------------------------------------------------------------------------
418 @anchor{factor}
419 @deffn  {関数} factor (@var{expr})
420 @deffnx {関数} factor (@var{expr}, @var{p})
422 任意の数の変数と関数を含んだ式@var{expr}を整数上既約な因子に因数分解します。
423 @code{factor (@var{expr}, @var{p})}は@var{expr}を、
424 有理数体上で、最小多項式が@var{p}である要素で因数分解します。
426 @code{factor}は、整数を素因数分解するのに@code{ifactor}関数を使います。
428 @code{factorflag}が@code{false}なら有理式の整数因子の素因数分解を抑制します。
430 @code{dontfactor}は、因数分解しない変数のリストに設定されます。
431 (初期状態では空です。)
432 因数分解は、@code{dontfactor}リスト上のそれらより(CRE形式で仮定された変数順序を使って)重要でない変数に関しても
433 実行されません。
435 @code{savefactors}が@code{true}なら、
436 同じ因子のいくつかを含む式の後の因数分解をスピードアップするために、因子の積である式の因子が、ある関数によって保存されます。
438 @code{berlefact}が @code{false}ならKroneckerの因数分解アルゴリズムが使われ、
439 そうでなければ、デフォルトであるBerlekampのアルゴリズムが使われます。
441 @code{intfaclim}が@code{true}なら、
442 もし自明な割り算やPollardのロー法の後、因子が見つからないなら、整数の素因数分解をあきらめます。
443 @code{false}に設定されていれば(これはユーザーが陽に@code{factor}をコールする場合です)整数の完全な素因数分解が企てられます。
444 @code{intfaclim}のユーザー設定は内部で@code{factor}がコールされた時に使われます。
445 @code{intfaclim}はMaximaが大きな整数を素因数分解するのにありえない長い時間を使うことを妨げるようにリセットされます。
447 例:
449 @c EXAMPLES BELOW ADAPTED FROM examples (factor)
450 @c factor (2^63 - 1);
451 @c factor (-8*y - 4*x + z^2*(2*y + x));
452 @c -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2;
453 @c block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
454 @c factor (1 + %e^(3*x));
455 @c factor (1 + x^4, a^2 - 2);
456 @c factor (-y^2*z^2 - x*z^2 + x^2*y^2 + x^3);
457 @c (2 + x)/(3 + x)/(b + x)/(c + x)^2;
458 @c ratsimp (%);
459 @c partfrac (%, x);
460 @c map ('factor, %);
461 @c ratsimp ((x^5 - 1)/(x - 1));
462 @c subst (a, x, %);
463 @c factor (%th(2), %);
464 @c factor (1 + x^12);
465 @c factor (1 + x^99);
466 @example
467 (%i1) factor (2^63 - 1);
468                     2
469 (%o1)              7  73 127 337 92737 649657
470 (%i2) factor (-8*y - 4*x + z^2*(2*y + x));
471 (%o2)               (2 y + x) (z - 2) (z + 2)
472 (%i3) -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2;
473                 2  2        2    2    2
474 (%o3)          x  y  + 2 x y  + y  - x  - 2 x - 1
475 (%i4) block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
476 @group
477                        2
478                      (x  + 2 x + 1) (y - 1)
479 (%o4)                ----------------------
480                            36 (y + 1)
481 @end group
482 (%i5) factor (1 + %e^(3*x));
483                       x         2 x     x
484 (%o5)              (%e  + 1) (%e    - %e  + 1)
485 (%i6) factor (1 + x^4, a^2 - 2);
486                     2              2
487 (%o6)             (x  - a x + 1) (x  + a x + 1)
488 (%i7) factor (-y^2*z^2 - x*z^2 + x^2*y^2 + x^3);
489                        2
490 (%o7)              - (y  + x) (z - x) (z + x)
491 (%i8) (2 + x)/(3 + x)/(b + x)/(c + x)^2;
492                              x + 2
493 (%o8)               ------------------------
494                                            2
495                     (x + 3) (x + b) (x + c)
496 (%i9) ratsimp (%);
497                 4                  3
498 (%o9) (x + 2)/(x  + (2 c + b + 3) x
500      2                       2             2                   2
501  + (c  + (2 b + 6) c + 3 b) x  + ((b + 3) c  + 6 b c) x + 3 b c )
502 (%i10) partfrac (%, x);
503            2                   4                3
504 (%o10) - (c  - 4 c - b + 6)/((c  + (- 2 b - 6) c
506      2              2         2                2
507  + (b  + 12 b + 9) c  + (- 6 b  - 18 b) c + 9 b ) (x + c))
509                  c - 2
510  - ---------------------------------
511      2                             2
512    (c  + (- b - 3) c + 3 b) (x + c)
514                          b - 2
515  + -------------------------------------------------
516              2             2       3      2
517    ((b - 3) c  + (6 b - 2 b ) c + b  - 3 b ) (x + b)
519                          1
520  - ----------------------------------------------
521              2
522    ((b - 3) c  + (18 - 6 b) c + 9 b - 27) (x + 3)
523 (%i11) map ('factor, %);
524 @group
525               2
526              c  - 4 c - b + 6                 c - 2
527 (%o11) - ------------------------- - ------------------------
528                 2        2                                  2
529          (c - 3)  (c - b)  (x + c)   (c - 3) (c - b) (x + c)
531                        b - 2                        1
532             + ------------------------ - ------------------------
533                              2                          2
534               (b - 3) (c - b)  (x + b)   (b - 3) (c - 3)  (x + 3)
535 @end group
536 (%i12) ratsimp ((x^5 - 1)/(x - 1));
537                        4    3    2
538 (%o12)                x  + x  + x  + x + 1
539 (%i13) subst (a, x, %);
540                        4    3    2
541 (%o13)                a  + a  + a  + a + 1
542 (%i14) factor (%th(2), %);
543                        2        3        3    2
544 (%o14)   (x - a) (x - a ) (x - a ) (x + a  + a  + a + 1)
545 (%i15) factor (1 + x^12);
546                        4        8    4
547 (%o15)               (x  + 1) (x  - x  + 1)
548 (%i16) factor (1 + x^99);
549                  2            6    3
550 (%o16) (x + 1) (x  - x + 1) (x  - x  + 1)
552    10    9    8    7    6    5    4    3    2
553  (x   - x  + x  - x  + x  - x  + x  - x  + x  - x + 1)
555    20    19    17    16    14    13    11    10    9    7    6
556  (x   + x   - x   - x   + x   + x   - x   - x   - x  + x  + x
558     4    3            60    57    51    48    42    39    33
559  - x  - x  + x + 1) (x   + x   - x   - x   + x   + x   - x
561     30    27    21    18    12    9    3
562  - x   - x   + x   + x   - x   - x  + x  + 1)
563 @end example
565 @opencatbox
566 @category{Polynomials}
567 @closecatbox
568 @end deffn
570 @c -----------------------------------------------------------------------------
571 @defvr {オプション変数} factorflag
572 デフォルト値: @code{false}
574 @c WHAT IS THIS ABOUT EXACTLY ??
575 @code{factorflag}が@code{false}の時、
576 有理式の整数因子の素因素分解を抑制します。
578 @opencatbox
579 @category{Polynomials}
580 @closecatbox
582 @end defvr
584 @c -----------------------------------------------------------------------------
585 @deffn {関数} factorout (@var{expr}, @var{x_1}, @var{x_2}, @dots{})
587 和@var{expr}を
588 形式@code{f (@var{x_1}, @var{x_2}, @dots{})*g}の項の和に再整理します。
589 ここで、@code{g}は、いかなる@var{x_i}も含まない式の積で、@code{f}は因数分解されています。
591 オプション変数@code{keepfloat}は@code{factorout}に無視されることに注意してください。
593 例:
595 @c ===beg===
596 @c expand (a*(x+1)*(x-1)*(u+1)^2);
597 @c factorout(%,x);
598 @c ===end===
599 @example
600 (%i1) expand (a*(x+1)*(x-1)*(u+1)^2);
601              2  2          2      2      2
602 (%o1)     a u  x  + 2 a u x  + a x  - a u  - 2 a u - a
603 (%i2) factorout(%,x);
604          2
605 (%o2) a u  (x - 1) (x + 1) + 2 a u (x - 1) (x + 1)
606                                               + a (x - 1) (x + 1)
607 @end example
609 @opencatbox
610 @category{Expressions}
611 @closecatbox
612 @end deffn
614 @c -----------------------------------------------------------------------------
615 @deffn {関数} factorsum (@var{expr})
617 @var{expr}の因子(それらは和です)の中の項を
618 それらの和が因数分解可能な項のグループにグループ化しようとします。
619 @code{factorsum}は、
620 @code{expand ((x + y)^2 + (z + w)^2)}の結果を回復できますが、
621 項が共通の変数を持つので、
622 @code{expand ((x + 1)^2 + (x + y)^2)}は回復できません。
624 例:
626 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
627 @c expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
628 @c factorsum (%);
629 @example
630 (%i1) expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
631            2      2                            2      2
632 (%o1) a x z  + a z  + 2 a w x z + 2 a w z + a w  x + v  x
634                                      2        2    2            2
635                         + 2 u v x + u  x + a w  + v  + 2 u v + u
636 (%i2) factorsum (%);
637                                    2          2
638 (%o2)            (x + 1) (a (z + w)  + (v + u) )
639 @end example
641 @opencatbox
642 @category{Expressions}
643 @closecatbox
644 @end deffn
646 @c -----------------------------------------------------------------------------
647 @deffn {関数} fasttimes (@var{p_1}, @var{p_2})
649 多項式の掛け算のための特殊なアルゴリズムを使って、
650 多項式@var{p_1}と@var{p_2}の積を返します。
651 @code{p_1}と@code{p_2}は、
652 多変数で、密で、ほぼ同じサイズであるべきです。
653 @code{n_1}が@code{p_1}の次数で、
654 @code{n_2}が@code{p_2}の次数だとすると、
655 古典的な掛け算は、
656 @code{n_1 n_2}のオーダーですが、
657 @code{fasttimes}は、@code{max (n_1, n_2)^1.585}のオーダーです。
659 @opencatbox
660 @category{Polynomials}
661 @closecatbox
662 @end deffn
664 @c -----------------------------------------------------------------------------
665 @deffn {関数} fullratsimp (@var{expr})
667 @code{fullratsimp}は、ratsimpと式の非有理的整理を、式変形されなくなるまで繰り返し適応し、結果を返します。
669 非有理式が含まれる時、@code{ratsimp}を1回コールと、その後の非有理的(「一般」)整理だけでは、
670 整理された結果を返すのに十分でないかもしれません。
671 時々、複数回のコールが必要とされます。
672 @code{fullratsimp}はこのプロセスを楽にしてくれます。
674 @code{fullratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})}は@code{ratsimp}や@code{rat}と同様
675 複数の引数を取ります。
677 例:
678 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
679 @c expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
680 @c ratsimp (expr);
681 @c fullratsimp (expr);
682 @c rat (expr);
684 @example
685 (%i1) expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
686                        a/2     2   a/2     2
687                      (x    - 1)  (x    + 1)
688 (%o1)                -----------------------
689                               a
690                              x  - 1
691 (%i2) ratsimp (expr);
692                           2 a      a
693                          x    - 2 x  + 1
694 (%o2)                    ---------------
695                               a
696                              x  - 1
697 (%i3) fullratsimp (expr);
698                               a
699 (%o3)                        x  - 1
700 (%i4) rat (expr);
701                        a/2 4       a/2 2
702                      (x   )  - 2 (x   )  + 1
703 (%o4)/R/             -----------------------
704                               a
705                              x  - 1
706 @end example
708 @opencatbox
709 @category{Simplification functions} @category{Rational expressions}
710 @opencatbox
711 @end deffn
713 @c SPELL OUT WHAT fullratsubst DOES INSTEAD OF ALLUDING TO ratsubst AND lratsubst
714 @c THIS ITEM NEEDS MORE WORK
716 @c -----------------------------------------------------------------------------
717 @deffn {関数} fullratsubst (@var{a}, @var{b}, @var{c})
719 結果が変わらなくなるまで、自身を再帰的にコールすることを除いて、
720 @code{ratsubst}と同じです。
721 置き換える式と置き換えられる式が1つ以上の変数を共通に持つ時、
722 この関数は役に立ちます。
724 @code{fullratsubst}は、@code{lratsubst}のフォーマットでも引数を受け付けます。
725 すなわち、最初の引数は、1つの代入等式もしくは、そんな等式のリストで、
726 一方、2番目の引数は処理される式というものです。
728 @code{load ("lrats")}は、@code{fullratsubst}と@code{lratsubst}をロードします。
730 例:
732 @c EXPRESSIONS ADAPTED FROM demo ("lrats")
733 @c CAN PROBABLY CUT OUT THE lratsubst STUFF (lratsubst HAS ITS OWN DESCRIPTION)
734 @c load ("lrats")$
735 @c subst ([a = b, c = d], a + c);
736 @c lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
737 @c lratsubst (a^2 = b, a^3);
738 @c ratsubst (b*a, a^2, a^3);
739 @c fullratsubst (b*a, a^2, a^3);
740 @c fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
741 @c fullratsubst (a^2 = b*a, a^3);
742 @c errcatch (fullratsubst (b*a^2, a^2, a^3));
744 @example
745 (%i1) load ("lrats")$
746 @end example
747 @itemize @bullet
748 @item
749 @code{subst}は多重代入を実行できます。
750 @code{lratsubst}は@code{subst}に類似しています。
751 @end itemize
752 @example
753 (%i2) subst ([a = b, c = d], a + c);
754 (%o2)                         d + b
755 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
756 (%o3)                (d + a c) e + a d + b c
757 @end example
758 @itemize @bullet
759 @item
760 もしただ1つの代入が望まれるなら、
761 最初の引数として1つの等式を与えます。
762 @end itemize
763 @example
764 (%i4) lratsubst (a^2 = b, a^3);
765 (%o4)                          a b
766 @end example
767 @itemize @bullet
768 @item
769 @code{fullratsubst}は、
770 結果が変わらなくなるまで再帰することを除いて、
771 @code{ratsubst}と同値です。
772 @end itemize
773 @example
774 (%i5) ratsubst (b*a, a^2, a^3);
775                                2
776 (%o5)                         a  b
777 (%i6) fullratsubst (b*a, a^2, a^3);
778                                  2
779 (%o6)                         a b
780 @end example
781 @itemize @bullet
782 @item
783 @code{fullratsubst}も、
784 最初の引数として、等式のリストもしくは1つの式を受け入れます。
785 @end itemize
786 @example
787 (%i7) fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
788 (%o7)                           b
789 (%i8) fullratsubst (a^2 = b*a, a^3);
790                                  2
791 (%o8)                         a b
792 @end example
793 @itemize @bullet
794 @item
795 @c REWORD THIS SENTENCE
796 @code{fullratsubst}は、不確定な再帰を起こすかもしれません。
797 @end itemize
798 @example
799 (%i9) errcatch (fullratsubst (b*a^2, a^2, a^3));
801 *** - Lisp stack overflow. RESET
802 @end example
804 @opencatbox
805 @category{Rational expressions}
806 @closecatbox
807 @end deffn
809 @c GCD IS A VARIABLE AND A FUNCTION
810 @c THIS ITEM NEEDS A LOT OF WORK
811 @c -----------------------------------------------------------------------------
812 @anchor{gcd}
813 @deffn {関数} gcd (@var{p_1}, @var{p_2}, @var{x_1}, @dots{})
815 @var{p_1}と@var{p_2}の最大公約数を返します。
816 フラグ@code{gcd}は、どのアルゴリズムを利用するか決めます。
817 @code{gcd}を@code{ez}, @code{subres}, @code{red}, もしくは@code{spmod}
818 設定することは、それぞれ、@code{ezgcd}, 部分終結式@code{prs}, 被約, もしくはモジュラーアルゴリズムを選択します。
819 もし@code{gcd}が@code{false}なら、
820 @code{gcd (@var{p_1}, @var{p_2}, @var{x})}は、すべての@var{x}に関していつも1を返します。
821 (例えば、@code{ratsimp}, @code{factor}, など)多くの関数は、
822 陰にgcdを計算します。
823 斉次多項式に関して、
824 @code{subres}に等しい@code{gcd}を使うことが推奨されます。
825 例えば、@code{gcd (@var{x}^2 - 2*sqrt(2)*@var{x} + 2, @var{x} - sqrt(2))}のように、代数的数が含まれる時
826  @code{algebraic}は@code{true}でなくてはいけません。また、@code{gcd}は@code{ez}であってはいけません。
828 @code{gcd}フラグ―デフォルトは@code{spmod}―は、
829 もし@code{false}なら、
830 式が標準有理式(CRE)形に変換される時も、最大公約数を計算させません。
831 もしgcdが要求されないなら、これは、時々計算のスピードを上げます。
833 @mref{ezgcd}, @mref{gcdex}, @mref{gcdivide}, @mref{poly_gcd}も参照してください。
835 例:
837 @example
838 (%i1) p1:6*x^3+19*x^2+19*x+6; 
839                         3       2
840 (%o1)                6 x  + 19 x  + 19 x + 6
841 (%i2) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x;
842                   5       4       3       2
843 (%o2)          6 x  + 13 x  + 12 x  + 13 x  + 6 x
844 (%i3) gcd(p1, p2);
845                             2
846 (%o3)                    6 x  + 13 x + 6
847 (%i4) p1/gcd(p1, p2), ratsimp;
848 (%o4)                         x + 1
849 (%i5) p2/gcd(p1, p2), ratsimp;
850                               3
851 (%o5)                        x  + x
852 @end example
854 @mref{ezgcd}は
855 一番目の要素が多項式 @var{p_1}と @var{p_2}の最大公約数で、
856 残りの要素が最大公約数で多項式を割ったもので構成されるリストを返します。
858 @example
859 (%i6) ezgcd(p1, p2);
860                     2                     3
861 (%o6)           [6 x  + 13 x + 6, x + 1, x  + x]
862 @end example
864 @opencatbox
865 @category{Polynomials} @category{Rational expressions}
866 @closecatbox
867 @end deffn
869 @c IN NEED OF SERIOUS CLARIFICATION HERE
871 @c -----------------------------------------------------------------------------
872 @anchor{gcdex}
873 @deffn  {関数} gcdex (@var{f}, @var{g})
874 @deffnx {関数} gcdex (@var{f}, @var{g}, @var{x})
876 リスト@code{[@var{a}, @var{b}, @var{u}]}を返します。
877 ここで、@var{u}は@var{f}と@var{g}の最大公約数(gcd)であり、
878 かつ、@code{@var{a} @var{f} + @var{b} @var{g}}は@var{u}に等しいです。
879 引数@var{f}と@var{g}は、1変数多項式であるか、
880 そうでなければ、指定された@b{主}変数@var{x}の多項式でなければいけません。
881 これが機能するには単項イデアル整域にある必要があるからです。
882 gcdは、他の変数の有理関数係数を持つ1変数多項式としての@var{f}と@var{g}に関するgcdを意味します。
884 @code{gcdex}は、ユークリッドのアルゴリズムを実行します。
885 すべてが@code{[f, g, -1]}に直角の@code{L[i]: [a[i], b[i], r[i]]}の列を持ち、
886 @code{q = quotient(r[i]/r[i+1])}なら@code{L[i+2]: L[i] - q L[i+1]}となるように次を組み立て、
887 余り@code{r[i+2]}がゼロの時、@code{L[i+1]}で終了します。
889 引数 @var{f}と @var{g}は整数であり得ます。
890 この場合、@code{gcdex}は関数 @mref{igcdex}を呼び出します。
892 @mref{ezgcd}, @mref{gcd}, @mref{gcdivide}, @mref{poly_gcd}も参照してください。
894 例:
896 @c ===beg===
897 @c gcdex (x^2 + 1, x^3 + 4);
898 @c % . [x^2 + 1, x^3 + 4, -1];
899 @c ===end===
900 @example
901 (%i1) gcdex (x^2 + 1, x^3 + 4);
902 @group
903                        2
904                       x  + 4 x - 1  x + 4
905 (%o1)/R/           [- ------------, -----, 1]
906                            17        17
907 @end group
908 (%i2) % . [x^2 + 1, x^3 + 4, -1];
909 (%o2)/R/                        0
910 @end example
912 @c SORRY FOR BEING DENSE BUT WHAT IS THIS ABOUT EXACTLY
913 以下のgcdは、
914 @code{k(y)[x]}に関して働くので@code{1}です。
915 @code{k[y, x]}で期待する@code{y+1}ではないことに注意してください。
917 @c ===beg===
918 @c gcdex (x*(y + 1), y^2 - 1, x);
919 @c ===end===
920 @example
921 (%i1) gcdex (x*(y + 1), y^2 - 1, x);
922 @group
923                                1
924 (%o1)/R/                 [0, ------, 1]
925                               2
926                              y  - 1
927 @end group
928 @end example
930 @opencatbox
931 @category{Polynomials} @category{Rational expressions}
932 @closecatbox
933 @end deffn
936 @c CHOOSE ONE CHARACTERIZATION OF "GAUSSIAN INTEGERS" AND USE IT WHERE GAUSSIAN INTEGERS ARE REFERENCED
938 @c -----------------------------------------------------------------------------
939 @deffn {関数} gcfactor (@var{n})
941 ガウス整数
942 すなわち、@var{a}と@var{b}が有理整数(元々の整数)
943 である形式@code{@var{a} + @var{b} @code{%i}}
944 の数、@var{n}をガウス整数上に因数分解します。
945 因子は、@var{a}と@var{b}を非負にすることによって正規化されます。
946 @c NEED EXAMPLES HERE
948 @opencatbox
949 @category{Integers}
950 @closecatbox
951 @end deffn
953 @c CHOOSE ONE CHARACTERIZATION OF "GAUSSIAN INTEGERS" AND USE IT WHERE GAUSSIAN INTEGERS ARE REFERENCED
955 @c -----------------------------------------------------------------------------
956 @deffn {関数} gfactor (@var{expr})
958 多項式@var{expr}をガウス整数(虚数単位@code{%i}を付け加えた整数)上で因数分解します。
959 @c "This is like" -- IS IT THE SAME OR NOT ??
960 @var{a}が@code{%i}となる@code{factor (@var{expr}, @var{a}^2+1)}ようなものです。
962 例:
964 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
965 @c gfactor (x^4 - 1);
966 @example
967 (%i1) gfactor (x^4 - 1);
968 (%o1)           (x - 1) (x + 1) (x - %i) (x + %i)
969 @end example
971 @opencatbox
972 @category{Polynomials}
973 @closecatbox
974 @end deffn
976 @c DESCRIBE THIS INDEPENDENTLY OF factorsum
977 @c THIS ITEM NEEDS MORE WORK
979 @c -----------------------------------------------------------------------------
980 @deffn {関数} gfactorsum (@var{expr})
982 @code{factorsum}に似ていますが、
983 @code{factor}の代わりに@code{gfactor}を適用します。
985 @opencatbox
986 @category{Expressions}
987 @closecatbox
988 @end deffn
990 @c -----------------------------------------------------------------------------
991 @deffn {関数} hipow (@var{expr}, @var{x})
993 @var{expr}の中で、@var{x}の、陽に示された最も大きな指数を返します。
994 @var{x}は変数もしくは一般式です。
995 もし@var{x}が@var{expr}の中に現れないなら、
996 @code{hipow}は@code{0}を返します。
998 @code{hipow}は、@code{expr}に等価な式を考慮しません。
999 特に、@code{hipow}は、@code{expr}を展開しないので、
1000 @code{hipow (@var{expr}, @var{x})}と@code{hipow (expand (@var{expr}, @var{x}))}
1001 は、違った結果をもたらすかもしれません。
1003 例:
1005 @example
1006 (%i1) hipow (y^3 * x^2 + x * y^4, x);
1007 (%o1)                           2
1008 (%i2) hipow ((x + y)^5, x);
1009 (%o2)                           1
1010 (%i3) hipow (expand ((x + y)^5), x);
1011 (%o3)                           5
1012 (%i4) hipow ((x + y)^5, x + y);
1013 (%o4)                           5
1014 (%i5) hipow (expand ((x + y)^5), x + y);
1015 (%o5)                           0
1016 @end example
1018 @opencatbox
1019 @category{Expressions}
1020 @closecatbox
1021 @end deffn
1023 @c I SUSPECT THE FOLLOWING TEXT IS OUTDATED DUE TO CHANGES IN INTEGER FACTORING CODE
1025 @c -----------------------------------------------------------------------------
1026 @defvr {オプション変数} intfaclim
1027 デフォルト値: true
1029 もし@code{true}なら、
1030 もし試し割りとPollardのロー法の後、因子が見つからなければ、
1031 Maximaは、整数の素因素分解をあきらめ、素因数分解は完了しません。
1033 @code{intfaclim}が@code{false}の時、
1034  (これは、ユーザーが明示的に@code{factor}をコールした場合です)
1035 完全な素因数分解が試みられます。
1036 @code{divisors}, @code{divsum} や@code{totient}の中で因子が計算される時は、
1037 @code{intfaclim}は@code{false}に設定されます
1038 @c ANY OTHERS ??
1040 @c WHAT ARE THESE MYSTERIOUS INTERNAL CALLS ?? (LET'S JUST LIST THE FUNCTIONS INVOLVED)
1041 @code{factor}への内部コールは、
1042 @code{intfaclim}のユーザー指定の値を考慮します。
1043 @code{intfaclim}を@code{true}に設定することは、
1044 大きな整数を素因数分解するのに費やす時間を少なくするかもしれません。
1045 @c NEED EXAMPLES HERE
1047 @opencatbox
1048 @category{Integers}
1049 @closecatbox
1050 @end defvr
1052 @c -----------------------------------------------------------------------------
1053 @defvr {オプション変数} keepfloat
1054 デフォルト値: @code{false}
1056 @code{keepfloat}が@code{true}の時、
1057 浮動小数点数を含む式が標準有理式(CRE)形に変換される時、
1058 浮動小数点が有理数化されないようにします。
1060 関数@code{solve}とそれを呼び出す関数(例えば@code{eigenvalues})は、
1061 現在、このフラグを無視し、とにかく浮動小数点数を変換することに注意してください。
1063 例:
1065 @c ===beg===
1066 @c rat(x/2.0);
1067 @c rat(x/2.0), keepfloat;
1068 @c ===end===
1069 @example
1070 (%i1) rat(x/2.0);
1072 `rat' replaced 0.5 by 1/2 = 0.5
1073                                        x
1074 (%o1)/R/                               -
1075                                        2
1076 (%i2) rat(x/2.0), keepfloat;
1078 (%o2)/R/                     E        0.5 x
1079 @end example
1081 @code{solve} ignores @code{keepfloat}:
1083 @c ===beg===
1084 @c solve(1.0-x,x), keepfloat;
1085 @c ===end===
1086 @example
1087 (%i3) solve(1.0-x,x), keepfloat;
1089 `rat' replaced 1.0 by 1/1 = 1.0
1090 (%o3)                               [x = 1]
1091 @end example
1093 @opencatbox
1094 @category{Numerical evaluation}
1095 @closecatbox
1097 @end defvr
1099 @c -----------------------------------------------------------------------------
1100 @anchor{lowpow}
1101 @deffn {関数} lopow (@var{expr}, @var{x})
1103 @var{expr}の中に陽に現れる@var{x}の最小の指数を返します。
1104 例えば、
1106 @example
1107 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1108 (%o1)                       min(a, 2)
1109 @end example
1111 @opencatbox
1112 @category{Expressions}
1113 @closecatbox
1114 @end deffn
1116 @c DESCRIBE lratsubst INDEPENDENTLY OF subst
1117 @c THIS ITEM NEEDS MORE WORK
1119 @c -----------------------------------------------------------------------------
1120 @deffn {関数} lratsubst (@var{L}, @var{expr})
1122 @code{subst}の代わりに@code{ratsubst}を使うことを除いて、
1123 @code{subst (@var{L}, @var{expr})}に類似しています。
1125 @code{lratsubst}の最初の引数は、
1126 @code{subst}が受け付けるそれと同一のフォーマットの等式もしくは等式のリストです。
1127 代入は、等式のリストによって与えられた順、すなわち、左から右に、実行されます。
1129 @code{load ("lrats")}は、@code{fullratsubst}と@code{lratsubst}をロードします。
1131 例:
1133 @c EXPRESSIONS ADAPTED FROM demo ("lrats")
1134 @c THIS STUFF CAN PROBABLY STAND REVISION -- EXAMPLES DON'T SEEM VERY ENLIGHTENING
1135 @c load ("lrats")$
1136 @c subst ([a = b, c = d], a + c);
1137 @c lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
1138 @c lratsubst (a^2 = b, a^3);
1139 @example
1140 (%i1) load ("lrats")$
1141 @end example
1142 @itemize @bullet
1143 @item
1144 @code{subst}は多重代入を実行できます。
1145 @code{lratsubst}は@code{subst}に似ています。
1146 @end itemize
1147 @example
1148 (%i2) subst ([a = b, c = d], a + c);
1149 (%o2)                         d + b
1150 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
1151 (%o3)                (d + a c) e + a d + b c
1152 @end example
1153 @itemize @bullet
1154 @item
1155 もし代入1つだけを望むなら、
1156 1つの等式を最初の引数として与えることができます。
1157 @end itemize
1158 @example
1159 (%i4) lratsubst (a^2 = b, a^3);
1160 (%o4)                          a b
1161 @end example
1163 @opencatbox
1164 @category{Polynomials} @category{Rational expressions}
1165 @closecatbox
1166 @end deffn
1168 @c -----------------------------------------------------------------------------
1169 @defvr {オプション変数} modulus
1170 デフォルト値: @code{false}
1172 @code{modulus}が正の数@var{p}の時、
1173 (@code{rat}や関連の関数が返すように)有理数上の演算は、
1174 「バランスさせた」モジュラス系と呼ばれるものを使って、
1175 @var{p}を法とする合同変換が実行されます。
1176 「バランスさせた」モジュラス系では、
1177 @code{@var{n} modulo @var{p}}は、
1178 @code{@var{a} @var{p} + @var{k}}が@var{n}に等しくなるようなある整数@var{a}が存在するような整数@var{k}と定義され、@var{k}は、
1179 @var{p}が奇数の時、
1180 @code{[-(@var{p}-1)/2, ..., 0, ..., (@var{p}-1)/2]}の中から、
1181 @var{p}が偶数の時、@code{[-(@var{p}/2 - 1), ..., 0, ...., @var{p}/2]}の中から
1182 選ばれます。
1183 @c NEED EXAMPLES OF "BALANCED MODULUS" HERE
1185 @c WHAT CAN THIS MEAN ?? IS THE MODULUS STORED WITH THE EXPRESSION ??
1186 @c "... in order to get correct results" -- WHAT DO YOU GET IF YOU DON'T RE-RAT ??
1187 @code{modulus}が再設定された時、もし@var{expr}が既に標準有理式(CRE)形なら、
1188 正しい結果を得るためには、
1189 例えば@code{expr: rat (ratdisrep (expr))}というように、@var{expr}を再ratする必要があるかもしれません。
1191 典型的には、@code{modulus}は素数が設定されます。
1192 もし@code{modulus}が正の合成数に設定されたら、
1193 この設定は受け入れられますが、警告メッセージが表示されます。
1194 Maximaは、ゼロや負の整数が@code{modulus}に割り当てられるのを許します。
1195 それが役に立つ結果を持つかどうか明らかではありませんが。
1197 @c NEED EXAMPLES HERE
1198 @opencatbox
1199 @category{Integers}
1200 @closecatbox
1201 @end defvr
1203 @c APPARENTLY OBSOLETE: ONLY EFFECT OF $newfac COULD BE TO CAUSE NONEXISTENT FUNCTION NMULTFACT
1204 @c TO BE CALLED (IN FUNCTION FACTOR72 IN src/factor.lisp CIRCA LINE 1400)
1205 @c $newfac NOT USED IN ANY OTHER CONTEXT (ASIDE FROM DECLARATIONS)
1206 @c COMMENT IT OUT NOW, CUT IT ON THE NEXT PASS THROUGH THIS FILE
1207 @c @defvar newfac
1208 @c デフォルト値: @code{false}
1209 @c 
1210 @c When @code{newfac} is @code{true}, @code{factor} will use the new factoring
1211 @c routines.
1212 @c 
1213 @c @end defvar
1215 @c -----------------------------------------------------------------------------
1216 @deffn {関数} num (@var{expr})
1218 もし@var{expr}が比なら、その分子を返します。
1219 もし@var{expr}が比でないなら、@var{expr}が返されます。
1221 @code{num}は引数を評価します。
1223 @c NEED SOME EXAMPLES HERE
1224 @opencatbox
1225 @category{Expressions}
1226 @closecatbox
1227 @end deffn
1229 @c -----------------------------------------------------------------------------
1230 @anchor{polydecomp}
1231 @deffn {関数} polydecomp (@var{p}, @var{x})
1233 変数@var{x}の多項式@var{p}を@var{x}の多項式の関数合成に分解します。
1234 @code{polydecomp}は、
1236 @example
1237 lambda ([x], p_1) (lambda ([x], p_2) (... (lambda ([x], p_n) (x))
1238   ...))
1239 @end example
1241 が@var{p}に等しいようなリスト@code{[@var{p_1}, ..., @var{p_n}]}を返します。
1242 @var{n}より小さい@var{i}について@var{p_i}の次数は1より大きいです。
1244 このような分解は一意的ではありません。
1246 例:
1248 @c ===beg===
1249 @c polydecomp (x^210, x);
1250 @c p : expand (subst (x^3 - x - 1, x, x^2 - a));
1251 @c polydecomp (p, x);
1252 @c ===end===
1253 @example
1254 (%i1) polydecomp (x^210, x);
1255                           7   5   3   2
1256 (%o1)                   [x , x , x , x ]
1257 (%i2) p : expand (subst (x^3 - x - 1, x, x^2 - a));
1258                 6      4      3    2
1259 (%o2)          x  - 2 x  - 2 x  + x  + 2 x - a + 1
1260 (%i3) polydecomp (p, x);
1261                         2       3
1262 (%o3)                 [x  - a, x  - x - 1]
1263 @end example
1265 以下の関数は、@code{x}の関数として、
1266 @code{L = [e_1, ..., e_n]}を合成します;
1267 それはpolydecompの逆です。
1269 @c ===beg===
1270 @c compose (L, x) :=
1271 @c   block ([r : x], for e in L do r : subst (e, x, r), r) $
1272 @c ===end===
1273 @example
1274 compose (L, x) :=
1275   block ([r : x], for e in L do r : subst (e, x, r), r) $
1276 @end example
1278 @code{compose}を使って、上の例を再表現します:
1280 @c ===beg===
1281 @c polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
1282 @c ===end===
1283 @example
1284 (%i3) polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
1285                         2       3
1286 (%o3)                 [x  - a, x  - x - 1]
1287 @end example
1289 @code{compose (polydecomp (@var{p}, @var{x}), @var{x})}はいつも
1290 (展開されていない)@var{p}を返しますが、
1291 @code{polydecomp (compose ([@var{p_1}, ..., @var{p_n}], @var{x}), @var{x})}は、
1292 必ずしも@code{[@var{p_1}, ..., @var{p_n}]}を返さ@i{ない}ことに注意してください。
1294 @c ===beg===
1295 @c polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
1296 @c polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
1297 @c ===end===
1298 @example
1299 (%i4) polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
1300                           2       2
1301 (%o4)                   [x  + 2, x  + 1]
1302 (%i5) polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
1303                       2       2
1304                      x  + 3  x  + 5
1305 (%o5)               [------, ------, 2 x + 1]
1306                        4       2
1307 @end example
1309 @opencatbox
1310 @category{Polynomials}
1311 @closecatbox
1312 @end deffn
1314 @c -----------------------------------------------------------------------------
1315 @anchor{polymod}
1316 @deffn  {関数} polymod (@var{p})
1317 @deffnx {関数} polymod (@var{p}, @var{m})
1319 多項式@var{p}を、変数@code{modulus}の値である現在の法に関してモジュラー表現に変換します。
1321 @code{polymod (@var{p}, @var{m})}は、
1322 @code{modulus}の現在値の代わりに法@var{m}を使うように指定します。
1324 @code{modulus}を参照してください。
1326 @opencatbox
1327 @category{Polynomials}
1328 @closecatbox
1329 @end deffn
1331 @c ISN'T THERE AN EQUIVALENT FUNCTION SOMEWHERE ??
1332 @c NEEDS WORK (IF KEPT)
1334 @c -----------------------------------------------------------------------------
1335 @anchor{powers}
1336 @deffn {関数} powers (@var{expr}, @var{x})
1338 @var{expr}に現れる@var{x}のべきを返します。
1340 @code{load (powers)} loads this function.
1341 @c HMM, THERE'S A BUNCH OF MAXIMA FUNCTIONS IN src/powers.lisp ...
1342 @c FOR SOME REASON src/powers.lisp IS NOT PART OF THE USUAL BUILD -- STRANGE
1344 @c HERE IS THE TEXT FROM archive/share/unknown/powers.usg -- MERGE !!!
1345 @c THIS FUNCTION IS A GENERALISATION OF "HIPOW" AND "LOPOW"
1346 @c IN THAT IT RETURNS A LIST OF ALL THE POWERS OF VAR OCCURING
1347 @c IN EXPR. IT IS STILL NECESSARY TO EXPAND EXPR BEFORE APPLYING
1348 @c POWERS (ON PAIN OF GETTING THE WRONG ANSWER).
1349 @c 
1350 @c THIS FUNCTION HAS MANY USES, E.G. IF YOU WANT TO FIND ALL
1351 @c THE COEFFICIENTS OF X IN A POLYNOMIAL POLY YOU CAN USE
1352 @c MAP(LAMBDA([POW],COEFF(POLY,X,POW)),POWERS(POLY,X));
1353 @c AND MANY OTHER SIMILAR USEFUL HACKS.
1355 @opencatbox
1356 @category{Expressions} @category{Polynomials}
1357 @closecatbox
1358 @end deffn
1360 @c -----------------------------------------------------------------------------
1361 @anchor{quotient}
1362 @deffn  {関数} quotient (@var{p_1}, @var{p_2})
1363 @deffnx {関数} quotient (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
1365 多項式@var{p_1}を多項式@var{p_2}で割った結果を返します。
1366 引数@var{x_1}, @dots{}, @var{x_n}は、@code{ratvars}と同様に解釈されます。
1368 @code{quotient}は、@code{divide}が返す2要素リストの最初の要素を返します。
1370 @c NEED SOME EXAMPLES HERE
1371 @opencatbox
1372 @category{Polynomials}
1373 @closecatbox
1374 @end deffn
1376 @c THIS ITEM CAN PROBABLY BE IMPROVED
1378 @c -----------------------------------------------------------------------------
1379 @deffn  {関数} rat (@var{expr})
1380 @deffnx {関数} rat (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
1382 @var{expr}を標準有理式(CRE)形式に変換します。
1383 展開し、共通の分母上ですべての項を結合し、通分し、@code{ratepsilon}の許容誤差内で浮動小数点を有理数に変換します。
1384 変数は、もし指定されたなら、@code{ratvars}のように@var{x_1}, @dots{}, @var{x_n}に従って並び替えられます。
1386 @code{rat}は一般に、加算@code{+}, 減算@code{-}, 乗算@code{*}, 除算@code{/}と整数べきの指数を除いた関数を
1387 整理しません。
1388 一方で@code{ratsimp}はこれらの場合を扱います。
1389 CRE形式の中のアトム(数と変数)は一般形式でのそれと同じではないことに注意してください。
1390 例えば、@code{rat(x) - x}は@code{rat(0)}を出力します。
1391 これは0とは違う内部表現を持ちます。
1393 @c WHAT'S THIS ABOUT EXACTLY ??
1394 @code{ratfac}が@code{true}の時、
1395 @code{rat}は、CREの一部因数分解された形式を出力します。
1396 有理演算の最中、因数分解パッケージをコールなしに、式は可能な限り因数分解され続けます。
1397 これにより常に、いくつかの計算でメモリと時間を節約することになります。
1398 分子と分母は互いに素になり(例えば、@code{((x^2 - 1)^4/(x + 10^2)}は@code{(x - 1)^4 (x + 1)^2}を出力します)、
1399 それぞれの部分の中の因子は互いに素とは限りません。
1401 @code{ratprint}が@code{false}ならユーザーに浮動小数点を有理数に変換したことを通知するメッセージの出力を抑制します。
1403 @code{keepfloat}が@code{true}なら、浮動小数点が有理数に変換されることを抑制します。
1405 @code{ratexpand}と@code{ratsimp}も参照してください。
1407 例:
1408 @c ===beg===
1409 @c ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
1410 @c       (4*y^2 + x^2);
1411 @c rat (%, y, a, x);
1412 @c ===end===
1413 @example
1414 (%i1) ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
1415       (4*y^2 + x^2);
1416 @group
1417                                            4
1418                                   (x - 2 y)
1419               (y + a) (2 y + x) (------------ + 1)
1420                                    2      2 2
1421                                  (x  - 4 y )
1422 (%o1)         ------------------------------------
1423                               2    2
1424                            4 y  + x
1425 @end group
1426 (%i2) rat (%, y, a, x);
1427                             2 a + 2 y
1428 (%o2)/R/                    ---------
1429                              x + 2 y
1430 @end example
1432 @opencatbox
1433 @category{Rational expressions}
1434 @closecatbox
1435 @end deffn
1437 @defvr {オプション変数} ratalgdenom
1438 デフォルト値: @code{true}
1440 @code{ratalgdenom}が@code{true}の時、
1441 根号に関する分母の有理化が有効になることを許します。
1442 @code{ratalgdenom}は、
1443 標準有理式(CRE)が代数モードで使われる時だけ、効果を持ちます。
1445 @opencatbox
1446 @category{Simplification flags and variables}
1447 @closecatbox
1449 @end defvr
1451 @c THIS ITEM NEEDS MORE WORK
1453 @c -----------------------------------------------------------------------------
1454 @deffn  {関数} ratcoef (@var{expr}, @var{x}, @var{n})
1455 @deffnx {関数} ratcoef (@var{expr}, @var{x})
1457 式@var{expr}の中の式@code{@var{x}^@var{n}}の係数を返します。
1458 @var{n}を省略した場合、@var{n}は1が仮定されます。
1460 戻り値は、(非有理な意味で可能な場合を除いて、)xの中の変数の制約を受けません。
1461 このタイプの係数が存在しなければ、0を返します。
1463 @code{ratcoef}は最初の引数を展開し、有理的に整理するので、
1464 純粋に構文法的な@code{coeff}のそれとは違った答えを生成することがあります。
1465 @c MOVE THIS TO EXAMPLES SECTION
1466 このように、@code{ratcoef ((x + 1)/y + x, x)}は@code{(y + 1)/y}を返しますが、@code{coeff}は1を返します。
1468 @code{ratcoef (@var{expr}, @var{x}, 0)}は、@var{expr}をsumとして見て、
1469 @var{x}を含まない項の和を返します。
1470 @c "SHOULD NOT" -- WHAT DOES THIS MEAN ??
1471 ゆえに、もし@var{x}の負のべき乗が存在するなら、@var{ratcoef}を使うべきではありません。
1473 @c WHAT IS THE INTENT HERE ??
1474 @var{expr}は検査される前に有理的に整理されるので、
1475 係数は、想像された形とは全く違って現れることがあります。
1477 例:
1479 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1480 @c s: a*x + b*x + 5$
1481 @c ratcoef (s, a + b);
1482 @example
1483 (%i1) s: a*x + b*x + 5$
1484 (%i2) ratcoef (s, a + b);
1485 (%o2)                           x
1486 @end example
1487 @c NEED MORE EXAMPLES HERE
1489 @opencatbox
1490 @category{Polynomials} @category{Rational expressions}
1491 @closecatbox
1492 @end deffn
1494 @c -----------------------------------------------------------------------------
1495 @deffn {関数} ratdenom (@var{expr})
1497 @var{expr}を標準有理式(CRE)に強制した後、@var{expr}の分母を返します。
1498 戻り値はCREです。
1500 @c ACTUALLY THE CONVERSION IS CARRIED OUT BY ratf BUT THAT'S WHAT $rat CALLS
1501 @var{expr}は、もしまだCREでないなら、@code{rat}によってCREに強制的に変換されます。
1502 この変換は、すべての項を共通の分母上に置くことによって、
1503 @var{expr}の形式を変えます。
1505 @code{denom}は似ていますが、
1506 CREではなく通常の式を返します。
1507 また、@code{denom}は共通の分母上にすべての項を置こうとはしませんし、
1508 @code{ratdenom}によって比と見なされるいくつかの式は、@code{denom}には比と見なされません。
1510 @c NEEDS AN EXAMPLE HERE
1511 @opencatbox
1512 @category{Rational expressions}
1513 @closecatbox
1514 @end deffn
1516 @c -----------------------------------------------------------------------------
1517 @defvr {オプション変数} ratdenomdivide
1518 デフォルト値: @code{true}
1520 @code{ratdenomdivide}が@code{true}の時、
1521 @code{ratexpand}は、分子が和である比を、共通の分母を持つ比の和に展開します。
1522 そうでなければ、@code{ratexpand}は比の和を1つの比に縮約します。
1523 その比の分子はそれぞれの比の分子の和です。
1525 例:
1527 @example
1528 (%i1) expr: (x^2 + x + 1)/(y^2 + 7);
1529                             2
1530                            x  + x + 1
1531 (%o1)                      ----------
1532                               2
1533                              y  + 7
1534 (%i2) ratdenomdivide: true$
1535 (%i3) ratexpand (expr);
1536                        2
1537                       x        x        1
1538 (%o3)               ------ + ------ + ------
1539                      2        2        2
1540                     y  + 7   y  + 7   y  + 7
1541 (%i4) ratdenomdivide: false$
1542 (%i5) ratexpand (expr);
1543                             2
1544                            x  + x + 1
1545 (%o5)                      ----------
1546                               2
1547                              y  + 7
1548 (%i6) expr2: a^2/(b^2 + 3) + b/(b^2 + 3);
1549                                      2
1550                            b        a
1551 (%o6)                    ------ + ------
1552                           2        2
1553                          b  + 3   b  + 3
1554 (%i7) ratexpand (expr2);
1555                                   2
1556                              b + a
1557 (%o7)                        ------
1558                               2
1559                              b  + 3
1560 @end example
1562 @opencatbox
1563 @category{Simplification flags and variables} @category{Rational expressions}
1564 @closecatbox
1565 @end defvr
1567 @c -----------------------------------------------------------------------------
1568 @deffn {関数} ratdiff (@var{expr}, @var{x})
1570 有理式@var{expr}を@var{x}に関して微分します。
1571 @var{expr}は@var{x}の多項式もしくは多項式の商でなければなりません。
1572 引数@var{x}は@var{expr}の変数もしくは部分式を取り得ます。
1573 @c NOT CLEAR (FROM READING CODE) HOW x OTHER THAN A VARIABLE IS HANDLED --
1574 @c LOOKS LIKE (a+b), 10*(a+b), (a+b)^2 ARE ALL TREATED LIKE (a+b);
1575 @c HOW TO DESCRIBE THAT ??
1577 たぶん違った形式になりますが、結果は、@code{diff}と同値です。
1578 有理式の場合、@code{ratdiff}は@code{diff}より速いでしょう。
1580 @code{ratdiff}は、もし@var{expr}が標準有理式(CRE)なら、標準有理式を返します。
1581 そうでなければ、一般式を返します。
1583 @code{ratdiff}は、@var{expr}の@var{x}への依存のみを考慮し、@code{depends}で規定された依存性は無視します。
1585 @c WHAT THIS IS ABOUT -- ratdiff (rat (factor (expr)), x) AND ratdiff (factor (rat (expr)), x) BOTH SUCCEED
1586 @c COMMENTING THIS OUT UNTIL SOMEONE CAN ESTABLISH SOME CRE'S FOR WHICH ratdiff FAILS
1587 @c However, @code{ratdiff} should not be used on factored CRE forms;
1588 @c use @code{diff} instead for such expressions.
1590 例:
1592 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1593 @c expr: (4*x^3 + 10*x - 11)/(x^5 + 5);
1594 @c ratdiff (expr, x);
1595 @c expr: f(x)^3 - f(x)^2 + 7;
1596 @c ratdiff (expr, f(x));
1597 @c expr: (a + b)^3 + (a + b)^2;
1598 @c ratdiff (expr, a + b);
1599 @example
1600 (%i1) expr: (4*x^3 + 10*x - 11)/(x^5 + 5);
1601                            3
1602                         4 x  + 10 x - 11
1603 (%o1)                   ----------------
1604                               5
1605                              x  + 5
1606 (%i2) ratdiff (expr, x);
1607                     7       5       4       2
1608                  8 x  + 40 x  - 55 x  - 60 x  - 50
1609 (%o2)          - ---------------------------------
1610                           10       5
1611                          x   + 10 x  + 25
1612 (%i3) expr: f(x)^3 - f(x)^2 + 7;
1613                          3       2
1614 (%o3)                   f (x) - f (x) + 7
1615 (%i4) ratdiff (expr, f(x));
1616                            2
1617 (%o4)                   3 f (x) - 2 f(x)
1618 (%i5) expr: (a + b)^3 + (a + b)^2;
1619                               3          2
1620 (%o5)                  (b + a)  + (b + a)
1621 (%i6) ratdiff (expr, a + b);
1622                     2                    2
1623 (%o6)            3 b  + (6 a + 2) b + 3 a  + 2 a
1624 @end example
1626 @opencatbox
1627 @category{Rational expressions}
1628 @closecatbox
1629 @end deffn
1631 @c -----------------------------------------------------------------------------
1632 @deffn {関数} ratdisrep (@var{expr})
1634 一般式として引数を返します。
1635 もし@var{expr}が一般式なら、戻り値は引数から変わりません。
1637 典型的には、@code{ratdisrep}は、
1638 標準有理式(CRE)を一般式に変換するためにコールされます。
1639 @c NOT REALLY FOND OF YOU-CAN-DO-THIS-YOU-CAN-DO-THAT STATEMENTS
1640 もし「伝染」を止めたかったり、非有理文脈で有理関数を使いたいなら、
1641 これは、時々便利です。
1643 @code{totaldisrep}も参照してください。
1645 @opencatbox
1646 @category{Rational expressions}
1647 @closecatbox
1648 @end deffn
1650 @c -----------------------------------------------------------------------------
1651 @deffn  {関数} ratexpand (@var{expr})
1652 @deffnx {オプション変数} ratexpand
1654 @var{expr}を展開します。
1655 指数和や和の積を展開し、共通分母上の分数を結合し、通分し、(もし和なら)分子を分母で割ったそれぞれの項に分割します。
1657 たとえ@var{expr}が標準有理式(CRE)でも、@code{ratexpand}の戻り値は一般式です。
1659 @c WHAT DOES THE FOLLOWING MEAN EXACTLY ??
1660 スイッチ@code{ratexpand}が@code{true}なら、CRE式は、一般式や表示形式に変換された時フルに展開されます。
1661 一方もし@code{false}なら再帰形式に変換します。
1662 @code{ratsimp}も参照してください。
1664 @code{ratdenomdivide}が@code{true}の時、
1665 @code{ratexpand}は、分子が和である比を、共通の分母を持つ比の和に展開します。
1666 そうでなければ、@code{ratexpand}は日の和を、その分子がそれぞれの比の分子の和である単一の比にまとめます。
1668 @code{keepfloat}が@code{true}の時、
1669 浮動小数点を含んだ式がCRE形式に変換される時、浮動小数点が有理化されるのを抑制します。
1671 例:
1673 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1674 @c ratexpand ((2*x - 3*y)^3);
1675 @c expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
1676 @c expand (expr);
1677 @c ratexpand (expr);
1678 @example
1679 (%i1) ratexpand ((2*x - 3*y)^3);
1680                      3         2       2        3
1681 (%o1)          - 27 y  + 54 x y  - 36 x  y + 8 x
1682 (%i2) expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
1683                          x - 1       1
1684 (%o2)                   -------- + -----
1685                                2   x - 1
1686                         (x + 1)
1687 (%i3) expand (expr);
1688                     x              1           1
1689 (%o3)          ------------ - ------------ + -----
1690                 2              2             x - 1
1691                x  + 2 x + 1   x  + 2 x + 1
1692 (%i4) ratexpand (expr);
1693                         2
1694                      2 x                 2
1695 (%o4)           --------------- + ---------------
1696                  3    2            3    2
1697                 x  + x  - x - 1   x  + x  - x - 1
1698 @end example
1700 @opencatbox
1701 @category{Rational expressions}
1702 @closecatbox
1703 @end deffn
1705 @c -----------------------------------------------------------------------------
1706 @anchor{ratfac}
1707 @defvr {オプション変数} ratfac
1708 デフォルト値: @code{false}
1710 @code{ratfac}が@code{true}の時、
1711 標準有理式(CRE)は部分的に因数分解された形式で操作されます。
1713 有理演算の間、
1714 式は、@code{factor}をコールすることなしに、
1715 可能な限り最大限因数分解されるよう維持されます。
1716 これは、いつも保存領域を節約し、いくつかの計算では時間も節約ことがあります。
1717 分子と分母は互いに素になります。
1718 例えば、@code{rat ((x^2 - 1)^4/(x + 1)^2)}は、
1719 @code{(x - 1)^4 (x + 1)^2)}をもたらしますが、
1720 それぞれの部分の中の因子は互いに素ではないかもしれません。
1722 @code{ctensr}(成分テンソル操作)パッケージでは、
1723 @code{ratfac}が@code{true}の時、
1724 リッチ、アインシュタイン、リーマン、そしてワイルテンソルとスカラー曲率は、
1725 自動的に因数分解されます。
1726 @i{@code{ratfac}は、テンソルの成分が2、3の項から成ると知られている場合だけ
1727 設定すべきです。}
1729 @code{ratfac}と@code{ratweight}体系は互換性はなく、
1730 同時には使えないかもしれません。
1732 @c NEED EXAMPLES HERE
1733 @opencatbox
1734 @category{Rational expressions}
1735 @closecatbox
1736 @end defvr
1738 @c -----------------------------------------------------------------------------
1739 @deffn {関数} ratnumer (@var{expr})
1741 @var{expr}を標準有理式(CRE)に強制変換した後、その分子を返します。
1742 戻り値はCREです。
1744 @c ACTUALLY THE CONVERSION IS CARRIED OUT BY ratf BUT THAT'S WHAT $rat CALLS
1745 もしまだCREでないなら、@var{expr}は、@code{rat}によってCREに強制変換されます。
1746 この変換は、
1747 共通の分母上にすべての項を置くことによって、
1748 @var{expr}の形式を変えるかもしれません。
1750 @code{num}は似ていますが、
1751 CREではなく通常の式を返します。
1752 また、@code{num}は共通の分母上にすべての項を置こうとはしませんし、
1753 @code{ratnumer}によって比と見なされるいくつかの式は、@code{num}には比と見なされません。
1755 @c NEEDS AN EXAMPLE HERE
1756 @opencatbox
1757 @category{Rational expressions}
1758 @closecatbox
1759 @end deffn
1761 @c -----------------------------------------------------------------------------
1762 @deffn {関数} ratp (@var{expr})
1764 もし@var{expr}が標準有理式(CRE)もしくは拡張CREなら、@code{true}を返し、
1765 そうでなければ、@code{false}を返します。
1767 CREは、@code{rat}と関連関数によって生成されます。
1768 拡張CREは、@code{taylor}と関連関数によって生成されます。
1770 @opencatbox
1771 @category{Predicate functions} @category{Rational expressions}
1772 @closecatbox
1773 @end deffn
1775 @c -----------------------------------------------------------------------------
1776 @defvr {オプション変数} ratprint
1777 デフォルト値: @code{true}
1779 @code{ratprint}が@code{true}の時、
1780 ユーザーに浮動小数点を有理数に変換したことを通知するメッセージが表示されます。
1782 @opencatbox
1783 @category{Rational expressions} @category{Numerical evaluation} @category{Console interaction}
1784 @closecatbox
1785 @end defvr
1787 @c -----------------------------------------------------------------------------
1788 @anchor{ratsimp}
1789 @deffn  {関数} ratsimp (@var{expr})
1790 @deffnx {関数} ratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})
1792 式@var{exp}とその部分式の全てを有理的に整理します(非有理的関数の引数も含みます)。
1793 結果は二つの多項式の商として、再帰的形式—主変数の係数が他の変数の多項式である形式—で返されます。
1794 変数は(例えば、@code{sin(z^2+1)}のような)非有理関数を含むかもしれませんが、
1795 どんな非有理関数の引数もまた、有理的に整理されます。
1797 @code{ratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})}は、@code{ratvars}で指定した場合と同様に、
1798 変数の順序指定に従って有理的に整理します。
1800 @code{ratsimpexpons}が@code{true}の時、
1801 @code{ratsimp}は式の指数にも適用されます。
1803 @code{ratexpand}も参照してください。
1804 @code{ratsimp}は、@code{ratexpand}に影響するフラグのいくつかに影響されることに注意してください。
1806 例:
1808 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1809 @c sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
1810 @c ratsimp (%);
1811 @c ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
1812 @c ratsimp (%);
1813 @c x^(a + 1/a), ratsimpexpons: true;
1814 @example
1815 (%i1) sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
1816 @group
1817                                          2      2
1818                    x         (log(x) + 1)  - log (x)
1819 (%o1)        sin(------) = %e
1820                   2
1821                  x  + x
1822 @end group
1823 (%i2) ratsimp (%);
1824                              1          2
1825 (%o2)                  sin(-----) = %e x
1826                            x + 1
1827 (%i3) ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
1828 @group
1829                        3/2
1830                 (x - 1)    - sqrt(x - 1) (x + 1)
1831 (%o3)           --------------------------------
1832                      sqrt((x - 1) (x + 1))
1833 @end group
1834 (%i4) ratsimp (%);
1835                            2 sqrt(x - 1)
1836 (%o4)                    - -------------
1837                                  2
1838                            sqrt(x  - 1)
1839 (%i5) x^(a + 1/a), ratsimpexpons: true;
1840                                2
1841                               a  + 1
1842                               ------
1843                                 a
1844 (%o5)                        x
1845 @end example
1847 @opencatbox
1848 @category{Simplification functions} @category{Rational expressions}
1849 @closecatbox
1850 @end deffn
1852 @c -----------------------------------------------------------------------------
1853 @defvr {オプション変数} ratsimpexpons
1854 デフォルト値: @code{false}
1856 @code{ratsimpexpons}が@code{true}の時、
1857 式整理の間、@code{ratsimp}が式の指数に適用されます。
1859 @c NEED AN EXAMPLE HERE -- RECYCLE THE ratsimpexpons EXAMPLE FROM ratsimp ABOVE
1860 @opencatbox
1861 @category{Simplification flags and variables} @category{Rational expressions}
1862 @closecatbox
1863 @end defvr
1865 @c -----------------------------------------------------------------------------
1866 @anchor{radsubstflag}
1867 @defvr {オプション変数} radsubstflag
1868 デフォルト値: @code{false}
1870 @code{radsubstflag}がもし @code{true}なら、
1871 @code{ratsubst}が
1872 @code{x}に関して@code{sqrt (x)}に @code{u}を代入するような代入をできるようにします。
1874 @opencatbox
1875 @category{Simplification flags and variables}
1876 @closecatbox
1877 @end defvr
1879 @c -----------------------------------------------------------------------------
1880 @anchor{ratsubst}
1881 @c -----------------------------------------------------------------------------
1882 @deffn {関数} ratsubst (@var{a}, @var{b}, @var{c})
1884 @var{c}の中の@var{b}に@var{a}を代入し、結果の式を返します。
1885 @c "ETC" SUGGESTS THE READER KNOWS WHAT ELSE GOES THERE -- NOT LIKELY THE CASE
1886 @var{b}はsumでもproductでもpowerなどでも問題ありません。
1888 @c WHAT, EXACTLY, DOES ratsubst KNOW ??
1889 @code{subst}は純粋に構文法的代入ですが、@code{ratsubst}は式の意味の何かを知っています。
1890 ゆえに、@code{subst (a, x + y, x + y + z)}は@code{x + y + z}を返す一方、
1891 @code{ratsubst}は@code{z + a}を返します。
1893 @code{ratsubstflag}が@code{true}の時、@code{ratsubst}は、式が陽には含んでいない根への代入を実行します。
1895 @code{ratsubst}はオプション変数@code{keepfloat}の値@code{true}を無視します。
1897 例:
1899 @c EXAMPLES BELOW ADAPTED FROM examples (ratsubst)
1900 @c WITH SOME ADDITIONAL STUFF
1902 @c ==beg===
1903 @c ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
1904 @c cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
1905 @c ratsubst (1 - sin(x)^2, cos(x)^2, %);
1906 @c ratsubst (1 - cos(x)^2, sin(x)^2, sin(x)^4);
1907 @c radsubstflag: false$
1908 @c ratsubst (u, sqrt(x), x);
1909 @c radsubstflag: true$
1910 @c ratsubst (u, sqrt(x), x);
1911 @c ===end===
1912 @example
1913 (%i1) ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
1914                               3      4
1915 (%o1)                      a x  y + a
1916 (%i2) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
1917                4         3         2
1918 (%o2)       cos (x) + cos (x) + cos (x) + cos(x) + 1
1919 (%i3) ratsubst (1 - sin(x)^2, cos(x)^2, %);
1920             4           2                     2
1921 (%o3)    sin (x) - 3 sin (x) + cos(x) (2 - sin (x)) + 3
1922 (%i4) ratsubst (1 - cos(x)^2, sin(x)^2, sin(x)^4);
1923 @group
1924                         4           2
1925 (%o4)                cos (x) - 2 cos (x) + 1
1926 @end group
1927 (%i5) radsubstflag: false$
1928 (%i6) ratsubst (u, sqrt(x), x);
1929 (%o6)                           x
1930 (%i7) radsubstflag: true$
1931 (%i8) ratsubst (u, sqrt(x), x);
1932                                 2
1933 (%o8)                          u
1934 @end example
1936 @opencatbox
1937 @category{Rational expressions}
1938 @closecatbox
1939 @end deffn
1941 @c -----------------------------------------------------------------------------
1942 @deffn  {関数} ratvars (@var{x_1}, @dots{}, @var{x_n})
1943 @deffnx {関数} ratvars ()
1944 @deffnx {システム変数} ratvars
1946 有理式に関して主変数@var{x_1}, ..., @var{x_n}を宣言します。
1947 もし有理式の中に存在するなら、@var{x_n}は主変数と見なされます。
1948 そうでなければ、もし存在すれば、@var{x_[n-1]}が主変数と見なされます。
1949 と、先行する変数を通して@var{x_1}まで続きます。
1950 @var{x_1}は、続く変数が存在しなかった時だけ主変数と見なされます。
1952 もし有理式の中の変数が@code{ratvars}リストの中に存在しなかったら、
1953 その変数には、@var{x_1}よりも低い優先順位が与えられます。
1955 @code{ratvars}の引数は、変数もしくは@code{sin(x)}のような非有理関数であり得ます。
1957 変数@code{ratvars}は、直近にコールされたときの関数@code{ratvars}の引数のリストです。
1958 関数@code{ratvars}のコールそれぞれは、リストを再設定します。
1959 @code{ratvars ()}はリストをクリアします。
1961 @c NEED EXAMPLES HERE
1962 @opencatbox
1963 @category{Rational expressions}
1964 @closecatbox
1965 @end deffn
1967 @c -----------------------------------------------------------------------------
1968 @defvr {オプション変数} ratvarswitch
1969 デフォルト値: @code{true}
1971 MaximaはLisp変数@code{VARLIST}の中に有理式の主変数の内部リストを保持します。
1972 もし@code{ratvarswitch}が@code{true}なら、
1973 すべての評価は新しいリスト@code{VARLIST}で開始します。
1974 これがデフォルトの振る舞いです。
1975 そうでなければ、以前の評価からの主変数は
1976 内部リスト@code{VARLIST}から取り除かれません。
1978 主変数は関数@code{ratvars}で宣言されるのですが、
1979 それはオプション変数@code{ratvarswitch}によって影響されません。
1981 例:
1983 もし @code{ratvarswitch}が@code{true}, すべての評価は
1984 新しいリスト@code{VARLIST}で始まります。
1986 @c === beg ===
1987 @c ratvarswitch:true$
1988 @c rat(2*x+y^2);
1989 @c :lisp varlist
1990 @c rat(2*a+b^2);
1991 @c :lisp varlist
1992 @c === end ===
1993 @example
1994 (%i1) ratvarswitch:true$
1996 (%i2) rat(2*x+y^2);
1997                              2
1998 (%o2)/R/                    y  + 2 x
1999 (%i3) :lisp varlist
2000 ($X $Y)
2002 (%i3) rat(2*a+b^2);
2003                              2
2004 (%o3)/R/                    b  + 2 a
2006 (%i4) :lisp varlist
2007 ($A $B)
2008 @end example
2010 もし@code{ratvarswitch}が@code{false}なら、
2011 直前の評価からの主変数はまだ存在しています。
2013 @c === beg ===
2014 @c ratvarswitch:false$
2015 @c rat(2*x+y^2);
2016 @c :lisp varlist
2017 @c rat(2*a+b^2);
2018 @c :lisp varlist
2019 @c === end ===
2020 @example
2021 (%i4) ratvarswitch:false$
2023 (%i5) rat(2*x+y^2);
2024                              2
2025 (%o5)/R/                    y  + 2 x
2026 (%i6) :lisp varlist
2027 ($X $Y)
2029 (%i6) rat(2*a+b^2);
2030                              2
2031 (%o6)/R/                    b  + 2 a
2033 (%i7) :lisp varlist
2034 ($A $B $X $Y)
2035 @end example
2037 @opencatbox
2038 @category{Rational expressions} @category{Global flags}
2039 @closecatbox
2040 @end defvr
2042 @c -----------------------------------------------------------------------------
2043 @deffn {関数} ratweight (@var{x_1}, @var{w_1}, @dots{}, @var{x_n}, @var{w_n})
2044 @deffnx {関数} ratweight ()
2046 重み@var{w_i}を変数@var{x_i}に割り当てます。
2047 これは、もし重みが変数@code{ratwtlvl}の値を越えるなら、項を0に置き換えるようにします。
2048 (デフォルトでは切り詰めはもたらしません。)
2049 項の重みは、項の中の変数の重みの積の和に変数の指数を掛けたものです。
2050 例えば、@code{3 x_1^2 x_2}の重みは@code{2 w_1 + w_2}です。
2051 @code{ratwtlvl}に従った切り詰めは、
2052 標準有理式(CRE)を掛けたり、指数化する時だけ実行されます。
2054 @code{ratweight ()}は、重み割り当ての累積リストを返します。
2056 注意:@code{ratfac}と@code{ratweight}体系は互換性はなく、
2057 同時には使えないかもしれません。
2059 例:
2061 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
2062 @c ratweight (a, 1, b, 1);
2063 @c expr1: rat(a + b + 1)$
2064 @c expr1^2;
2065 @c ratwtlvl: 1$
2066 @c expr1^2;
2067 @example
2068 (%i1) ratweight (a, 1, b, 1);
2069 (%o1)                     [a, 1, b, 1]
2070 (%i2) expr1: rat(a + b + 1)$
2071 (%i3) expr1^2;
2072                   2                  2
2073 (%o3)/R/         b  + (2 a + 2) b + a  + 2 a + 1
2074 (%i4) ratwtlvl: 1$
2075 (%i5) expr1^2;
2076 (%o5)/R/                  2 b + 2 a + 1
2077 @end example
2079 @opencatbox
2080 @category{Rational expressions}
2081 @closecatbox
2082 @end deffn
2084 @c -----------------------------------------------------------------------------
2085 @defvr {システム変数} ratweights
2086 デフォルト値: @code{[]}
2088 @code{ratweights}は、@code{ratweight}で割り当てられた重みのリストです。
2089 リストは累積されます:
2090 @code{ratweight}のコールそれぞれは、リストに項目を追加します。
2092 @c DO WE REALLY NEED TO MENTION THIS ??
2093 @code{kill (ratweights)}と@code{save (ratweights)}はともに期待通り動作します。
2095 @opencatbox
2096 @category{Rational expressions}
2097 @closecatbox
2098 @end defvr
2100 @c -----------------------------------------------------------------------------
2101 @defvr {オプション変数} ratwtlvl
2102 デフォルト値: @code{false}
2104 @code{ratwtlvl}は、
2105 標準有理式(CRE)の切り詰めを制御するために、
2106 @code{ratweight}関数と組み合わせて使われます。
2107 デフォルト値の@code{false}では、切り詰めは起こりません。
2109 @opencatbox
2110 @category{Rational expressions}
2111 @closecatbox
2112 @end defvr
2114 @c -----------------------------------------------------------------------------
2115 @deffn  {関数} remainder (@var{p_1}, @var{p_2})
2116 @deffnx {関数} remainder (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
2118 多項式@var{p_1}を多項式@var{p_2}で割った余りを返します。
2119 引数@var{x_1}, ..., @var{x_n}は、@code{ratvars}と同様に解釈されます。
2121 @code{remainder}は、@code{divide}が返す2要素リストの2番目の要素を返します。
2123 @c NEED SOME EXAMPLES HERE
2124 @opencatbox
2125 @category{Polynomials}
2126 @closecatbox
2127 @end deffn
2129 @c CAN PROBABLY BE CLARIFIED
2131 @c -----------------------------------------------------------------------------
2132 @deffn {関数} resultant (@var{p_1}, @var{p_2}, @var{x})
2133 @deffnx {変数} resultant
2135 変数@var{x}を消去して、2つの多項式@var{p_1}と@var{p_2}の終結式を計算します。
2136 終結式は@var{p_1}と@var{p_2}の中の@var{x}の係数の判別式です。
2137 それは、@var{p_1}と@var{p_2}が共通に定数でない因子を持つ時だけゼロに等しいです。
2139 もし@var{p_1}もしくは@var{p_2}が因数分解できるなら、
2140 @code{resultant}をコールする前に@code{factor}をコールするのが望ましいかもしれません。
2142 変数@code{resultant}は、
2143 どのアルゴリズムが計算に使われるか制御します。
2144 @c WHAT DOES THE FOLLOWING MEAN EXACTLY ??
2145 部分終結式prsには@code{subres}
2146 モジュラー終結式アルゴリズムには@code{mod}
2147 通分prsには@code{red}。
2148 大抵の問題では、@code{subres}が最適です。
2149 いくつかの大きな次数の1変数もしくは2変数問題では、@code{mod}がよりよいかもしれません。
2151 関数@code{bezout}は、@code{resultant}と同じ引数を取り、
2152 行列を返します。
2153 戻り値の判別式は望みの終結式です。
2155 @c NEED AN EXAMPLE HERE
2156 @opencatbox
2157 @category{Polynomials}
2158 @closecatbox
2159 @end deffn
2161 @defvr {オプション変数} savefactors
2162 デフォルト値: @code{false}
2164 @c "certain functions" -- WHICH ONES ??
2165 @code{savefactors}が@code{true}の時、
2166 同じ因子のいくつかを含む式の因数分解を後でする時にスピードアップするために、
2167 因子の積である式の因子がある関数によって保存されるようにします。
2169 @opencatbox
2170 @category{Polynomials}
2171 @closecatbox
2172 @end defvr
2174 @c -----------------------------------------------------------------------------
2175 @deffn {関数} showratvars (@var{expr})
2176 式@code{expr}の中の標準有理式 (CRE)変数のリストを返します。
2178 @code{ratvars}も参照してください。
2180 @opencatbox
2181 @category{Rational expressions} @category{Display functions}
2182 @closecatbox
2184 @end deffn
2186 @c I CAN'T TELL WHAT THIS IS SUPPOSED TO BE ABOUT
2188 @c -----------------------------------------------------------------------------
2189 @anchor{sqfr}
2190 @deffn {関数} sqfr (@var{expr})
2192 多項式因子が「平方にならない」ことを除いて、
2193 @code{factor}に似ています。
2194 すなわち、それらは、次数1だけの因子を持ちます。
2195 このアルゴリズムは、@code{factor}の最初の段階でも使われるのですが、
2196 多項式は、n階微分と共通に nよりも大きな次数のすべての因子を持つという事実を使います。
2197 このように、それぞれの変数に関する微分の多項式との最大公約数を取ることによって、
2198 1よりも大きな次数の因子を見つけることができます。
2200 例:
2201 @c FOLLOWING GENERATED FROM THIS EXPRESSION
2202 @c sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2204 @example
2205 (%i1) sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2206                                 2   2
2207 (%o1)                  (2 x + 1)  (x  - 1)
2208 @end example
2210 @opencatbox
2211 @category{Polynomials}
2212 @closecatbox
2213 @end deffn
2215 @c THIS ITEM STILL NEEDS WORK
2217 @c -----------------------------------------------------------------------------
2218 @deffn  {関数} tellrat (@var{p_1}, ..., @var{p_n})
2219 @deffnx {関数} tellrat ()
2221 多項式@var{p_1}, ..., @var{p_n}の解である要素を
2222 Maximaに知られている代数的整数の環に加えます。
2223 それぞれの引数@var{p_i}は、整数係数の多項式です。
2225 @code{tellrat (@var{x})}は、実際には、
2226 有理関数の中で@var{x}に0を代入することを意味します。
2228 @code{tellrat ()}は、現在の代入のリストを返します。
2230 代数的整数の整理が効果を持つようにするために、
2231 @code{algebraic}は、@code{true}に設定されなければいけません。
2233 Maximaは、起動の際には、虚数単位と整数の根すべてについて知っています。
2235 核を取り、@code{tellrat}プロパティを削除するコマンド@code{untellrat}があります。
2237 例えば、@code{tellrat (x^2 - y^2)}のように、
2238 多変数多項式を@code{tellrat}する時、
2239 @code{@var{y}^2}を@code{@var{x}^2}に代入するのか逆なのかといった
2240 あいまいさがあります。
2241 Maximaは、特定の順序付けを選びますが、
2242 もしユーザーがどちらか指定したいなら、
2243 例えば,@code{tellrat (y^2 = x^2)}は
2244 @code{@var{y}^2}を@code{@var{x}^2}で置き換えることを示す構文法を供給します。
2246 @c CAN'T TELL WHAT THIS IS ABOUT -- tellrat(w^3-1)$ algebraic:true$ rat(1/(w^2-w));
2247 @c DOES NOT YIELD AN ERROR, SO WHAT IS THE POINT ABOUT ratalgdenom ??
2248 @c When you @code{tellrat} reducible polynomials, you want to be careful not to
2249 @c attempt to rationalize a denominator with a zero divisor.  E.g.
2250 @c tellrat(w^3-1)$ algebraic:true$ rat(1/(w^2-w)); will give "quotient by
2251 @c zero".  This error can be avoided by setting @code{ratalgdenom} to @code{false}.
2253 例:
2255 @c EXAMPLE ADAPTED FROM example (tellrat)
2256 @c 10*(%i + 1)/(%i + 3^(1/3));
2257 @c ev (ratdisrep (rat(%)), algebraic);
2258 @c tellrat (1 + a + a^2);
2259 @c 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
2260 @c ev (ratdisrep (rat(%)), algebraic);
2261 @c tellrat (y^2 = x^2);
2262 @example
2263 (%i1) 10*(%i + 1)/(%i + 3^(1/3));
2264                            10 (%i + 1)
2265 (%o1)                      -----------
2266                                   1/3
2267                             %i + 3
2268 (%i2) ev (ratdisrep (rat(%)), algebraic);
2269              2/3      1/3              2/3      1/3
2270 (%o2)    (4 3    - 2 3    - 4) %i + 2 3    + 4 3    - 2
2271 (%i3) tellrat (1 + a + a^2);
2272                             2
2273 (%o3)                     [a  + a + 1]
2274 (%i4) 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
2275                       1                 a
2276 (%o4)           ------------- + -----------------
2277                 sqrt(2) a - 1   sqrt(3) + sqrt(2)
2278 (%i5) ev (ratdisrep (rat(%)), algebraic);
2279          (7 sqrt(3) - 10 sqrt(2) + 2) a - 2 sqrt(2) - 1
2280 (%o5)    ----------------------------------------------
2281                                7
2282 (%i6) tellrat (y^2 = x^2);
2283                         2    2   2
2284 (%o6)                 [y  - x , a  + a + 1]
2285 @end example
2287 @opencatbox
2288 @category{Polynomials} @category{Rational expressions}
2289 @closecatbox
2290 @end deffn
2292 @c -----------------------------------------------------------------------------
2293 @deffn {関数} totaldisrep (@var{expr})
2295 @var{expr}のすべての部分式を標準有理式(CRE)から一般形に変換して、
2296 結果を返します。
2297 もし@var{expr}がそれ自身CRE形なら、@code{totaldisrep}は、@code{ratdisrep}と同一です。
2299 @code{totaldisrep}は、
2300 CRE形の部分式を持つ等式やリストや行列などの式をratdisrepするために役に立つかもしれません。
2302 @c NEED EXAMPLES HERE
2303 @opencatbox
2304 @category{Rational expressions}
2305 @closecatbox
2306 @end deffn
2308 @c -----------------------------------------------------------------------------
2309 @deffn {関数} untellrat (@var{x_1}, @dots{}, @var{x_n})
2310 @var{x_1}, @dots{}, @var{x_n}から
2311 @code{tellrat}プロパティを
2312 削除します。
2314 @c NEED EXAMPLES HERE
2315 @opencatbox
2316 @category{Polynomials} @category{Rational expressions}
2317 @closecatbox
2318 @end deffn