1 @c FOR THE FUNCTIONS WHICH RETURN A CRE, BE SURE TO MENTION THAT
3 * Introduction to Polynomials::
4 * Functions and Variables for Polynomials::
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などのような演算によって内部で使われます。
16 (RATFACが@code{true}に設定された時の部分的に因数分解された多項式や有理関数はもちろん)
17 展開された多項式や有理関数に適したある種の表現を構成します。
18 このCRE形では、変数の(最もメインから最小にまでの)順序付けは、
20 多項式は、一連の式の対が続く主変数から成るリストによって再帰的に表現されます。
21 それぞれの対の最初のメンバーは、その項の主変数の指数であり、
22 2番目のメンバーは、その項の係数で、係数は、数、もしくは、再度の形式で表現された別の変数の多項式です。
23 このように、3*X^2-1のCRE形の主要な部分は、(X 2 3 0 -1)であり、
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形の部分式を含むなら、
38 式をCRE形に変換することに関してはRAT関数を参照してください。
39 拡張CRE形は、テイラー級数の表現に使われます。
40 有理式の概念が拡張され、変数の指数は、単に正の整数ではなく、正の有理数も負の有理数も取ることができ、係数はそれ自身単なる多項式ではなく上で記載された有理式を取ることができます。
41 これらは内部的にはCRE形に似ていて、その一般化である再帰多項式形によって表現されます。
42 それは、切り詰めの次数のような追加の情報を持ちます。
43 CRE形として、そんな式の行ラベルにはシンボル/T/が続きます。
46 @category{Polynomials}
47 @category{Rational expressions}
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 -----------------------------------------------------------------------------
59 @defvr {オプション変数} algebraic
62 代数的整数の整理の効果が現れるようにするためには、
63 @code{algebraic}は@code{true}に設定されなければいけません。
66 @category{Simplification flags and variables}
70 @c -----------------------------------------------------------------------------
71 @defvr {オプション変数} berlefact
74 @code{berlefact}が@code{false}の時、
75 Kroneckerの因数分解アルゴリズムが使われます。
76 そうでなければ、Berlekampのアルゴリズム―これがデフォルトですーが使われます。
79 @category{Polynomials}
83 @c WHAT IS THIS ABOUT EXACTLY ??
85 @c -----------------------------------------------------------------------------
86 @deffn {関数} bezout (@var{p1}, @var{p2}, @var{x})
88 @code{resultant}コマンドの代替。
90 この行列の@code{determinant}は、望みの結果です。
93 @category{Polynomials}
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}が見つけるような)
105 2番目のメンバーが@var{expr}の残りの部分であるリストを返します。
107 @code{@var{expr} = A*@var{x} + B}の@code{[A, B]}。
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);
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);
125 @category{Polynomials}
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}や他のいかなる関数も
151 @code{coeff}は@var{expr}の@code{@var{x}^@var{n}}の係数を返します。
154 @c coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
157 (%i1) coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
162 @code{coeff(@var{expr}, @var{x}^@var{n})}は
163 @code{coeff(@var{expr}, @var{x}, @var{n})}と同値です。
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);
170 (%i1) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
173 (%i2) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
178 @code{coeff(@var{expr}, @var{x}, 0)}は
179 @var{expr}の@var{x}を含まない剰余項です。
182 @c coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
185 (%i1) coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
190 @var{x}は単純変数か添字付き変数か、演算子1つとその引数のすべてから構成されるexprの部分式です。
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);
199 (%i1) coeff (h^4 - 2*%pi*h^2 + 1, h, 2);
201 (%i2) coeff (v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
203 (%i3) coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
206 (%i4) coeff ((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
210 @code{coeff}自身は@code{expand}や@code{factor}や他のいかなる関数も
214 @c coeff (c*(a + b)^3, a);
215 @c expand (c*(a + b)^3);
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);
222 (%i1) coeff (c*(a + b)^3, a);
224 (%i2) expand (c*(a + b)^3);
226 (%o2) b c + 3 a b c + 3 a b c + a c
230 (%i4) coeff (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
232 (%i5) factor (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
235 (%i6) coeff (%, (a + b)^3);
239 @code{coeff}はリスト、行列、等式上を散逸します。
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);
247 (%i1) coeff ([4*a, -3*a, 2*a], a);
249 (%i2) coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x);
253 (%i3) coeff (a*u - b*v = 7*u + 3*v, u);
258 @category{Polynomials}
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 ??
271 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
272 @c content (2*x*y + 4*x^2*y^2, y);
275 (%i1) content (2*x*y + 4*x^2*y^2, y);
278 (%o1) [2 x, 2 x y + y]
283 @category{Polynomials}
287 @c -----------------------------------------------------------------------------
288 @deffn {関数} denom (@var{expr})
290 有理式@var{expr}の分母を返します。
293 @category{Expressions}
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番目の要素が余りのリストです。
307 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
308 @c divide (x + y, x - y, x);
309 @c divide (x + y, x - y);
312 (%i1) divide (x + y, x - y, x);
314 (%i2) divide (x + y, x - y);
319 @code{y}は2番目の例の主変数であることに注意してください。
322 @category{Polynomials}
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}がコールされます。
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]);
346 (%i1) expr1: 2*x^2 + y*x + z;
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;
354 (%i4) eliminate ([expr3, expr2, expr1], [y, z]);
356 (%o4) [7425 x - 1170 x + 1299 x + 12076 x + 22887 x
359 - 5154 x - 1291 x + 7688 x + 15376]
363 @category{Polynomials}
364 @category{Algebraic equations}
368 @c -----------------------------------------------------------------------------
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}も参照してください。
379 三つの多項式は最大公約数 @code{2*x-3}を持ちます。
380 GCDは最初、関数 @code{gcd}で計算され、その後、関数 @code{ezgcd}で計算されます。
383 (%i1) p1 : 6*x^3-17*x^2+14*x-3;
385 (%o1) 6 x - 17 x + 14 x - 3
386 (%i2) p2 : 4*x^4-14*x^3+12*x^2+2*x-3;
388 (%o2) 4 x - 14 x + 12 x + 2 x - 3
389 (%i3) p3 : -8*x^3+14*x^2-x-3;
391 (%o3) - 8 x + 14 x - x - 3
393 (%i4) gcd(p1, gcd(p2, p3));
396 (%i5) ezgcd(p1, p2, p3);
398 (%o5) [2 x - 3, 3 x - 4 x + 1, 2 x - 4 x + 1, - 4 x + x + 1]
402 @category{Polynomials}
406 @c -----------------------------------------------------------------------------
407 @defvr {オプション変数} facexpand
410 @code{facexpand}は、@code{factor}が返すこれ以上小さくできない因子が
411 展開された形式(デフォルト)か再帰的(正規のCRE)形式かを制御します。
414 @category{Polynomials}
419 @c -----------------------------------------------------------------------------
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}は、因数分解しない変数のリストに設定されます。
434 因数分解は、@code{dontfactor}リスト上のそれらより(CRE形式で仮定された変数順序を使って)重要でない変数に関しても
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が大きな整数を素因数分解するのにありえない長い時間を使うことを妨げるようにリセットされます。
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;
463 @c ratsimp ((x^5 - 1)/(x - 1));
465 @c factor (%th(2), %);
466 @c factor (1 + x^12);
467 @c factor (1 + x^99);
469 (%i1) factor (2^63 - 1);
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;
476 (%o3) x y + 2 x y + y - x - 2 x - 1
477 (%i4) block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
480 (x + 2 x + 1) (y - 1)
481 (%o4) ----------------------
484 (%i5) factor (1 + %e^(3*x));
486 (%o5) (%e + 1) (%e - %e + 1)
487 (%i6) factor (1 + x^4, a^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);
492 (%o7) - (y + x) (z - x) (z + x)
493 (%i8) (2 + x)/(3 + x)/(b + x)/(c + x)^2;
495 (%o8) ------------------------
497 (x + 3) (x + b) (x + c)
500 (%o9) (x + 2)/(x + (2 c + b + 3) x
503 + (c + (2 b + 6) c + 3 b) x + ((b + 3) c + 6 b c) x + 3 b c )
504 (%i10) partfrac (%, x);
506 (%o10) - (c - 4 c - b + 6)/((c + (- 2 b - 6) c
509 + (b + 12 b + 9) c + (- 6 b - 18 b) c + 9 b ) (x + c))
512 - ---------------------------------
514 (c + (- b - 3) c + 3 b) (x + c)
517 + -------------------------------------------------
519 ((b - 3) c + (6 b - 2 b ) c + b - 3 b ) (x + b)
522 - ----------------------------------------------
524 ((b - 3) c + (18 - 6 b) c + 9 b - 27) (x + 3)
525 (%i11) map ('factor, %);
528 c - 4 c - b + 6 c - 2
529 (%o11) - ------------------------- - ------------------------
531 (c - 3) (c - b) (x + c) (c - 3) (c - b) (x + c)
534 + ------------------------ - ------------------------
536 (b - 3) (c - b) (x + b) (b - 3) (c - 3) (x + 3)
538 (%i12) ratsimp ((x^5 - 1)/(x - 1));
540 (%o12) x + x + x + x + 1
541 (%i13) subst (a, x, %);
543 (%o13) a + a + a + a + 1
544 (%i14) factor (%th(2), %);
546 (%o14) (x - a) (x - a ) (x - a ) (x + a + a + a + 1)
547 (%i15) factor (1 + x^12);
549 (%o15) (x + 1) (x - x + 1)
550 (%i16) factor (1 + x^99);
552 (%o16) (x + 1) (x - x + 1) (x - x + 1)
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
564 - x - x + x + x - x - x + x + 1)
568 @category{Polynomials}
572 @c -----------------------------------------------------------------------------
573 @defvr {オプション変数} factorflag
576 @c WHAT IS THIS ABOUT EXACTLY ??
577 @code{factorflag}が@code{false}の時、
578 有理式の整数因子の素因素分解を抑制します。
581 @category{Polynomials}
586 @c -----------------------------------------------------------------------------
587 @deffn {関数} factorout (@var{expr}, @var{x_1}, @var{x_2}, @dots{})
590 形式@code{f (@var{x_1}, @var{x_2}, @dots{})*g}の項の和に再整理します。
591 ここで、@code{g}は、いかなる@var{x_i}も含まない式の積で、@code{f}は因数分解されています。
593 オプション変数@code{keepfloat}は@code{factorout}に無視されることに注意してください。
598 @c expand (a*(x+1)*(x-1)*(u+1)^2);
602 (%i1) expand (a*(x+1)*(x-1)*(u+1)^2);
604 (%o1) a u x + 2 a u x + a x - a u - 2 a u - a
605 (%i2) factorout(%,x);
607 (%o2) a u (x - 1) (x + 1) + 2 a u (x - 1) (x + 1)
612 @category{Expressions}
616 @c -----------------------------------------------------------------------------
617 @deffn {関数} factorsum (@var{expr})
619 @var{expr}の因子(それらは和です)の中の項を
620 それらの和が因数分解可能な項のグループにグループ化しようとします。
622 @code{expand ((x + y)^2 + (z + w)^2)}の結果を回復できますが、
624 @code{expand ((x + 1)^2 + (x + y)^2)}は回復できません。
628 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
629 @c expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
632 (%i1) expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
634 (%o1) a x z + a z + 2 a w x z + 2 a w z + a w x + v x
637 + 2 u v x + u x + a w + v + 2 u v + u
640 (%o2) (x + 1) (a (z + w) + (v + u) )
644 @category{Expressions}
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}の次数だとすると、
658 @code{n_1 n_2}のオーダーですが、
659 @code{fasttimes}は、@code{max (n_1, n_2)^1.585}のオーダーです。
662 @category{Polynomials}
666 @c -----------------------------------------------------------------------------
667 @deffn {関数} fullratsimp (@var{expr})
669 @code{fullratsimp}は、ratsimpと式の非有理的整理を、式変形されなくなるまで繰り返し適応し、結果を返します。
671 非有理式が含まれる時、@code{ratsimp}を1回コールと、その後の非有理的(「一般」)整理だけでは、
672 整理された結果を返すのに十分でないかもしれません。
674 @code{fullratsimp}はこのプロセスを楽にしてくれます。
676 @code{fullratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})}は@code{ratsimp}や@code{rat}と同様
680 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
681 @c expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
683 @c fullratsimp (expr);
687 (%i1) expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
690 (%o1) -----------------------
693 (%i2) ratsimp (expr);
696 (%o2) ---------------
699 (%i3) fullratsimp (expr);
705 (%o4)/R/ -----------------------
711 @category{Simplification functions}
712 @category{Rational expressions}
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つ以上の変数を共通に持つ時、
727 @code{fullratsubst}は、@code{lratsubst}のフォーマットでも引数を受け付けます。
728 すなわち、最初の引数は、1つの代入等式もしくは、そんな等式のリストで、
729 一方、2番目の引数は処理される式というものです。
731 @code{load ("lrats")}は、@code{fullratsubst}と@code{lratsubst}をロードします。
735 @c EXPRESSIONS ADAPTED FROM demo ("lrats")
736 @c CAN PROBABLY CUT OUT THE lratsubst STUFF (lratsubst HAS ITS OWN DESCRIPTION)
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));
748 (%i1) load ("lrats")$
752 @code{subst}は多重代入を実行できます。
753 @code{lratsubst}は@code{subst}に類似しています。
756 (%i2) subst ([a = b, c = d], a + c);
758 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
759 (%o3) (d + a c) e + a d + b c
767 (%i4) lratsubst (a^2 = b, a^3);
772 @code{fullratsubst}は、
773 結果が変わらなくなるまで再帰することを除いて、
774 @code{ratsubst}と同値です。
777 (%i5) ratsubst (b*a, a^2, a^3);
780 (%i6) fullratsubst (b*a, a^2, a^3);
786 @code{fullratsubst}も、
787 最初の引数として、等式のリストもしくは1つの式を受け入れます。
790 (%i7) fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
792 (%i8) fullratsubst (a^2 = b*a, a^3);
798 @c REWORD THIS SENTENCE
799 @code{fullratsubst}は、不確定な再帰を起こすかもしれません。
802 (%i9) errcatch (fullratsubst (b*a^2, a^2, a^3));
804 *** - Lisp stack overflow. RESET
808 @category{Rational expressions}
812 @c GCD IS A VARIABLE AND A FUNCTION
813 @c THIS ITEM NEEDS A LOT OF WORK
814 @c -----------------------------------------------------------------------------
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}, など)多くの関数は、
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}―は、
833 式が標準有理式(CRE)形に変換される時も、最大公約数を計算させません。
834 もしgcdが要求されないなら、これは、時々計算のスピードを上げます。
836 @mref{ezgcd}, @mref{gcdex}, @mref{gcdivide}, @mref{poly_gcd}も参照してください。
841 (%i1) p1:6*x^3+19*x^2+19*x+6;
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;
846 (%o2) 6 x + 13 x + 12 x + 13 x + 6 x
850 (%i4) p1/gcd(p1, p2), ratsimp;
852 (%i5) p2/gcd(p1, p2), ratsimp;
858 一番目の要素が多項式 @var{p_1}と @var{p_2}の最大公約数で、
859 残りの要素が最大公約数で多項式を割ったもので構成されるリストを返します。
864 (%o6) [6 x + 13 x + 6, x + 1, x + x]
868 @category{Polynomials}
869 @category{Rational expressions}
873 @c IN NEED OF SERIOUS CLARIFICATION HERE
875 @c -----------------------------------------------------------------------------
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}も参照してください。
901 @c gcdex (x^2 + 1, x^3 + 4);
902 @c % . [x^2 + 1, x^3 + 4, -1];
905 (%i1) gcdex (x^2 + 1, x^3 + 4);
909 (%o1)/R/ [- ------------, -----, 1]
912 (%i2) % . [x^2 + 1, x^3 + 4, -1];
916 @c SORRY FOR BEING DENSE BUT WHAT IS THIS ABOUT EXACTLY
918 @code{k(y)[x]}に関して働くので@code{1}です。
919 @code{k[y, x]}で期待する@code{y+1}ではないことに注意してください。
922 @c gcdex (x*(y + 1), y^2 - 1, x);
925 (%i1) gcdex (x*(y + 1), y^2 - 1, x);
928 (%o1)/R/ [0, ------, 1]
935 @category{Polynomials}
936 @category{Rational expressions}
941 @c CHOOSE ONE CHARACTERIZATION OF "GAUSSIAN INTEGERS" AND USE IT WHERE GAUSSIAN INTEGERS ARE REFERENCED
943 @c -----------------------------------------------------------------------------
944 @deffn {関数} gcfactor (@var{n})
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
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)}ようなものです。
969 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
970 @c gfactor (x^4 - 1);
972 (%i1) gfactor (x^4 - 1);
973 (%o1) (x - 1) (x + 1) (x - %i) (x + %i)
977 @category{Polynomials}
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}を適用します。
991 @category{Expressions}
995 @c -----------------------------------------------------------------------------
996 @deffn {関数} hipow (@var{expr}, @var{x})
998 @var{expr}の中で、@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 は、違った結果をもたらすかもしれません。
1011 (%i1) hipow (y^3 * x^2 + x * y^4, x);
1013 (%i2) hipow ((x + y)^5, x);
1015 (%i3) hipow (expand ((x + y)^5), x);
1017 (%i4) hipow ((x + y)^5, x + y);
1019 (%i5) hipow (expand ((x + y)^5), x + y);
1024 @category{Expressions}
1028 @c I SUSPECT THE FOLLOWING TEXT IS OUTDATED DUE TO CHANGES IN INTEGER FACTORING CODE
1030 @c -----------------------------------------------------------------------------
1031 @defvr {オプション変数} intfaclim
1035 もし試し割りとPollardのロー法の後、因子が見つからなければ、
1036 Maximaは、整数の素因素分解をあきらめ、素因数分解は完了しません。
1038 @code{intfaclim}が@code{false}の時、
1039 (これは、ユーザーが明示的に@code{factor}をコールした場合です)
1041 @code{divisors}, @code{divsum} や@code{totient}の中で因子が計算される時は、
1042 @code{intfaclim}は@code{false}に設定されます
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
1057 @c -----------------------------------------------------------------------------
1058 @defvr {オプション変数} keepfloat
1059 デフォルト値: @code{false}
1061 @code{keepfloat}が@code{true}の時、
1062 浮動小数点数を含む式が標準有理式(CRE)形に変換される時、
1063 浮動小数点が有理数化されないようにします。
1065 関数@code{solve}とそれを呼び出す関数(例えば@code{eigenvalues})は、
1066 現在、このフラグを無視し、とにかく浮動小数点数を変換することに注意してください。
1072 @c rat(x/2.0), keepfloat;
1077 `rat' replaced 0.5 by 1/2 = 0.5
1081 (%i2) rat(x/2.0), keepfloat;
1086 @code{solve} ignores @code{keepfloat}:
1089 @c solve(1.0-x,x), keepfloat;
1092 (%i3) solve(1.0-x,x), keepfloat;
1094 `rat' replaced 1.0 by 1/1 = 1.0
1099 @category{Numerical evaluation}
1104 @c -----------------------------------------------------------------------------
1106 @deffn {関数} lopow (@var{expr}, @var{x})
1108 @var{expr}の中に陽に現れる@var{x}の最小の指数を返します。
1112 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1117 @category{Expressions}
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}をロードします。
1138 @c EXPRESSIONS ADAPTED FROM demo ("lrats")
1139 @c THIS STUFF CAN PROBABLY STAND REVISION -- EXAMPLES DON'T SEEM VERY ENLIGHTENING
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);
1145 (%i1) load ("lrats")$
1149 @code{subst}は多重代入を実行できます。
1150 @code{lratsubst}は@code{subst}に似ています。
1153 (%i2) subst ([a = b, c = d], a + c);
1155 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
1156 (%o3) (d + a c) e + a d + b c
1161 1つの等式を最初の引数として与えることができます。
1164 (%i4) lratsubst (a^2 = b, a^3);
1169 @category{Polynomials}
1170 @category{Rational expressions}
1174 @c -----------------------------------------------------------------------------
1175 @defvr {オプション変数} modulus
1176 デフォルト値: @code{false}
1178 @code{modulus}が正の数@var{p}の時、
1179 (@code{rat}や関連の関数が返すように)有理数上の演算は、
1180 「バランスさせた」モジュラス系と呼ばれるものを使って、
1181 @var{p}を法とする合同変換が実行されます。
1183 @code{@var{n} modulo @var{p}}は、
1184 @code{@var{a} @var{p} + @var{k}}が@var{n}に等しくなるようなある整数@var{a}が存在するような整数@var{k}と定義され、@var{k}は、
1186 @code{[-(@var{p}-1)/2, ..., 0, ..., (@var{p}-1)/2]}の中から、
1187 @var{p}が偶数の時、@code{[-(@var{p}/2 - 1), ..., 0, ...., @var{p}/2]}の中から
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)形なら、
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
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
1214 @c デフォルト値: @code{false}
1216 @c When @code{newfac} is @code{true}, @code{factor} will use the new factoring
1221 @c -----------------------------------------------------------------------------
1222 @deffn {関数} num (@var{expr})
1224 もし@var{expr}が比なら、その分子を返します。
1225 もし@var{expr}が比でないなら、@var{expr}が返されます。
1227 @code{num}は引数を評価します。
1229 @c NEED SOME EXAMPLES HERE
1231 @category{Expressions}
1235 @c -----------------------------------------------------------------------------
1237 @deffn {関数} polydecomp (@var{p}, @var{x})
1239 変数@var{x}の多項式@var{p}を@var{x}の多項式の関数合成に分解します。
1243 lambda ([x], p_1) (lambda ([x], p_2) (... (lambda ([x], p_n) (x))
1247 が@var{p}に等しいようなリスト@code{[@var{p_1}, ..., @var{p_n}]}を返します。
1248 @var{n}より小さい@var{i}について@var{p_i}の次数は1より大きいです。
1255 @c polydecomp (x^210, x);
1256 @c p : expand (subst (x^3 - x - 1, x, x^2 - a));
1257 @c polydecomp (p, x);
1260 (%i1) polydecomp (x^210, x);
1262 (%o1) [x , x , x , x ]
1263 (%i2) p : expand (subst (x^3 - x - 1, x, x^2 - a));
1265 (%o2) x - 2 x - 2 x + x + 2 x - a + 1
1266 (%i3) polydecomp (p, x);
1268 (%o3) [x - a, x - x - 1]
1271 以下の関数は、@code{x}の関数として、
1272 @code{L = [e_1, ..., e_n]}を合成します;
1276 @c compose (L, x) :=
1277 @c block ([r : x], for e in L do r : subst (e, x, r), r) $
1281 block ([r : x], for e in L do r : subst (e, x, r), r) $
1284 @code{compose}を使って、上の例を再表現します:
1287 @c polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
1290 (%i3) polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
1292 (%o3) [x - a, x - x - 1]
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{ない}ことに注意してください。
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);
1305 (%i4) polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
1307 (%o4) [x + 2, x + 1]
1308 (%i5) polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
1311 (%o5) [------, ------, 2 x + 1]
1316 @category{Polynomials}
1320 @c -----------------------------------------------------------------------------
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}を参照してください。
1333 @category{Polynomials}
1337 @c ISN'T THERE AN EQUIVALENT FUNCTION SOMEWHERE ??
1338 @c NEEDS WORK (IF KEPT)
1340 @c -----------------------------------------------------------------------------
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).
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.
1362 @category{Expressions}
1363 @category{Polynomials}
1367 @c -----------------------------------------------------------------------------
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
1379 @category{Polynomials}
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{/}と整数べきの指数を除いた関数を
1395 一方で@code{ratsimp}はこれらの場合を扱います。
1396 CRE形式の中のアトム(数と変数)は一般形式でのそれと同じではないことに注意してください。
1397 例えば、@code{rat(x) - x}は@code{rat(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}も参照してください。
1416 @c ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
1418 @c rat (%, y, a, x);
1421 (%i1) ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
1426 (y + a) (2 y + x) (------------ + 1)
1429 (%o1) ------------------------------------
1433 (%i2) rat (%, y, a, x);
1440 @category{Rational expressions}
1444 @defvr {オプション変数} ratalgdenom
1447 @code{ratalgdenom}が@code{true}の時、
1448 根号に関する分母の有理化が有効になることを許します。
1449 @code{ratalgdenom}は、
1450 標準有理式(CRE)が代数モードで使われる時だけ、効果を持ちます。
1453 @category{Simplification flags and variables}
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 係数は、想像された形とは全く違って現れることがあります。
1486 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1487 @c s: a*x + b*x + 5$
1488 @c ratcoef (s, a + b);
1490 (%i1) s: a*x + b*x + 5$
1491 (%i2) ratcoef (s, a + b);
1494 @c NEED MORE EXAMPLES HERE
1497 @category{Polynomials}
1498 @category{Rational expressions}
1502 @c -----------------------------------------------------------------------------
1503 @deffn {関数} ratdenom (@var{expr})
1505 @var{expr}を標準有理式(CRE)に強制した後、@var{expr}の分母を返します。
1508 @c ACTUALLY THE CONVERSION IS CARRIED OUT BY ratf BUT THAT'S WHAT $rat CALLS
1509 @var{expr}は、もしまだCREでないなら、@code{rat}によってCREに強制的に変換されます。
1510 この変換は、すべての項を共通の分母上に置くことによって、
1513 @code{denom}は似ていますが、
1515 また、@code{denom}は共通の分母上にすべての項を置こうとはしませんし、
1516 @code{ratdenom}によって比と見なされるいくつかの式は、@code{denom}には比と見なされません。
1518 @c NEEDS AN EXAMPLE HERE
1520 @category{Rational expressions}
1524 @c -----------------------------------------------------------------------------
1525 @defvr {オプション変数} ratdenomdivide
1528 @code{ratdenomdivide}が@code{true}の時、
1529 @code{ratexpand}は、分子が和である比を、共通の分母を持つ比の和に展開します。
1530 そうでなければ、@code{ratexpand}は比の和を1つの比に縮約します。
1531 その比の分子はそれぞれの比の分子の和です。
1536 (%i1) expr: (x^2 + x + 1)/(y^2 + 7);
1542 (%i2) ratdenomdivide: true$
1543 (%i3) ratexpand (expr);
1546 (%o3) ------ + ------ + ------
1549 (%i4) ratdenomdivide: false$
1550 (%i5) ratexpand (expr);
1556 (%i6) expr2: a^2/(b^2 + 3) + b/(b^2 + 3);
1559 (%o6) ------ + ------
1562 (%i7) ratexpand (expr2);
1571 @category{Simplification flags and variables}
1572 @category{Rational expressions}
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)なら、標準有理式を返します。
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.
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);
1609 (%i1) expr: (4*x^3 + 10*x - 11)/(x^5 + 5);
1612 (%o1) ----------------
1615 (%i2) ratdiff (expr, x);
1617 8 x + 40 x - 55 x - 60 x - 50
1618 (%o2) - ---------------------------------
1621 (%i3) expr: f(x)^3 - f(x)^2 + 7;
1623 (%o3) f (x) - f (x) + 7
1624 (%i4) ratdiff (expr, f(x));
1626 (%o4) 3 f (x) - 2 f(x)
1627 (%i5) expr: (a + b)^3 + (a + b)^2;
1629 (%o5) (b + a) + (b + a)
1630 (%i6) ratdiff (expr, a + b);
1632 (%o6) 3 b + (6 a + 2) b + 3 a + 2 a
1636 @category{Rational expressions}
1640 @c -----------------------------------------------------------------------------
1641 @deffn {関数} ratdisrep (@var{expr})
1644 もし@var{expr}が一般式なら、戻り値は引数から変わりません。
1646 典型的には、@code{ratdisrep}は、
1647 標準有理式(CRE)を一般式に変換するためにコールされます。
1648 @c NOT REALLY FOND OF YOU-CAN-DO-THIS-YOU-CAN-DO-THAT STATEMENTS
1649 もし「伝染」を止めたかったり、非有理文脈で有理関数を使いたいなら、
1652 @code{totaldisrep}も参照してください。
1655 @category{Rational expressions}
1659 @c -----------------------------------------------------------------------------
1660 @deffn {関数} ratexpand (@var{expr})
1661 @deffnx {オプション変数} ratexpand
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形式に変換される時、浮動小数点が有理化されるのを抑制します。
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);
1686 @c ratexpand (expr);
1688 (%i1) ratexpand ((2*x - 3*y)^3);
1690 (%o1) - 27 y + 54 x y - 36 x y + 8 x
1691 (%i2) expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
1693 (%o2) -------- + -----
1696 (%i3) expand (expr);
1698 (%o3) ------------ - ------------ + -----
1700 x + 2 x + 1 x + 2 x + 1
1701 (%i4) ratexpand (expr);
1704 (%o4) --------------- + ---------------
1706 x + x - x - 1 x + x - x - 1
1710 @category{Rational expressions}
1714 @c -----------------------------------------------------------------------------
1716 @defvr {オプション変数} ratfac
1717 デフォルト値: @code{false}
1719 @code{ratfac}が@code{true}の時、
1720 標準有理式(CRE)は部分的に因数分解された形式で操作されます。
1723 式は、@code{factor}をコールすることなしに、
1724 可能な限り最大限因数分解されるよう維持されます。
1725 これは、いつも保存領域を節約し、いくつかの計算では時間も節約ことがあります。
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 リッチ、アインシュタイン、リーマン、そしてワイルテンソルとスカラー曲率は、
1735 @i{@code{ratfac}は、テンソルの成分が2、3の項から成ると知られている場合だけ
1738 @code{ratfac}と@code{ratweight}体系は互換性はなく、
1741 @c NEED EXAMPLES HERE
1743 @category{Rational expressions}
1747 @c -----------------------------------------------------------------------------
1748 @deffn {関数} ratnumer (@var{expr})
1750 @var{expr}を標準有理式(CRE)に強制変換した後、その分子を返します。
1753 @c ACTUALLY THE CONVERSION IS CARRIED OUT BY ratf BUT THAT'S WHAT $rat CALLS
1754 もしまだCREでないなら、@var{expr}は、@code{rat}によってCREに強制変換されます。
1756 共通の分母上にすべての項を置くことによって、
1757 @var{expr}の形式を変えるかもしれません。
1761 また、@code{num}は共通の分母上にすべての項を置こうとはしませんし、
1762 @code{ratnumer}によって比と見なされるいくつかの式は、@code{num}には比と見なされません。
1764 @c NEEDS AN EXAMPLE HERE
1766 @category{Rational expressions}
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}と関連関数によって生成されます。
1780 @category{Predicate functions}
1781 @category{Rational expressions}
1785 @c -----------------------------------------------------------------------------
1786 @defvr {オプション変数} ratprint
1789 @code{ratprint}が@code{true}の時、
1790 ユーザーに浮動小数点を有理数に変換したことを通知するメッセージが表示されます。
1793 @category{Rational expressions}
1794 @category{Numerical evaluation}
1795 @category{Console interaction}
1799 @c -----------------------------------------------------------------------------
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}に影響するフラグのいくつかに影響されることに注意してください。
1820 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
1821 @c sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
1823 @c ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
1825 @c x^(a + 1/a), ratsimpexpons: true;
1827 (%i1) sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
1830 x (log(x) + 1) - log (x)
1831 (%o1) sin(------) = %e
1837 (%o2) sin(-----) = %e x
1839 (%i3) ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
1842 (x - 1) - sqrt(x - 1) (x + 1)
1843 (%o3) --------------------------------
1844 sqrt((x - 1) (x + 1))
1848 (%o4) - -------------
1851 (%i5) x^(a + 1/a), ratsimpexpons: true;
1860 @category{Simplification functions}
1861 @category{Rational expressions}
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
1874 @category{Simplification flags and variables}
1875 @category{Rational expressions}
1879 @c -----------------------------------------------------------------------------
1880 @anchor{radsubstflag}
1881 @defvr {オプション変数} radsubstflag
1882 デフォルト値: @code{false}
1884 @code{radsubstflag}がもし @code{true}なら、
1886 @code{x}に関して@code{sqrt (x)}に @code{u}を代入するような代入をできるようにします。
1889 @category{Simplification flags and variables}
1893 @c -----------------------------------------------------------------------------
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}を無視します。
1913 @c EXAMPLES BELOW ADAPTED FROM examples (ratsubst)
1914 @c WITH SOME ADDITIONAL STUFF
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);
1927 (%i1) ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
1930 (%i2) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
1932 (%o2) cos (x) + cos (x) + cos (x) + cos(x) + 1
1933 (%i3) ratsubst (1 - sin(x)^2, cos(x)^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);
1939 (%o4) cos (x) - 2 cos (x) + 1
1941 (%i5) radsubstflag: false$
1942 (%i6) ratsubst (u, sqrt(x), x);
1944 (%i7) radsubstflag: true$
1945 (%i8) ratsubst (u, sqrt(x), x);
1951 @category{Rational expressions}
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
1977 @category{Rational expressions}
1981 @c -----------------------------------------------------------------------------
1982 @defvr {オプション変数} ratvarswitch
1985 MaximaはLisp変数@code{VARLIST}の中に有理式の主変数の内部リストを保持します。
1986 もし@code{ratvarswitch}が@code{true}なら、
1987 すべての評価は新しいリスト@code{VARLIST}で開始します。
1989 そうでなければ、以前の評価からの主変数は
1990 内部リスト@code{VARLIST}から取り除かれません。
1992 主変数は関数@code{ratvars}で宣言されるのですが、
1993 それはオプション変数@code{ratvarswitch}によって影響されません。
1997 もし @code{ratvarswitch}が@code{true}, すべての評価は
1998 新しいリスト@code{VARLIST}で始まります。
2001 @c ratvarswitch:true$
2008 (%i1) ratvarswitch:true$
2024 もし@code{ratvarswitch}が@code{false}なら、
2025 直前の評価からの主変数はまだ存在しています。
2028 @c ratvarswitch:false$
2035 (%i4) ratvarswitch:false$
2052 @category{Rational expressions}
2053 @category{Global flags}
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}体系は互換性はなく、
2076 @c FOLLOWING GENERATED FROM THESE EXPRESSIONS
2077 @c ratweight (a, 1, b, 1);
2078 @c expr1: rat(a + b + 1)$
2083 (%i1) ratweight (a, 1, b, 1);
2085 (%i2) expr1: rat(a + b + 1)$
2088 (%o3)/R/ b + (2 a + 2) b + a + 2 a + 1
2091 (%o5)/R/ 2 b + 2 a + 1
2095 @category{Rational expressions}
2099 @c -----------------------------------------------------------------------------
2100 @defvr {システム変数} ratweights
2103 @code{ratweights}は、@code{ratweight}で割り当てられた重みのリストです。
2105 @code{ratweight}のコールそれぞれは、リストに項目を追加します。
2107 @c DO WE REALLY NEED TO MENTION THIS ??
2108 @code{kill (ratweights)}と@code{save (ratweights)}はともに期待通り動作します。
2111 @category{Rational expressions}
2115 @c -----------------------------------------------------------------------------
2116 @defvr {オプション変数} ratwtlvl
2117 デフォルト値: @code{false}
2120 標準有理式(CRE)の切り詰めを制御するために、
2121 @code{ratweight}関数と組み合わせて使われます。
2122 デフォルト値の@code{false}では、切り詰めは起こりません。
2125 @category{Rational expressions}
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
2140 @category{Polynomials}
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}
2163 大抵の問題では、@code{subres}が最適です。
2164 いくつかの大きな次数の1変数もしくは2変数問題では、@code{mod}がよりよいかもしれません。
2166 関数@code{bezout}は、@code{resultant}と同じ引数を取り、
2170 @c NEED AN EXAMPLE HERE
2172 @category{Polynomials}
2176 @defvr {オプション変数} savefactors
2177 デフォルト値: @code{false}
2179 @c "certain functions" -- WHICH ONES ??
2180 @code{savefactors}が@code{true}の時、
2181 同じ因子のいくつかを含む式の因数分解を後でする時にスピードアップするために、
2182 因子の積である式の因子がある関数によって保存されるようにします。
2185 @category{Polynomials}
2189 @c -----------------------------------------------------------------------------
2190 @deffn {関数} showratvars (@var{expr})
2191 式@code{expr}の中の標準有理式 (CRE)変数のリストを返します。
2193 @code{ratvars}も参照してください。
2196 @category{Rational expressions}
2197 @category{Display functions}
2202 @c I CAN'T TELL WHAT THIS IS SUPPOSED TO BE ABOUT
2204 @c -----------------------------------------------------------------------------
2206 @deffn {関数} sqfr (@var{expr})
2208 多項式因子が「平方にならない」ことを除いて、
2209 @code{factor}に似ています。
2210 すなわち、それらは、次数1だけの因子を持ちます。
2211 このアルゴリズムは、@code{factor}の最初の段階でも使われるのですが、
2212 多項式は、n階微分と共通に nよりも大きな次数のすべての因子を持つという事実を使います。
2213 このように、それぞれの変数に関する微分の多項式との最大公約数を取ることによって、
2214 1よりも大きな次数の因子を見つけることができます。
2217 @c FOLLOWING GENERATED FROM THIS EXPRESSION
2218 @c sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2221 (%i1) sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2223 (%o1) (2 x + 1) (x - 1)
2227 @category{Polynomials}
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}に代入するのか逆なのかといった
2257 Maximaは、特定の順序付けを選びますが、
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}.
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);
2279 (%i1) 10*(%i + 1)/(%i + 3^(1/3));
2284 (%i2) ev (ratdisrep (rat(%)), algebraic);
2286 (%o2) (4 3 - 2 3 - 4) %i + 2 3 + 4 3 - 2
2287 (%i3) tellrat (1 + a + a^2);
2290 (%i4) 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
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) ----------------------------------------------
2298 (%i6) tellrat (y^2 = x^2);
2300 (%o6) [y - x , a + a + 1]
2304 @category{Polynomials}
2305 @category{Rational expressions}
2309 @c -----------------------------------------------------------------------------
2310 @deffn {関数} totaldisrep (@var{expr})
2312 @var{expr}のすべての部分式を標準有理式(CRE)から一般形に変換して、
2314 もし@var{expr}がそれ自身CRE形なら、@code{totaldisrep}は、@code{ratdisrep}と同一です。
2316 @code{totaldisrep}は、
2317 CRE形の部分式を持つ等式やリストや行列などの式をratdisrepするために役に立つかもしれません。
2319 @c NEED EXAMPLES HERE
2321 @category{Rational expressions}
2325 @c -----------------------------------------------------------------------------
2326 @deffn {関数} untellrat (@var{x_1}, @dots{}, @var{x_n})
2327 @var{x_1}, @dots{}, @var{x_n}から
2328 @code{tellrat}プロパティを
2331 @c NEED EXAMPLES HERE
2333 @category{Polynomials}
2334 @category{Rational expressions}