Add mathjax for dgeqrf
[maxima.git] / doc / info / ja / Polynomials.texi
blobf0b7de79521e426364cf34a3055d58ef01688cad
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}
47 @category{Rational expressions}
48 @closecatbox
50 @c end concepts Polynomials
52 @c -----------------------------------------------------------------------------
53 @node Functions and Variables for Polynomials,  , Introduction to Polynomials, Polynomials
54 @section Functions and Variables for Polynomials
55 @c -----------------------------------------------------------------------------
57 @c -----------------------------------------------------------------------------
58 @anchor{algebraic}
59 @defvr {オプション変数} algebraic
60 デフォルト値: @code{false}
62 代数的整数の整理の効果が現れるようにするためには、
63 @code{algebraic}は@code{true}に設定されなければいけません。
65 @opencatbox
66 @category{Simplification flags and variables}
67 @closecatbox
68 @end defvr
70 @c -----------------------------------------------------------------------------
71 @defvr {オプション変数} berlefact
72 デフォルト値: @code{true}
74 @code{berlefact}が@code{false}の時、
75 Kroneckerの因数分解アルゴリズムが使われます。
76 そうでなければ、Berlekampのアルゴリズム―これがデフォルトですーが使われます。
78 @opencatbox
79 @category{Polynomials}
80 @closecatbox
81 @end defvr
83 @c WHAT IS THIS ABOUT EXACTLY ??
85 @c -----------------------------------------------------------------------------
86 @deffn {関数} bezout (@var{p1}, @var{p2}, @var{x})
88 @code{resultant}コマンドの代替。
89 行列を返します。
90 この行列の@code{determinant}は、望みの結果です。
92 @opencatbox
93 @category{Polynomials}
94 @closecatbox
95 @end deffn
97 @c REWORD THIS ITEM -- COULD BE MORE CONCISE
99 @c -----------------------------------------------------------------------------
100 @deffn {関数} bothcoef (@var{expr}, @var{x})
102 最初のメンバーが@var{expr}の中の@var{x}の
103 (もし@var{expr}がCRE形なら@code{ratcoef}が見つけるような)
104 係数であり、
105 2番目のメンバーが@var{expr}の残りの部分であるリストを返します。
106 例えば、
107 @code{@var{expr} = A*@var{x} + B}の@code{[A, B]}。
109 例:
110 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
111 @c islinear (expr, x) := block ([c],
112 @c         c: bothcoef (rat (expr, x), x),
113 @c         is (freeof (x, c) and c[1] # 0))$
114 @c islinear ((r^2 - (x - r)^2)/x, x);
116 @example
117 (%i1) islinear (expr, x) := block ([c],
118         c: bothcoef (rat (expr, x), x),
119         is (freeof (x, c) and c[1] # 0))$
120 (%i2) islinear ((r^2 - (x - r)^2)/x, x);
121 (%o2)                         true
122 @end example
124 @opencatbox
125 @category{Polynomials}
126 @closecatbox
127 @end deffn
129 @c -----------------------------------------------------------------------------
130 @deffn  {関数} coeff (@var{expr}, @var{x}, @var{n})
131 @deffnx {関数} coeff (@var{expr}, @var{x})
133 @var{expr}の@code{@var{x}^@var{n}}の係数を返します。
134 ここで、@var{expr}は@var{x}の多項式か単項式です。
136 @code{coeff(@var{expr}, @var{x}^@var{n})}は
137 @code{coeff(@var{expr}, @var{x}, @var{n})}と同値です。
138 @code{coeff(@var{expr}, @var{x}, 0)}は
139 @var{x}を含まない@var{expr}の剰余項を返します。
140 もし省略されたら、@var{n}は1が仮定されます。
142 @var{x}は単純変数か添字付き変数か、演算子1つとその引数のすべてから構成されるexprの部分式です。
144 @code{expand}か@code{factor}を適用することで、
145 @var{expr}と同値な式の係数を計算することが可能かもしれません。
146 @code{coeff}自身は@code{expand}や@code{factor}や他のいかなる関数も
147 適用しません。
149 例:
151 @code{coeff}は@var{expr}の@code{@var{x}^@var{n}}の係数を返します。
153 @c ===beg===
154 @c coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
155 @c ===end===
156 @example
157 (%i1) coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
158                                 3
159 (%o1)                          b
160 @end example
162 @code{coeff(@var{expr}, @var{x}^@var{n})}は
163 @code{coeff(@var{expr}, @var{x}, @var{n})}と同値です。
165 @c ===beg===
166 @c coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
167 @c coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
168 @c ===end===
169 @example
170 (%i1) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
171 (%o1)                         - c
172                                  3
173 (%i2) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
174 (%o2)                         - c
175                                  3
176 @end example
178 @code{coeff(@var{expr}, @var{x}, 0)}は
179 @var{expr}の@var{x}を含まない剰余項です。
181 @c ===beg===
182 @c coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
183 @c ===end===
184 @example
185 (%i1) coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
186                             3  3
187 (%o1)                      c  u  + a u
188 @end example
190 @var{x}は単純変数か添字付き変数か、演算子1つとその引数のすべてから構成されるexprの部分式です。
192 @c ===beg===
193 @c coeff (h^4 - 2*%pi*h^2 + 1, h, 2);
194 @c coeff (v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
195 @c coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
196 @c coeff ((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
197 @c ===end===
198 @example
199 (%i1) coeff (h^4 - 2*%pi*h^2 + 1, h, 2);
200 (%o1)                        - 2 %pi
201 (%i2) coeff (v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
202 (%o2)                        - 2 %pi
203 (%i3) coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
204                                 3
205 (%o3)                        sin (x)
206 (%i4) coeff ((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
207 (%o4)                         c - d
208 @end example
210 @code{coeff}自身は@code{expand}や@code{factor}や他のいかなる関数も
211 適用しません。
213 @c ===beg===
214 @c coeff (c*(a + b)^3, a);
215 @c expand (c*(a + b)^3);
216 @c coeff (%, a);
217 @c coeff (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
218 @c factor (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
219 @c coeff (%, (a + b)^3);
220 @c ===end===
221 @example
222 (%i1) coeff (c*(a + b)^3, a);
223 (%o1)                           0
224 (%i2) expand (c*(a + b)^3);
225                  3          2        2        3
226 (%o2)           b  c + 3 a b  c + 3 a  b c + a  c
227 (%i3) coeff (%, a);
228                                 2
229 (%o3)                        3 b  c
230 (%i4) coeff (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
231 (%o4)                           0
232 (%i5) factor (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
233                                   3
234 (%o5)                      (b + a)  c
235 (%i6) coeff (%, (a + b)^3);
236 (%o6)                           c
237 @end example
239 @code{coeff}はリスト、行列、等式上を散逸します。
241 @c ===beg===
242 @c coeff ([4*a, -3*a, 2*a], a);
243 @c coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x);
244 @c coeff (a*u - b*v = 7*u + 3*v, u);
245 @c ===end===
246 @example
247 (%i1) coeff ([4*a, -3*a, 2*a], a);
248 (%o1)                      [4, - 3, 2]
249 (%i2) coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x);
250                           [  a    b  ]
251 (%o2)                     [          ]
252                           [ - c  - d ]
253 (%i3) coeff (a*u - b*v = 7*u + 3*v, u);
254 (%o3)                         a = 7
255 @end example
257 @opencatbox
258 @category{Polynomials}
259 @closecatbox
260 @end deffn
262 @c -----------------------------------------------------------------------------
263 @deffn {関数} content (@var{p_1}, @var{x_1}, @dots{}, @var{x_n})
264 最初のメンバーが、多項式変数@var{p_1}の@var{x_n}
265 に関する項の係数(これが中身です)の最大公約数であり、
266 2番目のメンバーが中身で多項式@var{p_1}を割ったものであるリストを返します。
267 @c APPEARS TO WORK AS ADVERTISED -- ONLY x_n HAS ANY EFFECT ON THE RESULT
268 @c WHAT ARE THE OTHER VARIABLES x_1 THROUGH x_{n-1} FOR ??
270 例:
271 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
272 @c content (2*x*y + 4*x^2*y^2, y);
274 @example
275 (%i1) content (2*x*y + 4*x^2*y^2, y);
276 @group
277                                    2
278 (%o1)                   [2 x, 2 x y  + y]
279 @end group
280 @end example
282 @opencatbox
283 @category{Polynomials}
284 @closecatbox
285 @end deffn
287 @c -----------------------------------------------------------------------------
288 @deffn {関数} denom (@var{expr})
290 有理式@var{expr}の分母を返します。
292 @opencatbox
293 @category{Expressions}
294 @closecatbox
295 @end deffn
297 @c -----------------------------------------------------------------------------
298 @deffn {関数} divide (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
300 メインの多項式変数@var{x_n}に関して、
301 多項式@var{p_2}で割った多項式@var{p_1}の商と余りを計算します。
302 @c SPELL OUT THE PURPOSE OF THE OTHER VARIABLES
303 他の変数は、@code{ratvars}関数の中でようなものです。
304 結果は、最初の要素が商で、2番目の要素が余りのリストです。
306 例:
307 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
308 @c divide (x + y, x - y, x);
309 @c divide (x + y, x - y);
311 @example
312 (%i1) divide (x + y, x - y, x);
313 (%o1)                       [1, 2 y]
314 (%i2) divide (x + y, x - y);
315 (%o2)                      [- 1, 2 x]
316 @end example
318 @noindent
319 @code{y}は2番目の例の主変数であることに注意してください。
321 @opencatbox
322 @category{Polynomials}
323 @closecatbox
324 @end deffn
326 @c -----------------------------------------------------------------------------
327 @deffn {関数} eliminate ([@var{eqn_1}, @dots{}, @var{eqn_n}], [@var{x_1}, @dots{}, @var{x_k}])
329 連続する結果を取ることによって、式(もしくは0に等しいと仮定された式)から変数を消去します。
330 これは、@var{k}個の変数@var{x_1}, ..., @var{x_k}が消去された
331 @code{@var{n} - @var{k}}個の式のリストを返します。
332 最初、@var{x_1}が消去され、@code{@var{n} - 1}個の式をもたらし、
333 そして、変数@var{x_2}が消去され、などなど。
334 もし@code{@var{k} = @var{n}}なら、
335 変数@var{x_1}, ..., @var{x_k}に依らないリストの中の単一式が返されます。
336 この場合、最後の変数について最後の結果を解くため、@code{solve}がコールされます。
338 例:
340 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
341 @c expr1: 2*x^2 + y*x + z;
342 @c expr2: 3*x + 5*y - z - 1;
343 @c expr3: z^2 + x - y^2 + 5;
344 @c eliminate ([expr3, expr2, expr1], [y, z]);
345 @example
346 (%i1) expr1: 2*x^2 + y*x + z;
347                                       2
348 (%o1)                    z + x y + 2 x
349 (%i2) expr2: 3*x + 5*y - z - 1;
350 (%o2)                  - z + 5 y + 3 x - 1
351 (%i3) expr3: z^2 + x - y^2 + 5;
352                           2    2
353 (%o3)                    z  - y  + x + 5
354 (%i4) eliminate ([expr3, expr2, expr1], [y, z]);
355              8         7         6          5          4
356 (%o4) [7425 x  - 1170 x  + 1299 x  + 12076 x  + 22887 x
358                                     3         2
359                             - 5154 x  - 1291 x  + 7688 x + 15376]
360 @end example
362 @opencatbox
363 @category{Polynomials}
364 @category{Algebraic equations}
365 @closecatbox
366 @end deffn
368 @c -----------------------------------------------------------------------------
369 @anchor{ezgcd}
370 @deffn {関数} ezgcd (@var{p_1}, @var{p_2}, @var{p_3}, @dots{})
371 最初の要素が、多項式@var{p_1}, @var{p_2}, @var{p_3}, @dots{}の最大公約数で、
372 残りの要素が、多項式を最大公約数で割ったものであるリストを返します。
373 これはいつも@code{ezgcd}アルゴリズムを使います。
375 @mref{gcd}, @mref{gcdex}, @mref{gcdivide}, @mref{poly_gcd}も参照してください。
377 例:
379 三つの多項式は最大公約数 @code{2*x-3}を持ちます。
380 GCDは最初、関数 @code{gcd}で計算され、その後、関数 @code{ezgcd}で計算されます。
382 @example
383 (%i1) p1 : 6*x^3-17*x^2+14*x-3;
384                         3       2
385 (%o1)                6 x  - 17 x  + 14 x - 3
386 (%i2) p2 : 4*x^4-14*x^3+12*x^2+2*x-3;
387                     4       3       2
388 (%o2)            4 x  - 14 x  + 12 x  + 2 x - 3
389 (%i3) p3 : -8*x^3+14*x^2-x-3;
390                           3       2
391 (%o3)                - 8 x  + 14 x  - x - 3
393 (%i4) gcd(p1, gcd(p2, p3));
394 (%o4)                        2 x - 3
396 (%i5) ezgcd(p1, p2, p3);
397                    2               3      2           2
398 (%o5) [2 x - 3, 3 x  - 4 x + 1, 2 x  - 4 x  + 1, - 4 x  + x + 1]
399 @end example
401 @opencatbox
402 @category{Polynomials}
403 @closecatbox
404 @end deffn
406 @c -----------------------------------------------------------------------------
407 @defvr {オプション変数} facexpand
408 デフォルト値: @code{true}
410 @code{facexpand}は、@code{factor}が返すこれ以上小さくできない因子が
411 展開された形式(デフォルト)か再帰的(正規のCRE)形式かを制御します。
413 @opencatbox
414 @category{Polynomials}
415 @closecatbox
417 @end defvr
419 @c -----------------------------------------------------------------------------
420 @anchor{factor}
421 @deffn  {関数} factor (@var{expr})
422 @deffnx {関数} factor (@var{expr}, @var{p})
424 任意の数の変数と関数を含んだ式@var{expr}を整数上既約な因子に因数分解します。
425 @code{factor (@var{expr}, @var{p})}は@var{expr}を、
426 有理数体上で、最小多項式が@var{p}である要素で因数分解します。
428 @code{factor}は、整数を素因数分解するのに@code{ifactor}関数を使います。
430 @code{factorflag}が@code{false}なら有理式の整数因子の素因数分解を抑制します。
432 @code{dontfactor}は、因数分解しない変数のリストに設定されます。
433 (初期状態では空です。)
434 因数分解は、@code{dontfactor}リスト上のそれらより(CRE形式で仮定された変数順序を使って)重要でない変数に関しても
435 実行されません。
437 @code{savefactors}が@code{true}なら、
438 同じ因子のいくつかを含む式の後の因数分解をスピードアップするために、因子の積である式の因子が、ある関数によって保存されます。
440 @code{berlefact}が @code{false}ならKroneckerの因数分解アルゴリズムが使われ、
441 そうでなければ、デフォルトであるBerlekampのアルゴリズムが使われます。
443 @code{intfaclim}が@code{true}なら、
444 もし自明な割り算やPollardのロー法の後、因子が見つからないなら、整数の素因数分解をあきらめます。
445 @code{false}に設定されていれば(これはユーザーが陽に@code{factor}をコールする場合です)整数の完全な素因数分解が企てられます。
446 @code{intfaclim}のユーザー設定は内部で@code{factor}がコールされた時に使われます。
447 @code{intfaclim}はMaximaが大きな整数を素因数分解するのにありえない長い時間を使うことを妨げるようにリセットされます。
449 例:
451 @c EXAMPLES BELOW ADAPTED FROM examples (factor)
452 @c factor (2^63 - 1);
453 @c factor (-8*y - 4*x + z^2*(2*y + x));
454 @c -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2;
455 @c block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
456 @c factor (1 + %e^(3*x));
457 @c factor (1 + x^4, a^2 - 2);
458 @c factor (-y^2*z^2 - x*z^2 + x^2*y^2 + x^3);
459 @c (2 + x)/(3 + x)/(b + x)/(c + x)^2;
460 @c ratsimp (%);
461 @c partfrac (%, x);
462 @c map ('factor, %);
463 @c ratsimp ((x^5 - 1)/(x - 1));
464 @c subst (a, x, %);
465 @c factor (%th(2), %);
466 @c factor (1 + x^12);
467 @c factor (1 + x^99);
468 @example
469 (%i1) factor (2^63 - 1);
470                     2
471 (%o1)              7  73 127 337 92737 649657
472 (%i2) factor (-8*y - 4*x + z^2*(2*y + x));
473 (%o2)               (2 y + x) (z - 2) (z + 2)
474 (%i3) -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2;
475                 2  2        2    2    2
476 (%o3)          x  y  + 2 x y  + y  - x  - 2 x - 1
477 (%i4) block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
478 @group
479                        2
480                      (x  + 2 x + 1) (y - 1)
481 (%o4)                ----------------------
482                            36 (y + 1)
483 @end group
484 (%i5) factor (1 + %e^(3*x));
485                       x         2 x     x
486 (%o5)              (%e  + 1) (%e    - %e  + 1)
487 (%i6) factor (1 + x^4, a^2 - 2);
488                     2              2
489 (%o6)             (x  - a x + 1) (x  + a x + 1)
490 (%i7) factor (-y^2*z^2 - x*z^2 + x^2*y^2 + x^3);
491                        2
492 (%o7)              - (y  + x) (z - x) (z + x)
493 (%i8) (2 + x)/(3 + x)/(b + x)/(c + x)^2;
494                              x + 2
495 (%o8)               ------------------------
496                                            2
497                     (x + 3) (x + b) (x + c)
498 (%i9) ratsimp (%);
499                 4                  3
500 (%o9) (x + 2)/(x  + (2 c + b + 3) x
502      2                       2             2                   2
503  + (c  + (2 b + 6) c + 3 b) x  + ((b + 3) c  + 6 b c) x + 3 b c )
504 (%i10) partfrac (%, x);
505            2                   4                3
506 (%o10) - (c  - 4 c - b + 6)/((c  + (- 2 b - 6) c
508      2              2         2                2
509  + (b  + 12 b + 9) c  + (- 6 b  - 18 b) c + 9 b ) (x + c))
511                  c - 2
512  - ---------------------------------
513      2                             2
514    (c  + (- b - 3) c + 3 b) (x + c)
516                          b - 2
517  + -------------------------------------------------
518              2             2       3      2
519    ((b - 3) c  + (6 b - 2 b ) c + b  - 3 b ) (x + b)
521                          1
522  - ----------------------------------------------
523              2
524    ((b - 3) c  + (18 - 6 b) c + 9 b - 27) (x + 3)
525 (%i11) map ('factor, %);
526 @group
527               2
528              c  - 4 c - b + 6                 c - 2
529 (%o11) - ------------------------- - ------------------------
530                 2        2                                  2
531          (c - 3)  (c - b)  (x + c)   (c - 3) (c - b) (x + c)
533                        b - 2                        1
534             + ------------------------ - ------------------------
535                              2                          2
536               (b - 3) (c - b)  (x + b)   (b - 3) (c - 3)  (x + 3)
537 @end group
538 (%i12) ratsimp ((x^5 - 1)/(x - 1));
539                        4    3    2
540 (%o12)                x  + x  + x  + x + 1
541 (%i13) subst (a, x, %);
542                        4    3    2
543 (%o13)                a  + a  + a  + a + 1
544 (%i14) factor (%th(2), %);
545                        2        3        3    2
546 (%o14)   (x - a) (x - a ) (x - a ) (x + a  + a  + a + 1)
547 (%i15) factor (1 + x^12);
548                        4        8    4
549 (%o15)               (x  + 1) (x  - x  + 1)
550 (%i16) factor (1 + x^99);
551                  2            6    3
552 (%o16) (x + 1) (x  - x + 1) (x  - x  + 1)
554    10    9    8    7    6    5    4    3    2
555  (x   - x  + x  - x  + x  - x  + x  - x  + x  - x + 1)
557    20    19    17    16    14    13    11    10    9    7    6
558  (x   + x   - x   - x   + x   + x   - x   - x   - x  + x  + x
560     4    3            60    57    51    48    42    39    33
561  - x  - x  + x + 1) (x   + x   - x   - x   + x   + x   - x
563     30    27    21    18    12    9    3
564  - x   - x   + x   + x   - x   - x  + x  + 1)
565 @end example
567 @opencatbox
568 @category{Polynomials}
569 @closecatbox
570 @end deffn
572 @c -----------------------------------------------------------------------------
573 @defvr {オプション変数} factorflag
574 デフォルト値: @code{false}
576 @c WHAT IS THIS ABOUT EXACTLY ??
577 @code{factorflag}が@code{false}の時、
578 有理式の整数因子の素因素分解を抑制します。
580 @opencatbox
581 @category{Polynomials}
582 @closecatbox
584 @end defvr
586 @c -----------------------------------------------------------------------------
587 @deffn {関数} factorout (@var{expr}, @var{x_1}, @var{x_2}, @dots{})
589 和@var{expr}を
590 形式@code{f (@var{x_1}, @var{x_2}, @dots{})*g}の項の和に再整理します。
591 ここで、@code{g}は、いかなる@var{x_i}も含まない式の積で、@code{f}は因数分解されています。
593 オプション変数@code{keepfloat}は@code{factorout}に無視されることに注意してください。
595 例:
597 @c ===beg===
598 @c expand (a*(x+1)*(x-1)*(u+1)^2);
599 @c factorout(%,x);
600 @c ===end===
601 @example
602 (%i1) expand (a*(x+1)*(x-1)*(u+1)^2);
603              2  2          2      2      2
604 (%o1)     a u  x  + 2 a u x  + a x  - a u  - 2 a u - a
605 (%i2) factorout(%,x);
606          2
607 (%o2) a u  (x - 1) (x + 1) + 2 a u (x - 1) (x + 1)
608                                               + a (x - 1) (x + 1)
609 @end example
611 @opencatbox
612 @category{Expressions}
613 @closecatbox
614 @end deffn
616 @c -----------------------------------------------------------------------------
617 @deffn {関数} factorsum (@var{expr})
619 @var{expr}の因子(それらは和です)の中の項を
620 それらの和が因数分解可能な項のグループにグループ化しようとします。
621 @code{factorsum}は、
622 @code{expand ((x + y)^2 + (z + w)^2)}の結果を回復できますが、
623 項が共通の変数を持つので、
624 @code{expand ((x + 1)^2 + (x + y)^2)}は回復できません。
626 例:
628 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
629 @c expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
630 @c factorsum (%);
631 @example
632 (%i1) expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
633            2      2                            2      2
634 (%o1) a x z  + a z  + 2 a w x z + 2 a w z + a w  x + v  x
636                                      2        2    2            2
637                         + 2 u v x + u  x + a w  + v  + 2 u v + u
638 (%i2) factorsum (%);
639                                    2          2
640 (%o2)            (x + 1) (a (z + w)  + (v + u) )
641 @end example
643 @opencatbox
644 @category{Expressions}
645 @closecatbox
646 @end deffn
648 @c -----------------------------------------------------------------------------
649 @deffn {関数} fasttimes (@var{p_1}, @var{p_2})
651 多項式の掛け算のための特殊なアルゴリズムを使って、
652 多項式@var{p_1}と@var{p_2}の積を返します。
653 @code{p_1}と@code{p_2}は、
654 多変数で、密で、ほぼ同じサイズであるべきです。
655 @code{n_1}が@code{p_1}の次数で、
656 @code{n_2}が@code{p_2}の次数だとすると、
657 古典的な掛け算は、
658 @code{n_1 n_2}のオーダーですが、
659 @code{fasttimes}は、@code{max (n_1, n_2)^1.585}のオーダーです。
661 @opencatbox
662 @category{Polynomials}
663 @closecatbox
664 @end deffn
666 @c -----------------------------------------------------------------------------
667 @deffn {関数} fullratsimp (@var{expr})
669 @code{fullratsimp}は、ratsimpと式の非有理的整理を、式変形されなくなるまで繰り返し適応し、結果を返します。
671 非有理式が含まれる時、@code{ratsimp}を1回コールと、その後の非有理的(「一般」)整理だけでは、
672 整理された結果を返すのに十分でないかもしれません。
673 時々、複数回のコールが必要とされます。
674 @code{fullratsimp}はこのプロセスを楽にしてくれます。
676 @code{fullratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})}は@code{ratsimp}や@code{rat}と同様
677 複数の引数を取ります。
679 例:
680 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
681 @c expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
682 @c ratsimp (expr);
683 @c fullratsimp (expr);
684 @c rat (expr);
686 @example
687 (%i1) expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
688                        a/2     2   a/2     2
689                      (x    - 1)  (x    + 1)
690 (%o1)                -----------------------
691                               a
692                              x  - 1
693 (%i2) ratsimp (expr);
694                           2 a      a
695                          x    - 2 x  + 1
696 (%o2)                    ---------------
697                               a
698                              x  - 1
699 (%i3) fullratsimp (expr);
700                               a
701 (%o3)                        x  - 1
702 (%i4) rat (expr);
703                        a/2 4       a/2 2
704                      (x   )  - 2 (x   )  + 1
705 (%o4)/R/             -----------------------
706                               a
707                              x  - 1
708 @end example
710 @opencatbox
711 @category{Simplification functions}
712 @category{Rational expressions}
713 @opencatbox
714 @end deffn
716 @c SPELL OUT WHAT fullratsubst DOES INSTEAD OF ALLUDING TO ratsubst AND lratsubst
717 @c THIS ITEM NEEDS MORE WORK
719 @c -----------------------------------------------------------------------------
720 @deffn {関数} fullratsubst (@var{a}, @var{b}, @var{c})
722 結果が変わらなくなるまで、自身を再帰的にコールすることを除いて、
723 @code{ratsubst}と同じです。
724 置き換える式と置き換えられる式が1つ以上の変数を共通に持つ時、
725 この関数は役に立ちます。
727 @code{fullratsubst}は、@code{lratsubst}のフォーマットでも引数を受け付けます。
728 すなわち、最初の引数は、1つの代入等式もしくは、そんな等式のリストで、
729 一方、2番目の引数は処理される式というものです。
731 @code{load ("lrats")}は、@code{fullratsubst}と@code{lratsubst}をロードします。
733 例:
735 @c EXPRESSIONS ADAPTED FROM demo ("lrats")
736 @c CAN PROBABLY CUT OUT THE lratsubst STUFF (lratsubst HAS ITS OWN DESCRIPTION)
737 @c load ("lrats")$
738 @c subst ([a = b, c = d], a + c);
739 @c lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
740 @c lratsubst (a^2 = b, a^3);
741 @c ratsubst (b*a, a^2, a^3);
742 @c fullratsubst (b*a, a^2, a^3);
743 @c fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
744 @c fullratsubst (a^2 = b*a, a^3);
745 @c errcatch (fullratsubst (b*a^2, a^2, a^3));
747 @example
748 (%i1) load ("lrats")$
749 @end example
750 @itemize @bullet
751 @item
752 @code{subst}は多重代入を実行できます。
753 @code{lratsubst}は@code{subst}に類似しています。
754 @end itemize
755 @example
756 (%i2) subst ([a = b, c = d], a + c);
757 (%o2)                         d + b
758 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
759 (%o3)                (d + a c) e + a d + b c
760 @end example
761 @itemize @bullet
762 @item
763 もしただ1つの代入が望まれるなら、
764 最初の引数として1つの等式を与えます。
765 @end itemize
766 @example
767 (%i4) lratsubst (a^2 = b, a^3);
768 (%o4)                          a b
769 @end example
770 @itemize @bullet
771 @item
772 @code{fullratsubst}は、
773 結果が変わらなくなるまで再帰することを除いて、
774 @code{ratsubst}と同値です。
775 @end itemize
776 @example
777 (%i5) ratsubst (b*a, a^2, a^3);
778                                2
779 (%o5)                         a  b
780 (%i6) fullratsubst (b*a, a^2, a^3);
781                                  2
782 (%o6)                         a b
783 @end example
784 @itemize @bullet
785 @item
786 @code{fullratsubst}も、
787 最初の引数として、等式のリストもしくは1つの式を受け入れます。
788 @end itemize
789 @example
790 (%i7) fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
791 (%o7)                           b
792 (%i8) fullratsubst (a^2 = b*a, a^3);
793                                  2
794 (%o8)                         a b
795 @end example
796 @itemize @bullet
797 @item
798 @c REWORD THIS SENTENCE
799 @code{fullratsubst}は、不確定な再帰を起こすかもしれません。
800 @end itemize
801 @example
802 (%i9) errcatch (fullratsubst (b*a^2, a^2, a^3));
804 *** - Lisp stack overflow. RESET
805 @end example
807 @opencatbox
808 @category{Rational expressions}
809 @closecatbox
810 @end deffn
812 @c GCD IS A VARIABLE AND A FUNCTION
813 @c THIS ITEM NEEDS A LOT OF WORK
814 @c -----------------------------------------------------------------------------
815 @anchor{gcd}
816 @deffn {関数} gcd (@var{p_1}, @var{p_2}, @var{x_1}, @dots{})
818 @var{p_1}と@var{p_2}の最大公約数を返します。
819 フラグ@code{gcd}は、どのアルゴリズムを利用するか決めます。
820 @code{gcd}を@code{ez}, @code{subres}, @code{red}, もしくは@code{spmod}
821 設定することは、それぞれ、@code{ezgcd}, 部分終結式@code{prs}, 被約, もしくはモジュラーアルゴリズムを選択します。
822 もし@code{gcd}が@code{false}なら、
823 @code{gcd (@var{p_1}, @var{p_2}, @var{x})}は、すべての@var{x}に関していつも1を返します。
824 (例えば、@code{ratsimp}, @code{factor}, など)多くの関数は、
825 陰にgcdを計算します。
826 斉次多項式に関して、
827 @code{subres}に等しい@code{gcd}を使うことが推奨されます。
828 例えば、@code{gcd (@var{x}^2 - 2*sqrt(2)*@var{x} + 2, @var{x} - sqrt(2))}のように、代数的数が含まれる時
829  @code{algebraic}は@code{true}でなくてはいけません。また、@code{gcd}は@code{ez}であってはいけません。
831 @code{gcd}フラグ―デフォルトは@code{spmod}―は、
832 もし@code{false}なら、
833 式が標準有理式(CRE)形に変換される時も、最大公約数を計算させません。
834 もしgcdが要求されないなら、これは、時々計算のスピードを上げます。
836 @mref{ezgcd}, @mref{gcdex}, @mref{gcdivide}, @mref{poly_gcd}も参照してください。
838 例:
840 @example
841 (%i1) p1:6*x^3+19*x^2+19*x+6; 
842                         3       2
843 (%o1)                6 x  + 19 x  + 19 x + 6
844 (%i2) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x;
845                   5       4       3       2
846 (%o2)          6 x  + 13 x  + 12 x  + 13 x  + 6 x
847 (%i3) gcd(p1, p2);
848                             2
849 (%o3)                    6 x  + 13 x + 6
850 (%i4) p1/gcd(p1, p2), ratsimp;
851 (%o4)                         x + 1
852 (%i5) p2/gcd(p1, p2), ratsimp;
853                               3
854 (%o5)                        x  + x
855 @end example
857 @mref{ezgcd}は
858 一番目の要素が多項式 @var{p_1}と @var{p_2}の最大公約数で、
859 残りの要素が最大公約数で多項式を割ったもので構成されるリストを返します。
861 @example
862 (%i6) ezgcd(p1, p2);
863                     2                     3
864 (%o6)           [6 x  + 13 x + 6, x + 1, x  + x]
865 @end example
867 @opencatbox
868 @category{Polynomials}
869 @category{Rational expressions}
870 @closecatbox
871 @end deffn
873 @c IN NEED OF SERIOUS CLARIFICATION HERE
875 @c -----------------------------------------------------------------------------
876 @anchor{gcdex}
877 @deffn  {関数} gcdex (@var{f}, @var{g})
878 @deffnx {関数} gcdex (@var{f}, @var{g}, @var{x})
880 リスト@code{[@var{a}, @var{b}, @var{u}]}を返します。
881 ここで、@var{u}は@var{f}と@var{g}の最大公約数(gcd)であり、
882 かつ、@code{@var{a} @var{f} + @var{b} @var{g}}は@var{u}に等しいです。
883 引数@var{f}と@var{g}は、1変数多項式であるか、
884 そうでなければ、指定された@b{主}変数@var{x}の多項式でなければいけません。
885 これが機能するには単項イデアル整域にある必要があるからです。
886 gcdは、他の変数の有理関数係数を持つ1変数多項式としての@var{f}と@var{g}に関するgcdを意味します。
888 @code{gcdex}は、ユークリッドのアルゴリズムを実行します。
889 すべてが@code{[f, g, -1]}に直角の@code{L[i]: [a[i], b[i], r[i]]}の列を持ち、
890 @code{q = quotient(r[i]/r[i+1])}なら@code{L[i+2]: L[i] - q L[i+1]}となるように次を組み立て、
891 余り@code{r[i+2]}がゼロの時、@code{L[i+1]}で終了します。
893 引数 @var{f}と @var{g}は整数であり得ます。
894 この場合、@code{gcdex}は関数 @mref{igcdex}を呼び出します。
896 @mref{ezgcd}, @mref{gcd}, @mref{gcdivide}, @mref{poly_gcd}も参照してください。
898 例:
900 @c ===beg===
901 @c gcdex (x^2 + 1, x^3 + 4);
902 @c % . [x^2 + 1, x^3 + 4, -1];
903 @c ===end===
904 @example
905 (%i1) gcdex (x^2 + 1, x^3 + 4);
906 @group
907                        2
908                       x  + 4 x - 1  x + 4
909 (%o1)/R/           [- ------------, -----, 1]
910                            17        17
911 @end group
912 (%i2) % . [x^2 + 1, x^3 + 4, -1];
913 (%o2)/R/                        0
914 @end example
916 @c SORRY FOR BEING DENSE BUT WHAT IS THIS ABOUT EXACTLY
917 以下のgcdは、
918 @code{k(y)[x]}に関して働くので@code{1}です。
919 @code{k[y, x]}で期待する@code{y+1}ではないことに注意してください。
921 @c ===beg===
922 @c gcdex (x*(y + 1), y^2 - 1, x);
923 @c ===end===
924 @example
925 (%i1) gcdex (x*(y + 1), y^2 - 1, x);
926 @group
927                                1
928 (%o1)/R/                 [0, ------, 1]
929                               2
930                              y  - 1
931 @end group
932 @end example
934 @opencatbox
935 @category{Polynomials}
936 @category{Rational expressions}
937 @closecatbox
938 @end deffn
941 @c CHOOSE ONE CHARACTERIZATION OF "GAUSSIAN INTEGERS" AND USE IT WHERE GAUSSIAN INTEGERS ARE REFERENCED
943 @c -----------------------------------------------------------------------------
944 @deffn {関数} gcfactor (@var{n})
946 ガウス整数
947 すなわち、@var{a}と@var{b}が有理整数(元々の整数)
948 である形式@code{@var{a} + @var{b} @code{%i}}
949 の数、@var{n}をガウス整数上に因数分解します。
950 因子は、@var{a}と@var{b}を非負にすることによって正規化されます。
951 @c NEED EXAMPLES HERE
953 @opencatbox
954 @category{Integers}
955 @closecatbox
956 @end deffn
958 @c CHOOSE ONE CHARACTERIZATION OF "GAUSSIAN INTEGERS" AND USE IT WHERE GAUSSIAN INTEGERS ARE REFERENCED
960 @c -----------------------------------------------------------------------------
961 @deffn {関数} gfactor (@var{expr})
963 多項式@var{expr}をガウス整数(虚数単位@code{%i}を付け加えた整数)上で因数分解します。
964 @c "This is like" -- IS IT THE SAME OR NOT ??
965 @var{a}が@code{%i}となる@code{factor (@var{expr}, @var{a}^2+1)}ようなものです。
967 例:
969 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
970 @c gfactor (x^4 - 1);
971 @example
972 (%i1) gfactor (x^4 - 1);
973 (%o1)           (x - 1) (x + 1) (x - %i) (x + %i)
974 @end example
976 @opencatbox
977 @category{Polynomials}
978 @closecatbox
979 @end deffn
981 @c DESCRIBE THIS INDEPENDENTLY OF factorsum
982 @c THIS ITEM NEEDS MORE WORK
984 @c -----------------------------------------------------------------------------
985 @deffn {関数} gfactorsum (@var{expr})
987 @code{factorsum}に似ていますが、
988 @code{factor}の代わりに@code{gfactor}を適用します。
990 @opencatbox
991 @category{Expressions}
992 @closecatbox
993 @end deffn
995 @c -----------------------------------------------------------------------------
996 @deffn {関数} hipow (@var{expr}, @var{x})
998 @var{expr}の中で、@var{x}の、陽に示された最も大きな指数を返します。
999 @var{x}は変数もしくは一般式です。
1000 もし@var{x}が@var{expr}の中に現れないなら、
1001 @code{hipow}は@code{0}を返します。
1003 @code{hipow}は、@code{expr}に等価な式を考慮しません。
1004 特に、@code{hipow}は、@code{expr}を展開しないので、
1005 @code{hipow (@var{expr}, @var{x})}と@code{hipow (expand (@var{expr}, @var{x}))}
1006 は、違った結果をもたらすかもしれません。
1008 例:
1010 @example
1011 (%i1) hipow (y^3 * x^2 + x * y^4, x);
1012 (%o1)                           2
1013 (%i2) hipow ((x + y)^5, x);
1014 (%o2)                           1
1015 (%i3) hipow (expand ((x + y)^5), x);
1016 (%o3)                           5
1017 (%i4) hipow ((x + y)^5, x + y);
1018 (%o4)                           5
1019 (%i5) hipow (expand ((x + y)^5), x + y);
1020 (%o5)                           0
1021 @end example
1023 @opencatbox
1024 @category{Expressions}
1025 @closecatbox
1026 @end deffn
1028 @c I SUSPECT THE FOLLOWING TEXT IS OUTDATED DUE TO CHANGES IN INTEGER FACTORING CODE
1030 @c -----------------------------------------------------------------------------
1031 @defvr {オプション変数} intfaclim
1032 デフォルト値: true
1034 もし@code{true}なら、
1035 もし試し割りとPollardのロー法の後、因子が見つからなければ、
1036 Maximaは、整数の素因素分解をあきらめ、素因数分解は完了しません。
1038 @code{intfaclim}が@code{false}の時、
1039  (これは、ユーザーが明示的に@code{factor}をコールした場合です)
1040 完全な素因数分解が試みられます。
1041 @code{divisors}, @code{divsum} や@code{totient}の中で因子が計算される時は、
1042 @code{intfaclim}は@code{false}に設定されます
1043 @c ANY OTHERS ??
1045 @c WHAT ARE THESE MYSTERIOUS INTERNAL CALLS ?? (LET'S JUST LIST THE FUNCTIONS INVOLVED)
1046 @code{factor}への内部コールは、
1047 @code{intfaclim}のユーザー指定の値を考慮します。
1048 @code{intfaclim}を@code{true}に設定することは、
1049 大きな整数を素因数分解するのに費やす時間を少なくするかもしれません。
1050 @c NEED EXAMPLES HERE
1052 @opencatbox
1053 @category{Integers}
1054 @closecatbox
1055 @end defvr
1057 @c -----------------------------------------------------------------------------
1058 @defvr {オプション変数} keepfloat
1059 デフォルト値: @code{false}
1061 @code{keepfloat}が@code{true}の時、
1062 浮動小数点数を含む式が標準有理式(CRE)形に変換される時、
1063 浮動小数点が有理数化されないようにします。
1065 関数@code{solve}とそれを呼び出す関数(例えば@code{eigenvalues})は、
1066 現在、このフラグを無視し、とにかく浮動小数点数を変換することに注意してください。
1068 例:
1070 @c ===beg===
1071 @c rat(x/2.0);
1072 @c rat(x/2.0), keepfloat;
1073 @c ===end===
1074 @example
1075 (%i1) rat(x/2.0);
1077 `rat' replaced 0.5 by 1/2 = 0.5
1078                                        x
1079 (%o1)/R/                               -
1080                                        2
1081 (%i2) rat(x/2.0), keepfloat;
1083 (%o2)/R/                     E        0.5 x
1084 @end example
1086 @code{solve} ignores @code{keepfloat}:
1088 @c ===beg===
1089 @c solve(1.0-x,x), keepfloat;
1090 @c ===end===
1091 @example
1092 (%i3) solve(1.0-x,x), keepfloat;
1094 `rat' replaced 1.0 by 1/1 = 1.0
1095 (%o3)                               [x = 1]
1096 @end example
1098 @opencatbox
1099 @category{Numerical evaluation}
1100 @closecatbox
1102 @end defvr
1104 @c -----------------------------------------------------------------------------
1105 @anchor{lowpow}
1106 @deffn {関数} lopow (@var{expr}, @var{x})
1108 @var{expr}の中に陽に現れる@var{x}の最小の指数を返します。
1109 例えば、
1111 @example
1112 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1113 (%o1)                       min(a, 2)
1114 @end example
1116 @opencatbox
1117 @category{Expressions}
1118 @closecatbox
1119 @end deffn
1121 @c DESCRIBE lratsubst INDEPENDENTLY OF subst
1122 @c THIS ITEM NEEDS MORE WORK
1124 @c -----------------------------------------------------------------------------
1125 @deffn {関数} lratsubst (@var{L}, @var{expr})
1127 @code{subst}の代わりに@code{ratsubst}を使うことを除いて、
1128 @code{subst (@var{L}, @var{expr})}に類似しています。
1130 @code{lratsubst}の最初の引数は、
1131 @code{subst}が受け付けるそれと同一のフォーマットの等式もしくは等式のリストです。
1132 代入は、等式のリストによって与えられた順、すなわち、左から右に、実行されます。
1134 @code{load ("lrats")}は、@code{fullratsubst}と@code{lratsubst}をロードします。
1136 例:
1138 @c EXPRESSIONS ADAPTED FROM demo ("lrats")
1139 @c THIS STUFF CAN PROBABLY STAND REVISION -- EXAMPLES DON'T SEEM VERY ENLIGHTENING
1140 @c load ("lrats")$
1141 @c subst ([a = b, c = d], a + c);
1142 @c lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
1143 @c lratsubst (a^2 = b, a^3);
1144 @example
1145 (%i1) load ("lrats")$
1146 @end example
1147 @itemize @bullet
1148 @item
1149 @code{subst}は多重代入を実行できます。
1150 @code{lratsubst}は@code{subst}に似ています。
1151 @end itemize
1152 @example
1153 (%i2) subst ([a = b, c = d], a + c);
1154 (%o2)                         d + b
1155 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
1156 (%o3)                (d + a c) e + a d + b c
1157 @end example
1158 @itemize @bullet
1159 @item
1160 もし代入1つだけを望むなら、
1161 1つの等式を最初の引数として与えることができます。
1162 @end itemize
1163 @example
1164 (%i4) lratsubst (a^2 = b, a^3);
1165 (%o4)                          a b
1166 @end example
1168 @opencatbox
1169 @category{Polynomials}
1170 @category{Rational expressions}
1171 @closecatbox
1172 @end deffn
1174 @c -----------------------------------------------------------------------------
1175 @defvr {オプション変数} modulus
1176 デフォルト値: @code{false}
1178 @code{modulus}が正の数@var{p}の時、
1179 (@code{rat}や関連の関数が返すように)有理数上の演算は、
1180 「バランスさせた」モジュラス系と呼ばれるものを使って、
1181 @var{p}を法とする合同変換が実行されます。
1182 「バランスさせた」モジュラス系では、
1183 @code{@var{n} modulo @var{p}}は、
1184 @code{@var{a} @var{p} + @var{k}}が@var{n}に等しくなるようなある整数@var{a}が存在するような整数@var{k}と定義され、@var{k}は、
1185 @var{p}が奇数の時、
1186 @code{[-(@var{p}-1)/2, ..., 0, ..., (@var{p}-1)/2]}の中から、
1187 @var{p}が偶数の時、@code{[-(@var{p}/2 - 1), ..., 0, ...., @var{p}/2]}の中から
1188 選ばれます。
1189 @c NEED EXAMPLES OF "BALANCED MODULUS" HERE
1191 @c WHAT CAN THIS MEAN ?? IS THE MODULUS STORED WITH THE EXPRESSION ??
1192 @c "... in order to get correct results" -- WHAT DO YOU GET IF YOU DON'T RE-RAT ??
1193 @code{modulus}が再設定された時、もし@var{expr}が既に標準有理式(CRE)形なら、
1194 正しい結果を得るためには、
1195 例えば@code{expr: rat (ratdisrep (expr))}というように、@var{expr}を再ratする必要があるかもしれません。
1197 典型的には、@code{modulus}は素数が設定されます。
1198 もし@code{modulus}が正の合成数に設定されたら、
1199 この設定は受け入れられますが、警告メッセージが表示されます。
1200 Maximaは、ゼロや負の整数が@code{modulus}に割り当てられるのを許します。
1201 それが役に立つ結果を持つかどうか明らかではありませんが。
1203 @c NEED EXAMPLES HERE
1204 @opencatbox
1205 @category{Integers}
1206 @closecatbox
1207 @end defvr
1209 @c APPARENTLY OBSOLETE: ONLY EFFECT OF $newfac COULD BE TO CAUSE NONEXISTENT FUNCTION NMULTFACT
1210 @c TO BE CALLED (IN FUNCTION FACTOR72 IN src/factor.lisp CIRCA LINE 1400)
1211 @c $newfac NOT USED IN ANY OTHER CONTEXT (ASIDE FROM DECLARATIONS)
1212 @c COMMENT IT OUT NOW, CUT IT ON THE NEXT PASS THROUGH THIS FILE
1213 @c @defvar newfac
1214 @c デフォルト値: @code{false}
1215 @c 
1216 @c When @code{newfac} is @code{true}, @code{factor} will use the new factoring
1217 @c routines.
1218 @c 
1219 @c @end defvar
1221 @c -----------------------------------------------------------------------------
1222 @deffn {関数} num (@var{expr})
1224 もし@var{expr}が比なら、その分子を返します。
1225 もし@var{expr}が比でないなら、@var{expr}が返されます。
1227 @code{num}は引数を評価します。
1229 @c NEED SOME EXAMPLES HERE
1230 @opencatbox
1231 @category{Expressions}
1232 @closecatbox
1233 @end deffn
1235 @c -----------------------------------------------------------------------------
1236 @anchor{polydecomp}
1237 @deffn {関数} polydecomp (@var{p}, @var{x})
1239 変数@var{x}の多項式@var{p}を@var{x}の多項式の関数合成に分解します。
1240 @code{polydecomp}は、
1242 @example
1243 lambda ([x], p_1) (lambda ([x], p_2) (... (lambda ([x], p_n) (x))
1244   ...))
1245 @end example
1247 が@var{p}に等しいようなリスト@code{[@var{p_1}, ..., @var{p_n}]}を返します。
1248 @var{n}より小さい@var{i}について@var{p_i}の次数は1より大きいです。
1250 このような分解は一意的ではありません。
1252 例:
1254 @c ===beg===
1255 @c polydecomp (x^210, x);
1256 @c p : expand (subst (x^3 - x - 1, x, x^2 - a));
1257 @c polydecomp (p, x);
1258 @c ===end===
1259 @example
1260 (%i1) polydecomp (x^210, x);
1261                           7   5   3   2
1262 (%o1)                   [x , x , x , x ]
1263 (%i2) p : expand (subst (x^3 - x - 1, x, x^2 - a));
1264                 6      4      3    2
1265 (%o2)          x  - 2 x  - 2 x  + x  + 2 x - a + 1
1266 (%i3) polydecomp (p, x);
1267                         2       3
1268 (%o3)                 [x  - a, x  - x - 1]
1269 @end example
1271 以下の関数は、@code{x}の関数として、
1272 @code{L = [e_1, ..., e_n]}を合成します;
1273 それはpolydecompの逆です。
1275 @c ===beg===
1276 @c compose (L, x) :=
1277 @c   block ([r : x], for e in L do r : subst (e, x, r), r) $
1278 @c ===end===
1279 @example
1280 compose (L, x) :=
1281   block ([r : x], for e in L do r : subst (e, x, r), r) $
1282 @end example
1284 @code{compose}を使って、上の例を再表現します:
1286 @c ===beg===
1287 @c polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
1288 @c ===end===
1289 @example
1290 (%i3) polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
1291                         2       3
1292 (%o3)                 [x  - a, x  - x - 1]
1293 @end example
1295 @code{compose (polydecomp (@var{p}, @var{x}), @var{x})}はいつも
1296 (展開されていない)@var{p}を返しますが、
1297 @code{polydecomp (compose ([@var{p_1}, ..., @var{p_n}], @var{x}), @var{x})}は、
1298 必ずしも@code{[@var{p_1}, ..., @var{p_n}]}を返さ@i{ない}ことに注意してください。
1300 @c ===beg===
1301 @c polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
1302 @c polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
1303 @c ===end===
1304 @example
1305 (%i4) polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
1306                           2       2
1307 (%o4)                   [x  + 2, x  + 1]
1308 (%i5) polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
1309                       2       2
1310                      x  + 3  x  + 5
1311 (%o5)               [------, ------, 2 x + 1]
1312                        4       2
1313 @end example
1315 @opencatbox
1316 @category{Polynomials}
1317 @closecatbox
1318 @end deffn
1320 @c -----------------------------------------------------------------------------
1321 @anchor{polymod}
1322 @deffn  {関数} polymod (@var{p})
1323 @deffnx {関数} polymod (@var{p}, @var{m})
1325 多項式@var{p}を、変数@code{modulus}の値である現在の法に関してモジュラー表現に変換します。
1327 @code{polymod (@var{p}, @var{m})}は、
1328 @code{modulus}の現在値の代わりに法@var{m}を使うように指定します。
1330 @code{modulus}を参照してください。
1332 @opencatbox
1333 @category{Polynomials}
1334 @closecatbox
1335 @end deffn
1337 @c ISN'T THERE AN EQUIVALENT FUNCTION SOMEWHERE ??
1338 @c NEEDS WORK (IF KEPT)
1340 @c -----------------------------------------------------------------------------
1341 @anchor{powers}
1342 @deffn {関数} powers (@var{expr}, @var{x})
1344 @var{expr}に現れる@var{x}のべきを返します。
1346 @code{load ("powers")} loads this function.
1347 @c HMM, THERE'S A BUNCH OF MAXIMA FUNCTIONS IN src/powers.lisp ...
1348 @c FOR SOME REASON src/powers.lisp IS NOT PART OF THE USUAL BUILD -- STRANGE
1350 @c HERE IS THE TEXT FROM archive/share/unknown/powers.usg -- MERGE !!!
1351 @c THIS FUNCTION IS A GENERALISATION OF "HIPOW" AND "LOPOW"
1352 @c IN THAT IT RETURNS A LIST OF ALL THE POWERS OF VAR OCCURING
1353 @c IN EXPR. IT IS STILL NECESSARY TO EXPAND EXPR BEFORE APPLYING
1354 @c POWERS (ON PAIN OF GETTING THE WRONG ANSWER).
1355 @c 
1356 @c THIS FUNCTION HAS MANY USES, E.G. IF YOU WANT TO FIND ALL
1357 @c THE COEFFICIENTS OF X IN A POLYNOMIAL POLY YOU CAN USE
1358 @c MAP(LAMBDA([POW],COEFF(POLY,X,POW)),POWERS(POLY,X));
1359 @c AND MANY OTHER SIMILAR USEFUL HACKS.
1361 @opencatbox
1362 @category{Expressions}
1363 @category{Polynomials}
1364 @closecatbox
1365 @end deffn
1367 @c -----------------------------------------------------------------------------
1368 @anchor{quotient}
1369 @deffn  {関数} quotient (@var{p_1}, @var{p_2})
1370 @deffnx {関数} quotient (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
1372 多項式@var{p_1}を多項式@var{p_2}で割った結果を返します。
1373 引数@var{x_1}, @dots{}, @var{x_n}は、@code{ratvars}と同様に解釈されます。
1375 @code{quotient}は、@code{divide}が返す2要素リストの最初の要素を返します。
1377 @c NEED SOME EXAMPLES HERE
1378 @opencatbox
1379 @category{Polynomials}
1380 @closecatbox
1381 @end deffn
1383 @c THIS ITEM CAN PROBABLY BE IMPROVED
1385 @c -----------------------------------------------------------------------------
1386 @deffn  {関数} rat (@var{expr})
1387 @deffnx {関数} rat (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
1389 @var{expr}を標準有理式(CRE)形式に変換します。
1390 展開し、共通の分母上ですべての項を結合し、通分し、@code{ratepsilon}の許容誤差内で浮動小数点を有理数に変換します。
1391 変数は、もし指定されたなら、@code{ratvars}のように@var{x_1}, @dots{}, @var{x_n}に従って並び替えられます。
1393 @code{rat}は一般に、加算@code{+}, 減算@code{-}, 乗算@code{*}, 除算@code{/}と整数べきの指数を除いた関数を
1394 整理しません。
1395 一方で@code{ratsimp}はこれらの場合を扱います。
1396 CRE形式の中のアトム(数と変数)は一般形式でのそれと同じではないことに注意してください。
1397 例えば、@code{rat(x) - x}は@code{rat(0)}を出力します。
1398 これは0とは違う内部表現を持ちます。
1400 @c WHAT'S THIS ABOUT EXACTLY ??
1401 @code{ratfac}が@code{true}の時、
1402 @code{rat}は、CREの一部因数分解された形式を出力します。
1403 有理演算の最中、因数分解パッケージをコールなしに、式は可能な限り因数分解され続けます。
1404 これにより常に、いくつかの計算でメモリと時間を節約することになります。
1405 分子と分母は互いに素になり(例えば、@code{((x^2 - 1)^4/(x + 10^2)}は@code{(x - 1)^4 (x + 1)^2}を出力します)、
1406 それぞれの部分の中の因子は互いに素とは限りません。
1408 @code{ratprint}が@code{false}ならユーザーに浮動小数点を有理数に変換したことを通知するメッセージの出力を抑制します。
1410 @code{keepfloat}が@code{true}なら、浮動小数点が有理数に変換されることを抑制します。
1412 @code{ratexpand}と@code{ratsimp}も参照してください。
1414 例:
1415 @c ===beg===
1416 @c ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
1417 @c       (4*y^2 + x^2);
1418 @c rat (%, y, a, x);
1419 @c ===end===
1420 @example
1421 (%i1) ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
1422       (4*y^2 + x^2);
1423 @group
1424                                            4
1425                                   (x - 2 y)
1426               (y + a) (2 y + x) (------------ + 1)
1427                                    2      2 2
1428                                  (x  - 4 y )
1429 (%o1)         ------------------------------------
1430                               2    2
1431                            4 y  + x
1432 @end group
1433 (%i2) rat (%, y, a, x);
1434                             2 a + 2 y
1435 (%o2)/R/                    ---------
1436                              x + 2 y
1437 @end example
1439 @opencatbox
1440 @category{Rational expressions}
1441 @closecatbox
1442 @end deffn
1444 @defvr {オプション変数} ratalgdenom
1445 デフォルト値: @code{true}
1447 @code{ratalgdenom}が@code{true}の時、
1448 根号に関する分母の有理化が有効になることを許します。
1449 @code{ratalgdenom}は、
1450 標準有理式(CRE)が代数モードで使われる時だけ、効果を持ちます。
1452 @opencatbox
1453 @category{Simplification flags and variables}
1454 @closecatbox
1456 @end defvr
1458 @c THIS ITEM NEEDS MORE WORK
1460 @c -----------------------------------------------------------------------------
1461 @deffn  {関数} ratcoef (@var{expr}, @var{x}, @var{n})
1462 @deffnx {関数} ratcoef (@var{expr}, @var{x})
1464 式@var{expr}の中の式@code{@var{x}^@var{n}}の係数を返します。
1465 @var{n}を省略した場合、@var{n}は1が仮定されます。
1467 戻り値は、(非有理な意味で可能な場合を除いて、)xの中の変数の制約を受けません。
1468 このタイプの係数が存在しなければ、0を返します。
1470 @code{ratcoef}は最初の引数を展開し、有理的に整理するので、
1471 純粋に構文法的な@code{coeff}のそれとは違った答えを生成することがあります。
1472 @c MOVE THIS TO EXAMPLES SECTION
1473 このように、@code{ratcoef ((x + 1)/y + x, x)}は@code{(y + 1)/y}を返しますが、@code{coeff}は1を返します。
1475 @code{ratcoef (@var{expr}, @var{x}, 0)}は、@var{expr}をsumとして見て、
1476 @var{x}を含まない項の和を返します。
1477 @c "SHOULD NOT" -- WHAT DOES THIS MEAN ??
1478 ゆえに、もし@var{x}の負のべき乗が存在するなら、@var{ratcoef}を使うべきではありません。
1480 @c WHAT IS THE INTENT HERE ??
1481 @var{expr}は検査される前に有理的に整理されるので、
1482 係数は、想像された形とは全く違って現れることがあります。
1484 例:
1486 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1487 @c s: a*x + b*x + 5$
1488 @c ratcoef (s, a + b);
1489 @example
1490 (%i1) s: a*x + b*x + 5$
1491 (%i2) ratcoef (s, a + b);
1492 (%o2)                           x
1493 @end example
1494 @c NEED MORE EXAMPLES HERE
1496 @opencatbox
1497 @category{Polynomials}
1498 @category{Rational expressions}
1499 @closecatbox
1500 @end deffn
1502 @c -----------------------------------------------------------------------------
1503 @deffn {関数} ratdenom (@var{expr})
1505 @var{expr}を標準有理式(CRE)に強制した後、@var{expr}の分母を返します。
1506 戻り値はCREです。
1508 @c ACTUALLY THE CONVERSION IS CARRIED OUT BY ratf BUT THAT'S WHAT $rat CALLS
1509 @var{expr}は、もしまだCREでないなら、@code{rat}によってCREに強制的に変換されます。
1510 この変換は、すべての項を共通の分母上に置くことによって、
1511 @var{expr}の形式を変えます。
1513 @code{denom}は似ていますが、
1514 CREではなく通常の式を返します。
1515 また、@code{denom}は共通の分母上にすべての項を置こうとはしませんし、
1516 @code{ratdenom}によって比と見なされるいくつかの式は、@code{denom}には比と見なされません。
1518 @c NEEDS AN EXAMPLE HERE
1519 @opencatbox
1520 @category{Rational expressions}
1521 @closecatbox
1522 @end deffn
1524 @c -----------------------------------------------------------------------------
1525 @defvr {オプション変数} ratdenomdivide
1526 デフォルト値: @code{true}
1528 @code{ratdenomdivide}が@code{true}の時、
1529 @code{ratexpand}は、分子が和である比を、共通の分母を持つ比の和に展開します。
1530 そうでなければ、@code{ratexpand}は比の和を1つの比に縮約します。
1531 その比の分子はそれぞれの比の分子の和です。
1533 例:
1535 @example
1536 (%i1) expr: (x^2 + x + 1)/(y^2 + 7);
1537                             2
1538                            x  + x + 1
1539 (%o1)                      ----------
1540                               2
1541                              y  + 7
1542 (%i2) ratdenomdivide: true$
1543 (%i3) ratexpand (expr);
1544                        2
1545                       x        x        1
1546 (%o3)               ------ + ------ + ------
1547                      2        2        2
1548                     y  + 7   y  + 7   y  + 7
1549 (%i4) ratdenomdivide: false$
1550 (%i5) ratexpand (expr);
1551                             2
1552                            x  + x + 1
1553 (%o5)                      ----------
1554                               2
1555                              y  + 7
1556 (%i6) expr2: a^2/(b^2 + 3) + b/(b^2 + 3);
1557                                      2
1558                            b        a
1559 (%o6)                    ------ + ------
1560                           2        2
1561                          b  + 3   b  + 3
1562 (%i7) ratexpand (expr2);
1563                                   2
1564                              b + a
1565 (%o7)                        ------
1566                               2
1567                              b  + 3
1568 @end example
1570 @opencatbox
1571 @category{Simplification flags and variables}
1572 @category{Rational expressions}
1573 @closecatbox
1574 @end defvr
1576 @c -----------------------------------------------------------------------------
1577 @deffn {関数} ratdiff (@var{expr}, @var{x})
1579 有理式@var{expr}を@var{x}に関して微分します。
1580 @var{expr}は@var{x}の多項式もしくは多項式の商でなければなりません。
1581 引数@var{x}は@var{expr}の変数もしくは部分式を取り得ます。
1582 @c NOT CLEAR (FROM READING CODE) HOW x OTHER THAN A VARIABLE IS HANDLED --
1583 @c LOOKS LIKE (a+b), 10*(a+b), (a+b)^2 ARE ALL TREATED LIKE (a+b);
1584 @c HOW TO DESCRIBE THAT ??
1586 たぶん違った形式になりますが、結果は、@code{diff}と同値です。
1587 有理式の場合、@code{ratdiff}は@code{diff}より速いでしょう。
1589 @code{ratdiff}は、もし@var{expr}が標準有理式(CRE)なら、標準有理式を返します。
1590 そうでなければ、一般式を返します。
1592 @code{ratdiff}は、@var{expr}の@var{x}への依存のみを考慮し、@code{depends}で規定された依存性は無視します。
1594 @c WHAT THIS IS ABOUT -- ratdiff (rat (factor (expr)), x) AND ratdiff (factor (rat (expr)), x) BOTH SUCCEED
1595 @c COMMENTING THIS OUT UNTIL SOMEONE CAN ESTABLISH SOME CRE'S FOR WHICH ratdiff FAILS
1596 @c However, @code{ratdiff} should not be used on factored CRE forms;
1597 @c use @code{diff} instead for such expressions.
1599 例:
1601 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1602 @c expr: (4*x^3 + 10*x - 11)/(x^5 + 5);
1603 @c ratdiff (expr, x);
1604 @c expr: f(x)^3 - f(x)^2 + 7;
1605 @c ratdiff (expr, f(x));
1606 @c expr: (a + b)^3 + (a + b)^2;
1607 @c ratdiff (expr, a + b);
1608 @example
1609 (%i1) expr: (4*x^3 + 10*x - 11)/(x^5 + 5);
1610                            3
1611                         4 x  + 10 x - 11
1612 (%o1)                   ----------------
1613                               5
1614                              x  + 5
1615 (%i2) ratdiff (expr, x);
1616                     7       5       4       2
1617                  8 x  + 40 x  - 55 x  - 60 x  - 50
1618 (%o2)          - ---------------------------------
1619                           10       5
1620                          x   + 10 x  + 25
1621 (%i3) expr: f(x)^3 - f(x)^2 + 7;
1622                          3       2
1623 (%o3)                   f (x) - f (x) + 7
1624 (%i4) ratdiff (expr, f(x));
1625                            2
1626 (%o4)                   3 f (x) - 2 f(x)
1627 (%i5) expr: (a + b)^3 + (a + b)^2;
1628                               3          2
1629 (%o5)                  (b + a)  + (b + a)
1630 (%i6) ratdiff (expr, a + b);
1631                     2                    2
1632 (%o6)            3 b  + (6 a + 2) b + 3 a  + 2 a
1633 @end example
1635 @opencatbox
1636 @category{Rational expressions}
1637 @closecatbox
1638 @end deffn
1640 @c -----------------------------------------------------------------------------
1641 @deffn {関数} ratdisrep (@var{expr})
1643 一般式として引数を返します。
1644 もし@var{expr}が一般式なら、戻り値は引数から変わりません。
1646 典型的には、@code{ratdisrep}は、
1647 標準有理式(CRE)を一般式に変換するためにコールされます。
1648 @c NOT REALLY FOND OF YOU-CAN-DO-THIS-YOU-CAN-DO-THAT STATEMENTS
1649 もし「伝染」を止めたかったり、非有理文脈で有理関数を使いたいなら、
1650 これは、時々便利です。
1652 @code{totaldisrep}も参照してください。
1654 @opencatbox
1655 @category{Rational expressions}
1656 @closecatbox
1657 @end deffn
1659 @c -----------------------------------------------------------------------------
1660 @deffn  {関数} ratexpand (@var{expr})
1661 @deffnx {オプション変数} ratexpand
1663 @var{expr}を展開します。
1664 指数和や和の積を展開し、共通分母上の分数を結合し、通分し、(もし和なら)分子を分母で割ったそれぞれの項に分割します。
1666 たとえ@var{expr}が標準有理式(CRE)でも、@code{ratexpand}の戻り値は一般式です。
1668 @c WHAT DOES THE FOLLOWING MEAN EXACTLY ??
1669 スイッチ@code{ratexpand}が@code{true}なら、CRE式は、一般式や表示形式に変換された時フルに展開されます。
1670 一方もし@code{false}なら再帰形式に変換します。
1671 @code{ratsimp}も参照してください。
1673 @code{ratdenomdivide}が@code{true}の時、
1674 @code{ratexpand}は、分子が和である比を、共通の分母を持つ比の和に展開します。
1675 そうでなければ、@code{ratexpand}は日の和を、その分子がそれぞれの比の分子の和である単一の比にまとめます。
1677 @code{keepfloat}が@code{true}の時、
1678 浮動小数点を含んだ式がCRE形式に変換される時、浮動小数点が有理化されるのを抑制します。
1680 例:
1682 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1683 @c ratexpand ((2*x - 3*y)^3);
1684 @c expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
1685 @c expand (expr);
1686 @c ratexpand (expr);
1687 @example
1688 (%i1) ratexpand ((2*x - 3*y)^3);
1689                      3         2       2        3
1690 (%o1)          - 27 y  + 54 x y  - 36 x  y + 8 x
1691 (%i2) expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
1692                          x - 1       1
1693 (%o2)                   -------- + -----
1694                                2   x - 1
1695                         (x + 1)
1696 (%i3) expand (expr);
1697                     x              1           1
1698 (%o3)          ------------ - ------------ + -----
1699                 2              2             x - 1
1700                x  + 2 x + 1   x  + 2 x + 1
1701 (%i4) ratexpand (expr);
1702                         2
1703                      2 x                 2
1704 (%o4)           --------------- + ---------------
1705                  3    2            3    2
1706                 x  + x  - x - 1   x  + x  - x - 1
1707 @end example
1709 @opencatbox
1710 @category{Rational expressions}
1711 @closecatbox
1712 @end deffn
1714 @c -----------------------------------------------------------------------------
1715 @anchor{ratfac}
1716 @defvr {オプション変数} ratfac
1717 デフォルト値: @code{false}
1719 @code{ratfac}が@code{true}の時、
1720 標準有理式(CRE)は部分的に因数分解された形式で操作されます。
1722 有理演算の間、
1723 式は、@code{factor}をコールすることなしに、
1724 可能な限り最大限因数分解されるよう維持されます。
1725 これは、いつも保存領域を節約し、いくつかの計算では時間も節約ことがあります。
1726 分子と分母は互いに素になります。
1727 例えば、@code{rat ((x^2 - 1)^4/(x + 1)^2)}は、
1728 @code{(x - 1)^4 (x + 1)^2)}をもたらしますが、
1729 それぞれの部分の中の因子は互いに素ではないかもしれません。
1731 @code{ctensr}(成分テンソル操作)パッケージでは、
1732 @code{ratfac}が@code{true}の時、
1733 リッチ、アインシュタイン、リーマン、そしてワイルテンソルとスカラー曲率は、
1734 自動的に因数分解されます。
1735 @i{@code{ratfac}は、テンソルの成分が2、3の項から成ると知られている場合だけ
1736 設定すべきです。}
1738 @code{ratfac}と@code{ratweight}体系は互換性はなく、
1739 同時には使えないかもしれません。
1741 @c NEED EXAMPLES HERE
1742 @opencatbox
1743 @category{Rational expressions}
1744 @closecatbox
1745 @end defvr
1747 @c -----------------------------------------------------------------------------
1748 @deffn {関数} ratnumer (@var{expr})
1750 @var{expr}を標準有理式(CRE)に強制変換した後、その分子を返します。
1751 戻り値はCREです。
1753 @c ACTUALLY THE CONVERSION IS CARRIED OUT BY ratf BUT THAT'S WHAT $rat CALLS
1754 もしまだCREでないなら、@var{expr}は、@code{rat}によってCREに強制変換されます。
1755 この変換は、
1756 共通の分母上にすべての項を置くことによって、
1757 @var{expr}の形式を変えるかもしれません。
1759 @code{num}は似ていますが、
1760 CREではなく通常の式を返します。
1761 また、@code{num}は共通の分母上にすべての項を置こうとはしませんし、
1762 @code{ratnumer}によって比と見なされるいくつかの式は、@code{num}には比と見なされません。
1764 @c NEEDS AN EXAMPLE HERE
1765 @opencatbox
1766 @category{Rational expressions}
1767 @closecatbox
1768 @end deffn
1770 @c -----------------------------------------------------------------------------
1771 @deffn {関数} ratp (@var{expr})
1773 もし@var{expr}が標準有理式(CRE)もしくは拡張CREなら、@code{true}を返し、
1774 そうでなければ、@code{false}を返します。
1776 CREは、@code{rat}と関連関数によって生成されます。
1777 拡張CREは、@code{taylor}と関連関数によって生成されます。
1779 @opencatbox
1780 @category{Predicate functions}
1781 @category{Rational expressions}
1782 @closecatbox
1783 @end deffn
1785 @c -----------------------------------------------------------------------------
1786 @defvr {オプション変数} ratprint
1787 デフォルト値: @code{true}
1789 @code{ratprint}が@code{true}の時、
1790 ユーザーに浮動小数点を有理数に変換したことを通知するメッセージが表示されます。
1792 @opencatbox
1793 @category{Rational expressions}
1794 @category{Numerical evaluation}
1795 @category{Console interaction}
1796 @closecatbox
1797 @end defvr
1799 @c -----------------------------------------------------------------------------
1800 @anchor{ratsimp}
1801 @deffn  {関数} ratsimp (@var{expr})
1802 @deffnx {関数} ratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})
1804 式@var{exp}とその部分式の全てを有理的に整理します(非有理的関数の引数も含みます)。
1805 結果は二つの多項式の商として、再帰的形式—主変数の係数が他の変数の多項式である形式—で返されます。
1806 変数は(例えば、@code{sin(z^2+1)}のような)非有理関数を含むかもしれませんが、
1807 どんな非有理関数の引数もまた、有理的に整理されます。
1809 @code{ratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})}は、@code{ratvars}で指定した場合と同様に、
1810 変数の順序指定に従って有理的に整理します。
1812 @code{ratsimpexpons}が@code{true}の時、
1813 @code{ratsimp}は式の指数にも適用されます。
1815 @code{ratexpand}も参照してください。
1816 @code{ratsimp}は、@code{ratexpand}に影響するフラグのいくつかに影響されることに注意してください。
1818 例:
1820 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1821 @c sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
1822 @c ratsimp (%);
1823 @c ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
1824 @c ratsimp (%);
1825 @c x^(a + 1/a), ratsimpexpons: true;
1826 @example
1827 (%i1) sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
1828 @group
1829                                          2      2
1830                    x         (log(x) + 1)  - log (x)
1831 (%o1)        sin(------) = %e
1832                   2
1833                  x  + x
1834 @end group
1835 (%i2) ratsimp (%);
1836                              1          2
1837 (%o2)                  sin(-----) = %e x
1838                            x + 1
1839 (%i3) ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
1840 @group
1841                        3/2
1842                 (x - 1)    - sqrt(x - 1) (x + 1)
1843 (%o3)           --------------------------------
1844                      sqrt((x - 1) (x + 1))
1845 @end group
1846 (%i4) ratsimp (%);
1847                            2 sqrt(x - 1)
1848 (%o4)                    - -------------
1849                                  2
1850                            sqrt(x  - 1)
1851 (%i5) x^(a + 1/a), ratsimpexpons: true;
1852                                2
1853                               a  + 1
1854                               ------
1855                                 a
1856 (%o5)                        x
1857 @end example
1859 @opencatbox
1860 @category{Simplification functions}
1861 @category{Rational expressions}
1862 @closecatbox
1863 @end deffn
1865 @c -----------------------------------------------------------------------------
1866 @defvr {オプション変数} ratsimpexpons
1867 デフォルト値: @code{false}
1869 @code{ratsimpexpons}が@code{true}の時、
1870 式整理の間、@code{ratsimp}が式の指数に適用されます。
1872 @c NEED AN EXAMPLE HERE -- RECYCLE THE ratsimpexpons EXAMPLE FROM ratsimp ABOVE
1873 @opencatbox
1874 @category{Simplification flags and variables}
1875 @category{Rational expressions}
1876 @closecatbox
1877 @end defvr
1879 @c -----------------------------------------------------------------------------
1880 @anchor{radsubstflag}
1881 @defvr {オプション変数} radsubstflag
1882 デフォルト値: @code{false}
1884 @code{radsubstflag}がもし @code{true}なら、
1885 @code{ratsubst}が
1886 @code{x}に関して@code{sqrt (x)}に @code{u}を代入するような代入をできるようにします。
1888 @opencatbox
1889 @category{Simplification flags and variables}
1890 @closecatbox
1891 @end defvr
1893 @c -----------------------------------------------------------------------------
1894 @anchor{ratsubst}
1895 @c -----------------------------------------------------------------------------
1896 @deffn {関数} ratsubst (@var{a}, @var{b}, @var{c})
1898 @var{c}の中の@var{b}に@var{a}を代入し、結果の式を返します。
1899 @c "ETC" SUGGESTS THE READER KNOWS WHAT ELSE GOES THERE -- NOT LIKELY THE CASE
1900 @var{b}はsumでもproductでもpowerなどでも問題ありません。
1902 @c WHAT, EXACTLY, DOES ratsubst KNOW ??
1903 @code{subst}は純粋に構文法的代入ですが、@code{ratsubst}は式の意味の何かを知っています。
1904 ゆえに、@code{subst (a, x + y, x + y + z)}は@code{x + y + z}を返す一方、
1905 @code{ratsubst}は@code{z + a}を返します。
1907 @code{ratsubstflag}が@code{true}の時、@code{ratsubst}は、式が陽には含んでいない根への代入を実行します。
1909 @code{ratsubst}はオプション変数@code{keepfloat}の値@code{true}を無視します。
1911 例:
1913 @c EXAMPLES BELOW ADAPTED FROM examples (ratsubst)
1914 @c WITH SOME ADDITIONAL STUFF
1916 @c ===beg===
1917 @c ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
1918 @c cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
1919 @c ratsubst (1 - sin(x)^2, cos(x)^2, %);
1920 @c ratsubst (1 - cos(x)^2, sin(x)^2, sin(x)^4);
1921 @c radsubstflag: false$
1922 @c ratsubst (u, sqrt(x), x);
1923 @c radsubstflag: true$
1924 @c ratsubst (u, sqrt(x), x);
1925 @c ===end===
1926 @example
1927 (%i1) ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
1928                               3      4
1929 (%o1)                      a x  y + a
1930 (%i2) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
1931                4         3         2
1932 (%o2)       cos (x) + cos (x) + cos (x) + cos(x) + 1
1933 (%i3) ratsubst (1 - sin(x)^2, cos(x)^2, %);
1934             4           2                     2
1935 (%o3)    sin (x) - 3 sin (x) + cos(x) (2 - sin (x)) + 3
1936 (%i4) ratsubst (1 - cos(x)^2, sin(x)^2, sin(x)^4);
1937 @group
1938                         4           2
1939 (%o4)                cos (x) - 2 cos (x) + 1
1940 @end group
1941 (%i5) radsubstflag: false$
1942 (%i6) ratsubst (u, sqrt(x), x);
1943 (%o6)                           x
1944 (%i7) radsubstflag: true$
1945 (%i8) ratsubst (u, sqrt(x), x);
1946                                 2
1947 (%o8)                          u
1948 @end example
1950 @opencatbox
1951 @category{Rational expressions}
1952 @closecatbox
1953 @end deffn
1955 @c -----------------------------------------------------------------------------
1956 @deffn  {関数} ratvars (@var{x_1}, @dots{}, @var{x_n})
1957 @deffnx {関数} ratvars ()
1958 @deffnx {システム変数} ratvars
1960 有理式に関して主変数@var{x_1}, ..., @var{x_n}を宣言します。
1961 もし有理式の中に存在するなら、@var{x_n}は主変数と見なされます。
1962 そうでなければ、もし存在すれば、@var{x_[n-1]}が主変数と見なされます。
1963 と、先行する変数を通して@var{x_1}まで続きます。
1964 @var{x_1}は、続く変数が存在しなかった時だけ主変数と見なされます。
1966 もし有理式の中の変数が@code{ratvars}リストの中に存在しなかったら、
1967 その変数には、@var{x_1}よりも低い優先順位が与えられます。
1969 @code{ratvars}の引数は、変数もしくは@code{sin(x)}のような非有理関数であり得ます。
1971 変数@code{ratvars}は、直近にコールされたときの関数@code{ratvars}の引数のリストです。
1972 関数@code{ratvars}のコールそれぞれは、リストを再設定します。
1973 @code{ratvars ()}はリストをクリアします。
1975 @c NEED EXAMPLES HERE
1976 @opencatbox
1977 @category{Rational expressions}
1978 @closecatbox
1979 @end deffn
1981 @c -----------------------------------------------------------------------------
1982 @defvr {オプション変数} ratvarswitch
1983 デフォルト値: @code{true}
1985 MaximaはLisp変数@code{VARLIST}の中に有理式の主変数の内部リストを保持します。
1986 もし@code{ratvarswitch}が@code{true}なら、
1987 すべての評価は新しいリスト@code{VARLIST}で開始します。
1988 これがデフォルトの振る舞いです。
1989 そうでなければ、以前の評価からの主変数は
1990 内部リスト@code{VARLIST}から取り除かれません。
1992 主変数は関数@code{ratvars}で宣言されるのですが、
1993 それはオプション変数@code{ratvarswitch}によって影響されません。
1995 例:
1997 もし @code{ratvarswitch}が@code{true}, すべての評価は
1998 新しいリスト@code{VARLIST}で始まります。
2000 @c ===beg===
2001 @c ratvarswitch:true$
2002 @c rat(2*x+y^2);
2003 @c :lisp varlist
2004 @c rat(2*a+b^2);
2005 @c :lisp varlist
2006 @c ===end===
2007 @example
2008 (%i1) ratvarswitch:true$
2010 (%i2) rat(2*x+y^2);
2011                              2
2012 (%o2)/R/                    y  + 2 x
2013 (%i3) :lisp varlist
2014 ($X $Y)
2016 (%i3) rat(2*a+b^2);
2017                              2
2018 (%o3)/R/                    b  + 2 a
2020 (%i4) :lisp varlist
2021 ($A $B)
2022 @end example
2024 もし@code{ratvarswitch}が@code{false}なら、
2025 直前の評価からの主変数はまだ存在しています。
2027 @c ===beg===
2028 @c ratvarswitch:false$
2029 @c rat(2*x+y^2);
2030 @c :lisp varlist
2031 @c rat(2*a+b^2);
2032 @c :lisp varlist
2033 @c ===end===
2034 @example
2035 (%i4) ratvarswitch:false$
2037 (%i5) rat(2*x+y^2);
2038                              2
2039 (%o5)/R/                    y  + 2 x
2040 (%i6) :lisp varlist
2041 ($X $Y)
2043 (%i6) rat(2*a+b^2);
2044                              2
2045 (%o6)/R/                    b  + 2 a
2047 (%i7) :lisp varlist
2048 ($A $B $X $Y)
2049 @end example
2051 @opencatbox
2052 @category{Rational expressions}
2053 @category{Global flags}
2054 @closecatbox
2055 @end defvr
2057 @c -----------------------------------------------------------------------------
2058 @deffn {関数} ratweight (@var{x_1}, @var{w_1}, @dots{}, @var{x_n}, @var{w_n})
2059 @deffnx {関数} ratweight ()
2061 重み@var{w_i}を変数@var{x_i}に割り当てます。
2062 これは、もし重みが変数@code{ratwtlvl}の値を越えるなら、項を0に置き換えるようにします。
2063 (デフォルトでは切り詰めはもたらしません。)
2064 項の重みは、項の中の変数の重みの積の和に変数の指数を掛けたものです。
2065 例えば、@code{3 x_1^2 x_2}の重みは@code{2 w_1 + w_2}です。
2066 @code{ratwtlvl}に従った切り詰めは、
2067 標準有理式(CRE)を掛けたり、指数化する時だけ実行されます。
2069 @code{ratweight ()}は、重み割り当ての累積リストを返します。
2071 注意:@code{ratfac}と@code{ratweight}体系は互換性はなく、
2072 同時には使えないかもしれません。
2074 例:
2076 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
2077 @c ratweight (a, 1, b, 1);
2078 @c expr1: rat(a + b + 1)$
2079 @c expr1^2;
2080 @c ratwtlvl: 1$
2081 @c expr1^2;
2082 @example
2083 (%i1) ratweight (a, 1, b, 1);
2084 (%o1)                     [a, 1, b, 1]
2085 (%i2) expr1: rat(a + b + 1)$
2086 (%i3) expr1^2;
2087                   2                  2
2088 (%o3)/R/         b  + (2 a + 2) b + a  + 2 a + 1
2089 (%i4) ratwtlvl: 1$
2090 (%i5) expr1^2;
2091 (%o5)/R/                  2 b + 2 a + 1
2092 @end example
2094 @opencatbox
2095 @category{Rational expressions}
2096 @closecatbox
2097 @end deffn
2099 @c -----------------------------------------------------------------------------
2100 @defvr {システム変数} ratweights
2101 デフォルト値: @code{[]}
2103 @code{ratweights}は、@code{ratweight}で割り当てられた重みのリストです。
2104 リストは累積されます:
2105 @code{ratweight}のコールそれぞれは、リストに項目を追加します。
2107 @c DO WE REALLY NEED TO MENTION THIS ??
2108 @code{kill (ratweights)}と@code{save (ratweights)}はともに期待通り動作します。
2110 @opencatbox
2111 @category{Rational expressions}
2112 @closecatbox
2113 @end defvr
2115 @c -----------------------------------------------------------------------------
2116 @defvr {オプション変数} ratwtlvl
2117 デフォルト値: @code{false}
2119 @code{ratwtlvl}は、
2120 標準有理式(CRE)の切り詰めを制御するために、
2121 @code{ratweight}関数と組み合わせて使われます。
2122 デフォルト値の@code{false}では、切り詰めは起こりません。
2124 @opencatbox
2125 @category{Rational expressions}
2126 @closecatbox
2127 @end defvr
2129 @c -----------------------------------------------------------------------------
2130 @deffn  {関数} remainder (@var{p_1}, @var{p_2})
2131 @deffnx {関数} remainder (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
2133 多項式@var{p_1}を多項式@var{p_2}で割った余りを返します。
2134 引数@var{x_1}, ..., @var{x_n}は、@code{ratvars}と同様に解釈されます。
2136 @code{remainder}は、@code{divide}が返す2要素リストの2番目の要素を返します。
2138 @c NEED SOME EXAMPLES HERE
2139 @opencatbox
2140 @category{Polynomials}
2141 @closecatbox
2142 @end deffn
2144 @c CAN PROBABLY BE CLARIFIED
2146 @c -----------------------------------------------------------------------------
2147 @deffn {関数} resultant (@var{p_1}, @var{p_2}, @var{x})
2148 @deffnx {変数} resultant
2150 変数@var{x}を消去して、2つの多項式@var{p_1}と@var{p_2}の終結式を計算します。
2151 終結式は@var{p_1}と@var{p_2}の中の@var{x}の係数の判別式です。
2152 それは、@var{p_1}と@var{p_2}が共通に定数でない因子を持つ時だけゼロに等しいです。
2154 もし@var{p_1}もしくは@var{p_2}が因数分解できるなら、
2155 @code{resultant}をコールする前に@code{factor}をコールするのが望ましいかもしれません。
2157 変数@code{resultant}は、
2158 どのアルゴリズムが計算に使われるか制御します。
2159 @c WHAT DOES THE FOLLOWING MEAN EXACTLY ??
2160 部分終結式prsには@code{subres}
2161 モジュラー終結式アルゴリズムには@code{mod}
2162 通分prsには@code{red}。
2163 大抵の問題では、@code{subres}が最適です。
2164 いくつかの大きな次数の1変数もしくは2変数問題では、@code{mod}がよりよいかもしれません。
2166 関数@code{bezout}は、@code{resultant}と同じ引数を取り、
2167 行列を返します。
2168 戻り値の判別式は望みの終結式です。
2170 @c NEED AN EXAMPLE HERE
2171 @opencatbox
2172 @category{Polynomials}
2173 @closecatbox
2174 @end deffn
2176 @defvr {オプション変数} savefactors
2177 デフォルト値: @code{false}
2179 @c "certain functions" -- WHICH ONES ??
2180 @code{savefactors}が@code{true}の時、
2181 同じ因子のいくつかを含む式の因数分解を後でする時にスピードアップするために、
2182 因子の積である式の因子がある関数によって保存されるようにします。
2184 @opencatbox
2185 @category{Polynomials}
2186 @closecatbox
2187 @end defvr
2189 @c -----------------------------------------------------------------------------
2190 @deffn {関数} showratvars (@var{expr})
2191 式@code{expr}の中の標準有理式 (CRE)変数のリストを返します。
2193 @code{ratvars}も参照してください。
2195 @opencatbox
2196 @category{Rational expressions}
2197 @category{Display functions}
2198 @closecatbox
2200 @end deffn
2202 @c I CAN'T TELL WHAT THIS IS SUPPOSED TO BE ABOUT
2204 @c -----------------------------------------------------------------------------
2205 @anchor{sqfr}
2206 @deffn {関数} sqfr (@var{expr})
2208 多項式因子が「平方にならない」ことを除いて、
2209 @code{factor}に似ています。
2210 すなわち、それらは、次数1だけの因子を持ちます。
2211 このアルゴリズムは、@code{factor}の最初の段階でも使われるのですが、
2212 多項式は、n階微分と共通に nよりも大きな次数のすべての因子を持つという事実を使います。
2213 このように、それぞれの変数に関する微分の多項式との最大公約数を取ることによって、
2214 1よりも大きな次数の因子を見つけることができます。
2216 例:
2217 @c FOLLOWING GENERATED FROM THIS EXPRESSION
2218 @c sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2220 @example
2221 (%i1) sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2222                                 2   2
2223 (%o1)                  (2 x + 1)  (x  - 1)
2224 @end example
2226 @opencatbox
2227 @category{Polynomials}
2228 @closecatbox
2229 @end deffn
2231 @c THIS ITEM STILL NEEDS WORK
2233 @c -----------------------------------------------------------------------------
2234 @deffn  {関数} tellrat (@var{p_1}, ..., @var{p_n})
2235 @deffnx {関数} tellrat ()
2237 多項式@var{p_1}, ..., @var{p_n}の解である要素を
2238 Maximaに知られている代数的整数の環に加えます。
2239 それぞれの引数@var{p_i}は、整数係数の多項式です。
2241 @code{tellrat (@var{x})}は、実際には、
2242 有理関数の中で@var{x}に0を代入することを意味します。
2244 @code{tellrat ()}は、現在の代入のリストを返します。
2246 代数的整数の整理が効果を持つようにするために、
2247 @code{algebraic}は、@code{true}に設定されなければいけません。
2249 Maximaは、起動の際には、虚数単位と整数の根すべてについて知っています。
2251 核を取り、@code{tellrat}プロパティを削除するコマンド@code{untellrat}があります。
2253 例えば、@code{tellrat (x^2 - y^2)}のように、
2254 多変数多項式を@code{tellrat}する時、
2255 @code{@var{y}^2}を@code{@var{x}^2}に代入するのか逆なのかといった
2256 あいまいさがあります。
2257 Maximaは、特定の順序付けを選びますが、
2258 もしユーザーがどちらか指定したいなら、
2259 例えば,@code{tellrat (y^2 = x^2)}は
2260 @code{@var{y}^2}を@code{@var{x}^2}で置き換えることを示す構文法を供給します。
2262 @c CAN'T TELL WHAT THIS IS ABOUT -- tellrat(w^3-1)$ algebraic:true$ rat(1/(w^2-w));
2263 @c DOES NOT YIELD AN ERROR, SO WHAT IS THE POINT ABOUT ratalgdenom ??
2264 @c When you @code{tellrat} reducible polynomials, you want to be careful not to
2265 @c attempt to rationalize a denominator with a zero divisor.  E.g.
2266 @c tellrat(w^3-1)$ algebraic:true$ rat(1/(w^2-w)); will give "quotient by
2267 @c zero".  This error can be avoided by setting @code{ratalgdenom} to @code{false}.
2269 例:
2271 @c EXAMPLE ADAPTED FROM example (tellrat)
2272 @c 10*(%i + 1)/(%i + 3^(1/3));
2273 @c ev (ratdisrep (rat(%)), algebraic);
2274 @c tellrat (1 + a + a^2);
2275 @c 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
2276 @c ev (ratdisrep (rat(%)), algebraic);
2277 @c tellrat (y^2 = x^2);
2278 @example
2279 (%i1) 10*(%i + 1)/(%i + 3^(1/3));
2280                            10 (%i + 1)
2281 (%o1)                      -----------
2282                                   1/3
2283                             %i + 3
2284 (%i2) ev (ratdisrep (rat(%)), algebraic);
2285              2/3      1/3              2/3      1/3
2286 (%o2)    (4 3    - 2 3    - 4) %i + 2 3    + 4 3    - 2
2287 (%i3) tellrat (1 + a + a^2);
2288                             2
2289 (%o3)                     [a  + a + 1]
2290 (%i4) 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
2291                       1                 a
2292 (%o4)           ------------- + -----------------
2293                 sqrt(2) a - 1   sqrt(3) + sqrt(2)
2294 (%i5) ev (ratdisrep (rat(%)), algebraic);
2295          (7 sqrt(3) - 10 sqrt(2) + 2) a - 2 sqrt(2) - 1
2296 (%o5)    ----------------------------------------------
2297                                7
2298 (%i6) tellrat (y^2 = x^2);
2299                         2    2   2
2300 (%o6)                 [y  - x , a  + a + 1]
2301 @end example
2303 @opencatbox
2304 @category{Polynomials}
2305 @category{Rational expressions}
2306 @closecatbox
2307 @end deffn
2309 @c -----------------------------------------------------------------------------
2310 @deffn {関数} totaldisrep (@var{expr})
2312 @var{expr}のすべての部分式を標準有理式(CRE)から一般形に変換して、
2313 結果を返します。
2314 もし@var{expr}がそれ自身CRE形なら、@code{totaldisrep}は、@code{ratdisrep}と同一です。
2316 @code{totaldisrep}は、
2317 CRE形の部分式を持つ等式やリストや行列などの式をratdisrepするために役に立つかもしれません。
2319 @c NEED EXAMPLES HERE
2320 @opencatbox
2321 @category{Rational expressions}
2322 @closecatbox
2323 @end deffn
2325 @c -----------------------------------------------------------------------------
2326 @deffn {関数} untellrat (@var{x_1}, @dots{}, @var{x_n})
2327 @var{x_1}, @dots{}, @var{x_n}から
2328 @code{tellrat}プロパティを
2329 削除します。
2331 @c NEED EXAMPLES HERE
2332 @opencatbox
2333 @category{Polynomials}
2334 @category{Rational expressions}
2335 @closecatbox
2336 @end deffn