| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 14.1 Introduction to Polynomials | ||
| 14.2 Functions and Variables for Polynomials |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
Maximaの中では多項式は一般形か標準有理式(CRE)形として記憶されます。 後者は標準形であり、 factor, ratsimpなどのような演算が内部で使います。
標準有理式は、特に
(RATFACが trueに設定された時の部分的に因数分解された多項式や有理関数はもちろん)
展開された多項式や有理関数に適したある種の表現を構成します。
このCRE形では変数の(最も主要から最も瑣末までの)順序付けは式それぞれに仮定されます。
多項式は主変数に一連の式の対が続くリストによって再帰的に表現されます。
対それぞれの一番目のメンバーはその項の主変数の指数であり、
2番目のメンバーはその項の係数であり、
係数は数か、再度この形式で表現された別の変数の多項式です。
例えば、 3*X^2-1の CRE形の主要部分は、(X 2 3 0 -1)であり、
2*X*Y+X-3のそれは、
Yが主変数と仮定すると (Y 1 (X 1 2) 0 (X 1 1 0 -3)) であり、
Xが主変数と仮定すると (X 1 (Y 1 2 0 1) 0 -3)です。
普通、アルファベットの逆順で「主」要度が決定されます。
CRE式の「変数」はアトムである必要はありません。
実際、主演算子が + - * /でも整数べきの^でもない任意の部分式は
それが現れる式の中で(CRE形の)式の「変数」と考えられます。
例えば、式 X+SIN(X+1)+2*SQRT(X)+1の CRE変数は、Xと SQRT(X), SIN(X+1)です。
もしユーザーが RATVARS関数を使って変数の順序付けを指定しないなら、
Maximaはアルファベットの順序付けを選びます。
一般に、CREは有理式すなわち分子と分母が共通因子を持たず分母が正の多項式の比を表します。
本質的に内部形は変数順序付けリストが先行する多項式の対(分子と分母)です。
もし表示される式がCRE形であるか CRE形の部分式を含むなら
シンボル/R/が行ラベルに付きます。
式を CRE形に変換することについては RAT関数を参照してください。
拡張 CRE形はテイラー級数の表現に使われます。
有理式の概念が拡張され、
変数の指数は単に正の整数ではなく正の有理数も負の有理数も取ることができ、
係数はそれ自身単なる多項式ではなく上で記載された有理式を取ることができます。
これらは内部的には CRE形に似ていて、その一般化である再帰多項式形によって表現されます。
それは切り詰めの次数のような追加の情報を持ちます。
CRE形として、そんな式の行ラベルにはシンボル/T/が付きます。
Categories: Polynomials ·Rational expressions
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
デフォルト値: false
代数的整数が整理されるようにするためには、
algebraicをtrueに設定しなければいけません。
Categories: Simplification flags and variables
デフォルト値: true
berlefactがfalseの時、
Kroneckerの因数分解アルゴリズムを使います。
そうでないなら Berlekampのアルゴリズム―これがデフォルトですーを使います。
Categories: Polynomials
resultant
コマンドの代替です。
行列を返します。
この行列のdeterminantが望みの終結式です。
例:
(%i1) bezout(a*x+b, c*x^2+d, x);
[ b c - a d ]
(%o1) [ ]
[ a b ]
(%i2) determinant(%);
2 2
(%o2) a d + b c
(%i3) resultant(a*x+b, c*x^2+d, x);
2 2
(%o3) a d + b c
|
Categories: Polynomials
最初のメンバーが
(exprが CRE形なら ratcoefが見つけるような)
exprの中の xの係数であり、
2番目のメンバーが exprの残りの部分であるリストを返します。
例えば、
expr = A*x + Bの [A, B]。
例:
(%i1) islinear (expr, x) := block ([c],
c: bothcoef (rat (expr, x), x),
is (freeof (x, c) and c[1] # 0))$
(%i2) islinear ((r^2 - (x - r)^2)/x, x);
(%o2) true
|
Categories: Polynomials
exprの x^nの係数を返します。
ここで exprは xの多項式か単項式です。
coeff(expr, x^n)は
coeff(expr, x, n)と同値です。
coeff(expr, x, 0)は
xを含まない exprの剰余項を返します。
もし省略されたら nは1が仮定されます。
xは単純変数か添字付き変数か、演算子1つとその引数のすべてから構成される exprの部分式です。
expandか factorを適用することで、
exprと同値な式の係数を計算することが可能かもしれません。
coeff自身は expandや
factorや他のいかなる関数も適用しません。
例:
coeffは exprの x^nの係数を返します。
(%i1) coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
3
(%o1) b
|
coeff(expr, x^n)は
coeff(expr, x, n)と同値です。
(%i1) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
(%o1) - c
3
(%i2) coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
(%o2) - c
3
|
coeff(expr, x, 0)は
exprの xを含まない剰余項です。
(%i1) coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
3 3
(%o1) c u + a u
|
xは単純変数か添字付き変数か、演算子1つとその引数のすべてから構成される exprの部分式です。
(%i1) coeff (h^4 - 2*%pi*h^2 + 1, h, 2);
(%o1) - 2 %pi
(%i2) coeff (v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
(%o2) - 2 %pi
(%i3) coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
3
(%o3) sin (x)
(%i4) coeff ((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
(%o4) c - d
|
coeff自身は expandや
factorや他のいかなる関数も適用しません。
(%i1) coeff (c*(a + b)^3, a);
(%o1) 0
(%i2) expand (c*(a + b)^3);
3 2 2 3
(%o2) b c + 3 a b c + 3 a b c + a c
(%i3) coeff (%, a);
2
(%o3) 3 b c
(%i4) coeff (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
(%o4) 0
(%i5) factor (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
3
(%o5) (b + a) c
(%i6) coeff (%, (a + b)^3);
(%o6) c
|
coeffはリスト、行列、等式上を散逸します。
(%i1) coeff ([4*a, -3*a, 2*a], a); (%o1) [4, - 3, 2] (%i2) coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x); [ a b ]
(%o2) [ ]
[ - c - d ]
(%i3) coeff (a*u - b*v = 7*u + 3*v, u); (%o3) a = 7 |
Categories: Polynomials
一番目のメンバーが多項式変数 p_1の x_nに関する項の係数の最大公約数(これが容量です)であり、 二番目のメンバーが多項式 p_1を容量で割ったものであるリストを返します。
例:
(%i1) content (2*x*y + 4*x^2*y^2, y); 2 (%o1) [2 x, 2 x y + y] |
Categories: Polynomials
有理式 exprの分母を返します。
Categories: Expressions
主多項式変数 x_nに関して、
多項式 p_1を多項式 p_2で割った商と余りを計算します。
他の変数は ratvars関数での宣言に従います。
(The other variables are as in the ratvars function.)
結果は一番目の要素が商で2番目の要素が余りのリストです。
例:
(%i1) divide (x + y, x - y, x); (%o1) [1, 2 y] (%i2) divide (x + y, x - y); (%o2) [- 1, 2 x] |
二番目の例では yが主変数であることに注意してください。
Categories: Polynomials
連続する終結式を取ることによって、
等式(もしくは0に等しいと仮定された式)から変数を消去します。
k個の変数 x_1, ..., x_kを消去した
n - k個の式のリストを返します。
最初 x_1を消去し、n - 1個の式を得て、
次に変数 x_2を消去し、の繰り返し。
もし k = nなら、
変数 x_1, ..., x_kに依らないリストの中の単一式が返されます。
この場合、最後の変数について最後の結果を解くため solveがコールされます。
例:
(%i1) expr1: 2*x^2 + y*x + z;
2
(%o1) z + x y + 2 x
(%i2) expr2: 3*x + 5*y - z - 1;
(%o2) - z + 5 y + 3 x - 1
(%i3) expr3: z^2 + x - y^2 + 5;
2 2
(%o3) z - y + x + 5
(%i4) eliminate ([expr3, expr2, expr1], [y, z]);
8 7 6 5 4
(%o4) [7425 x - 1170 x + 1299 x + 12076 x + 22887 x
3 2
- 5154 x - 1291 x + 7688 x + 15376]
|
Categories: Polynomials ·Algebraic equations
一番目の要素が多項式 p_1, p_2, p_3, …の最大公約数で、
残りの要素は多項式を最大公約数で割ったものであるリストを返します。
これはいつも ezgcdアルゴリズムを使います。
gcd
, gcdex
, gcdivide
, poly_gcd
も参照してください。
例:
三つの多項式は最大公約数 2*x-3を持ちます。
GCDは最初、関数 gcdで計算され、その後、関数 ezgcdで計算されます。
(%i1) p1 : 6*x^3-17*x^2+14*x-3;
3 2
(%o1) 6 x - 17 x + 14 x - 3
(%i2) p2 : 4*x^4-14*x^3+12*x^2+2*x-3;
4 3 2
(%o2) 4 x - 14 x + 12 x + 2 x - 3
(%i3) p3 : -8*x^3+14*x^2-x-3;
3 2
(%o3) - 8 x + 14 x - x - 3
(%i4) gcd(p1, gcd(p2, p3));
(%o4) 2 x - 3
(%i5) ezgcd(p1, p2, p3);
2 3 2 2
(%o5) [2 x - 3, 3 x - 4 x + 1, 2 x - 4 x + 1, - 4 x + x + 1]
|
Categories: Polynomials
デフォルト値: true
facexpandは factorが返すこれ以上小さくできない因子が
展開された形式(デフォルト)か再帰的(正規のCRE)形式かを制御します。
Categories: Polynomials
任意の数の変数と関数を含んだ式 exprを整数上既約な因子に因数分解します。
factor (expr, p)は exprを
最小多項式が pである要素を加えた有理数体上で因数分解します。
factorは整数を素因数分解するのに ifactor関数を使います。
factorflagが falseなら有理式の整数因子の素因数分解を抑制します。
dontfactorに変数のリストを割り当てるとその変数に関して因数分解しなくなります。
(初期状態では空です。)
因数分解は dontfactorリスト上のそれらより
(CRE形式で仮定された変数順序を使って)重要でない変数に関しても実行されなくなります。
savefactorsが trueなら、
同じ因子をいくつか含む式の今後の因数分解をスピードアップするために
式の因子(因子の積)がある関数によって保存されます。
berlefactが falseなら Kroneckerの因数分解アルゴリズムが使われ、
そうでないならデフォルトである Berlekampのアルゴリズムが使われます。
intfaclimが trueなら、
もし自明な割り算やPollardのロー法のあと因子が見つからないなら
整数の素因数分解をあきらめます。
falseに設定されているなら
(これはユーザーが陽に factorをコールする場合です)
整数の完全な素因数分解が企てられます。
intfaclimのユーザー設定は内部で factorがコールされた時に使われます。
intfaclimは Maximaが大きな整数を素因数分解するのに
ありえないぐらい長い時間を使うことを妨げるようにリセットされます。
例:
(%i1) factor (2^63 - 1);
2
(%o1) 7 73 127 337 92737 649657
(%i2) factor (-8*y - 4*x + z^2*(2*y + x));
(%o2) (2 y + x) (z - 2) (z + 2)
(%i3) -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2;
2 2 2 2 2
(%o3) x y + 2 x y + y - x - 2 x - 1
(%i4) block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
2
(x + 2 x + 1) (y - 1)
(%o4) ----------------------
36 (y + 1)
(%i5) factor (1 + %e^(3*x));
x 2 x x
(%o5) (%e + 1) (%e - %e + 1)
(%i6) factor (1 + x^4, a^2 - 2);
2 2
(%o6) (x - a x + 1) (x + a x + 1)
(%i7) factor (-y^2*z^2 - x*z^2 + x^2*y^2 + x^3);
2
(%o7) - (y + x) (z - x) (z + x)
(%i8) (2 + x)/(3 + x)/(b + x)/(c + x)^2;
x + 2
(%o8) ------------------------
2
(x + 3) (x + b) (x + c)
(%i9) ratsimp (%);
4 3
(%o9) (x + 2)/(x + (2 c + b + 3) x
2 2 2 2
+ (c + (2 b + 6) c + 3 b) x + ((b + 3) c + 6 b c) x + 3 b c )
(%i10) partfrac (%, x);
2 4 3
(%o10) - (c - 4 c - b + 6)/((c + (- 2 b - 6) c
2 2 2 2
+ (b + 12 b + 9) c + (- 6 b - 18 b) c + 9 b ) (x + c))
c - 2
- ---------------------------------
2 2
(c + (- b - 3) c + 3 b) (x + c)
b - 2
+ -------------------------------------------------
2 2 3 2
((b - 3) c + (6 b - 2 b ) c + b - 3 b ) (x + b)
1
- ----------------------------------------------
2
((b - 3) c + (18 - 6 b) c + 9 b - 27) (x + 3)
(%i11) map ('factor, %);
2
c - 4 c - b + 6 c - 2
(%o11) - ------------------------- - ------------------------
2 2 2
(c - 3) (c - b) (x + c) (c - 3) (c - b) (x + c)
b - 2 1
+ ------------------------ - ------------------------
2 2
(b - 3) (c - b) (x + b) (b - 3) (c - 3) (x + 3)
(%i12) ratsimp ((x^5 - 1)/(x - 1));
4 3 2
(%o12) x + x + x + x + 1
(%i13) subst (a, x, %);
4 3 2
(%o13) a + a + a + a + 1
(%i14) factor (%th(2), %);
2 3 3 2
(%o14) (x - a) (x - a ) (x - a ) (x + a + a + a + 1)
(%i15) factor (1 + x^12);
4 8 4
(%o15) (x + 1) (x - x + 1)
(%i16) factor (1 + x^99);
2 6 3
(%o16) (x + 1) (x - x + 1) (x - x + 1)
10 9 8 7 6 5 4 3 2
(x - x + x - x + x - x + x - x + x - x + 1)
20 19 17 16 14 13 11 10 9 7 6
(x + x - x - x + x + x - x - x - x + x + x
4 3 60 57 51 48 42 39 33
- x - x + x + 1) (x + x - x - x + x + x - x
30 27 21 18 12 9 3
- x - x + x + x - x - x + x + 1)
|
Categories: Polynomials
デフォルト値: false
factorflagが falseの時
有理式の整数因子の素因素分解を抑制します。
Categories: Polynomials
和 exprを形式
f (x_1, x_2, …)*gの項の和に再整理します。
ここで gはどのx_iも含まない式の積で fは因数分解されたものです。
オプション変数 keepfloatは factoroutに無視されることに注意してください。
例:
(%i1) expand (a*(x+1)*(x-1)*(u+1)^2);
2 2 2 2 2
(%o1) a u x + 2 a u x + a x - a u - 2 a u - a
(%i2) factorout(%,x);
2
(%o2) a u (x - 1) (x + 1) + 2 a u (x - 1) (x + 1)
+ a (x - 1) (x + 1)
|
Categories: Expressions
exprの和の形の因子の中の項を
項の和が因数分解可能であるような項のグループにまとめようとします。
factorsumは
expand ((x + y)^2 + (z + w)^2)の結果を回復できますが、
expand ((x + 1)^2 + (x + y)^2)は回復できません。
項が共通の変数を持つからです。
例:
(%i1) expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
2 2 2 2
(%o1) a x z + a z + 2 a w x z + 2 a w z + a w x + v x
2 2 2 2
+ 2 u v x + u x + a w + v + 2 u v + u
(%i2) factorsum (%);
2 2
(%o2) (x + 1) (a (z + w) + (v + u) )
|
Categories: Expressions
多項式の掛け算のための特殊なアルゴリズムを使って、
多項式 p_1と p_2の積を返します。
p_1と p_2は多変数で密でほぼ同じサイズであるべきです。
n_1が p_1の次数で
n_2が p_2の次数だとすると、
古典的な掛け算は
n_1 n_2のオーダーですが、
fasttimesは max (n_1, n_2)^1.585のオーダーです。
Categories: Polynomials
fullratsimpは
ratsimpと式の非有理的整理を式変形されなくなるまで繰り返し適応し、結果を返します。
非有理式が含まれる時は、
よくあるような ratsimp1回コールとその後の非有理的(「一般的」)整理だけでは
整理された結果を返すのに十分でないかもしれません。
時々複数回のコールが必要とされます。
fullratsimpはこのプロセスを楽にしてくれます。
fullratsimp (expr, x_1, ..., x_n)は
ratsimpや ratと同様複数の引数を取ります。
例:
(%i1) expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
a/2 2 a/2 2
(x - 1) (x + 1)
(%o1) -----------------------
a
x - 1
(%i2) ratsimp (expr);
2 a a
x - 2 x + 1
(%o2) ---------------
a
x - 1
(%i3) fullratsimp (expr);
a
(%o3) x - 1
(%i4) rat (expr);
a/2 4 a/2 2
(x ) - 2 (x ) + 1
(%o4)/R/ -----------------------
a
x - 1
|
Categories: Simplification functions ·Rational expressions
結果が変わらなくなるまで自身を再帰的にコールすることを除いて
ratsubstと同じです。
置き換える式と置き換えられる式が1つ以上の変数を共通に持つ時、
この関数は役に立ちます。
fullratsubstは lratsubstのフォーマットでも引数を受け付けます。
すなわち、一番目の引数は1つの代入等式もしくはそんな等式のリストで、
二番目の引数は処理される式というものです。
load ("lrats")は fullratsubstと lratsubstをロードします。
例:
(%i1) load ("lrats")$
|
substは多重代入を実行できます。
lratsubstは substに似ています。
(%i2) subst ([a = b, c = d], a + c); (%o2) d + b (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c)); (%o3) (d + a c) e + a d + b c |
(%i4) lratsubst (a^2 = b, a^3); (%o4) a b |
fullratsubstは結果が変わらなくなるまで再帰することを除いて
ratsubstと同値です。
(%i5) ratsubst (b*a, a^2, a^3);
2
(%o5) a b
(%i6) fullratsubst (b*a, a^2, a^3);
2
(%o6) a b
|
fullratsubstも、
一番目の引数として等式のリストもしくは式一つを受け入れます。
(%i7) fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
(%o7) b
(%i8) fullratsubst (a^2 = b*a, a^3);
2
(%o8) a b
|
fullratsubstは不確定な再帰を起こすことがあります。
(%i9) errcatch (fullratsubst (b*a^2, a^2, a^3)); *** - Lisp stack overflow. RESET |
Categories: Rational expressions
p_1と p_2の最大公約数を返します。
フラグ gcdはどのアルゴリズムを利用するか決めます。
gcdを ezか, subres, red,
spmodいずれかに設定すると、それぞれ
ezgcd, 部分終結式prs, 被約,
モジュラーアルゴリズムを選択することになります。
もし gcdが falseなら、
gcd (p_1, p_2, x)はすべての xに対していつも
1を返します。
(例えば ratsimp, factorなど)多くの関数は背後で gcdを計算します。
斉次多項式に対しては gcdにsubresを使うことを推奨します。
例えば gcd (x^2 - 2*sqrt(2)*x + 2, x - sqrt(2))
のように代数的数が含まれる時、
algebraicは trueでなくてはいけません。
また gcdは ezであってはいけません。
もし gcdフラグ―デフォルトは spmod―が falseなら、
式が標準有理式(CRE)形に変換される時も最大公約数を計算しません。
もし gcdが不要ならこれは時々計算のスピードを上げます。
ezgcd
, gcdex
, gcdivide
, poly_gcd
も参照してください。
例:
(%i1) p1:6*x^3+19*x^2+19*x+6;
3 2
(%o1) 6 x + 19 x + 19 x + 6
(%i2) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x;
5 4 3 2
(%o2) 6 x + 13 x + 12 x + 13 x + 6 x
(%i3) gcd(p1, p2);
2
(%o3) 6 x + 13 x + 6
(%i4) p1/gcd(p1, p2), ratsimp;
(%o4) x + 1
(%i5) p2/gcd(p1, p2), ratsimp;
3
(%o5) x + x
|
ezgcd
は
一番目の要素が多項式 p_1と p_2の最大公約数で、
残りの要素が最大公約数で多項式を割ったもので構成されるリストを返します。
(%i6) ezgcd(p1, p2);
2 3
(%o6) [6 x + 13 x + 6, x + 1, x + x]
|
Categories: Polynomials ·Rational expressions
リスト [a, b, u]を返します。
ここで uは fと gの最大公約数(gcd)であり、
かつ a f + b gはuに等しいです。
引数 fと gは1変数多項式であるか、
そうでないなら指定された主変数 xの多項式でなければいけません。
これが機能するには単項イデアル整域にある必要があるからです。
gcdは他の変数の有理関数係数を持つ1変数多項式としての fと
gに対するgcdを意味します。
gcdexはユークリッドのアルゴリズムを実行します。
すべてが [f, g, -1]に直角の L[i]: [a[i], b[i], r[i]]の列を持ち、
q = quotient(r[i]/r[i+1])なら
L[i+2]: L[i] - q L[i+1]となるように次を組み立て、
余り r[i+2]がゼロの時 L[i+1]で終了します。
引数 fと gは整数であり得ます。
この場合、gcdexは関数 igcdex
を呼び出します。
ezgcd
, gcd
, gcdivide
, poly_gcd
も参照してください。
例:
(%i1) gcdex (x^2 + 1, x^3 + 4); 2
x + 4 x - 1 x + 4
(%o1)/R/ [- ------------, -----, 1]
17 17
(%i2) % . [x^2 + 1, x^3 + 4, -1]; (%o2)/R/ 0 |
以下の gcdは
k(y)[x]に対して働くので 1です。
k[y, x]で期待する y+1ではないことに注意してください。
(%i1) gcdex (x*(y + 1), y^2 - 1, x); 1
(%o1)/R/ [0, ------, 1]
2
y - 1
|
Categories: Polynomials ·Rational expressions
ガウス整数(すなわち aと bが有理整数(通常の整数)であるとして形式
a + b の数) nを
ガウス整数上で因数分解します。
因子は aと bを非負にすることによって正規化されます。
%i
Categories: Integers
多項式 exprをガウス整数(虚数単位%iを付け加えた整数)上で因数分解します。
aが %iとなる factor (expr, a^2+1)ようなものです。
例:
(%i1) gfactor (x^4 - 1); (%o1) (x - 1) (x + 1) (x - %i) (x + %i) |
Categories: Polynomials
factorsumに似ていますが
factorの代わりに gfactorを適用します。
Categories: Expressions
exprの中の xの明示的に示された指数の最も大きなものを返します。
xは変数もしくは一般式です。
もし xが exprの中に現れないなら、
hipowは 0を返します。
hipowは exprに等価な式を考慮しません。
特に hipowは exprを展開しないので、
hipow (expr, x)と
hipow (expand (expr, x))は違った結果をもたらすかもしれません。
例:
(%i1) hipow (y^3 * x^2 + x * y^4, x); (%o1) 2 (%i2) hipow ((x + y)^5, x); (%o2) 1 (%i3) hipow (expand ((x + y)^5), x); (%o3) 5 (%i4) hipow ((x + y)^5, x + y); (%o4) 5 (%i5) hipow (expand ((x + y)^5), x + y); (%o5) 0 |
Categories: Expressions
デフォルト値: true
もし trueなら、
試し割りとPollardのロー法のあと因子が見つからないなら
Maximaは整数の素因素分解をあきらめ、素因数分解は完了しません。
intfaclimがfalseの時、
(これは、ユーザーが明示的にfactorをコールした場合です)
完全な素因数分解を試みます。
divisorsや, divsum, totientの中で因子が計算される時は、
intfaclimは falseに設定されます
factorへの内部コールは intfaclimのユーザー指定の値を考慮します。
intfaclimを trueに設定することは
大きな整数を素因数分解するのに費やす時間を少なくするかもしれません。
Categories: Integers
デフォルト値: false
keepfloatがtrueなら、
浮動小数点数を含む式を標準有理式(CRE)形に変換する時
浮動小数点を有理数化しないようにします。
関数 solveとそれを呼び出す関数(例えば eigenvalues)は、
現在、このフラグを無視しとにかく浮動小数点数を変換することに注意してください。
例:
(%i1) rat(x/2.0);
`rat' replaced 0.5 by 1/2 = 0.5
x
(%o1)/R/ -
2
(%i2) rat(x/2.0), keepfloat;
(%o2)/R/ E 0.5 x
|
solveは keepfloatを無視します:
(%i3) solve(1.0-x,x), keepfloat; `rat' replaced 1.0 by 1/1 = 1.0 (%o3) [x = 1] |
Categories: Numerical evaluation
exprの中に明示的に現れる xの最小の指数を返します。 例えば、
(%i1) lopow ((x+y)^2 + (x+y)^a, x+y); (%o1) min(a, 2) |
Categories: Expressions
substの代わりに ratsubstを使うことを除いて、
subst (L, expr)に似ています。
lratsubstの一番目の引数は
substが受け付けるそれと同一のフォーマットの等式もしくは等式のリストです。
代入は等式のリストによって与えられた順、すなわち左から右に実行されます。
load ("lrats")は fullratsubstと lratsubstをロードします。
例:
(%i1) load ("lrats")$
|
substは多重代入を実行できます。
lratsubstは substに似ています。
(%i2) subst ([a = b, c = d], a + c); (%o2) d + b (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c)); (%o3) (d + a c) e + a d + b c |
(%i4) lratsubst (a^2 = b, a^3); (%o4) a b |
Categories: Polynomials ·Rational expressions
デフォルト値: false
modulusが正の数 pの時、
(ratや関連の関数が返すような)有理数上の演算に関して、
いわゆる均衡法系("balanced" modulus system)と呼ばれるものを使って、
pを法とする合同変換が実行されます。
均衡法系では、
n modulo pはnをpで割った余りですが、
(a p + kが
nに等しくなるような整数 a, kの組の k)
pが奇数の時、
[-(p-1)/2, ..., 0, ..., (p-1)/2]の中から、
pが偶数の時、[-(p/2 - 1), ..., 0, ...., p/2]の中から
選ばれます。
modulusが再設定された時、もし exprが既に標準有理式(CRE)形なら、
正しい結果を得るためには、
例えば expr: rat (ratdisrep (expr))というように
exprを再ratする必要があるかもしれません。
典型的には modulusには素数が設定されます。
もし modulusが正の合成数に設定されたら、
この設定は受け入れられますが警告メッセージが表示されます。
ゼロや負の整数をmodulusに割り当てた時 Maximaはエラーをシグナルします。
例:
(%i1) modulus:7;
(%o1) 7
(%i2) polymod([0,1,2,3,4,5,6,7]);
(%o2) [0, 1, 2, 3, - 3, - 2, - 1, 0]
(%i3) modulus:false;
(%o3) false
(%i4) poly:x^6+x^2+1;
6 2
(%o4) x + x + 1
(%i5) factor(poly);
6 2
(%o5) x + x + 1
(%i6) modulus:13;
(%o6) 13
(%i7) factor(poly);
2 4 2
(%o7) (x + 6) (x - 6 x - 2)
(%i8) polymod(%);
6 2
(%o8) x + x + 1
|
Categories: Integers
もし exprが比ならその分子を返します。 もし exprが比でないなら exprが返されます。
numは引数を評価します。
Categories: Expressions
変数 xの多項式 pを xの多項式の関数合成に分解します。
polydecompは
lambda ([x], p_1) (lambda ([x], p_2) (... (lambda ([x], p_n) (x)) ...)) |
が pに等しいようなリスト [p_1, ..., p_n]を返します。
nより小さい iについて p_iの次数は1より大きいです。
このような分解は一意的ではありません。
例:
(%i1) polydecomp (x^210, x);
7 5 3 2
(%o1) [x , x , x , x ]
(%i2) p : expand (subst (x^3 - x - 1, x, x^2 - a));
6 4 3 2
(%o2) x - 2 x - 2 x + x + 2 x - a + 1
(%i3) polydecomp (p, x);
2 3
(%o3) [x - a, x - x - 1]
|
以下の関数は xの関数として
L = [e_1, ..., e_n]を合成します;
それはpolydecompの逆です。
compose (L, x) := block ([r : x], for e in L do r : subst (e, x, r), r) $ |
composeを使って上の例を再表現します:
(%i3) polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
2 3
(%o3) [x - a, x - x - 1]
|
compose (polydecomp (p, x), x)はいつも(展開されていない)
pを返しますが、
polydecomp (compose ([p_1, ..., p_n], x), x)は
必ずしも [p_1, ..., p_n]を返さないことに注意してください。
(%i4) polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
2 2
(%o4) [x + 2, x + 1]
(%i5) polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
2 2
x + 3 x + 5
(%o5) [------, ------, 2 x + 1]
4 2
|
Categories: Polynomials
多項式 pを現在の法(変数 modulusの値)に関するモジュラー表現に変換します。
polymod (p, m)は
modulusの現在値の代わりに法 mを使うように指定します。
modulus
を参照してください。
Categories: Polynomials
多項式 p_1を多項式 p_2で割った結果を返します。
引数 x_1, …, x_nは ratvarsと同様に解釈されます。
quotientは divideが返す2要素リストの最初の要素を返します。
Categories: Polynomials
exprを標準有理式(CRE)形式に変換します。
具体的には、展開し、共通の分母上ですべての項を結合し、通分し、
ratepsilonの許容誤差内で浮動小数点を有理数に変換します。
もし変数が指定されたなら、
ratvarsのように x_1, …, x_nに従って並び替えられます。
ratは一般に加算+, 減算-, 乗算*,
除算/と整数べきの指数を除いた関数を整理しません。
一方で ratsimpはこれらの場合を扱います。
CRE形式の中のアトム(数と変数)は一般形式でのそれと同じではないことに注意してください。
例えば rat(x) - xは rat(0)を出力します。
これは0とは違う内部表現を持ちます。
ratfacが trueの時、
ratは CREの一部因数分解された形式を出力します。
有理演算の最中、因数分解パッケージをコールすることなく
式を可能な限り因数分解された形で保持します。
これにより常に、いくつかの計算でメモリと時間を節約することになります。
分子と分母は互いに素になりますが(例えば、 ratfacが trueの時
((x^2 - 1)^4/(x + 10^2)は (x - 1)^4 (x + 1)^2を出力します)、
それぞれの部分の中の因子は互いに素とは限りません。
ratprintが falseなら
ユーザーに浮動小数点を有理数に変換したことを通知するメッセージの出力を抑制します。
keepfloatが trueなら
浮動小数点が有理数に変換されることを抑制します。
ratexpandと ratsimpも参照してください。
例:
(%i1) ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
(4*y^2 + x^2);
4
(x - 2 y)
(y + a) (2 y + x) (------------ + 1)
2 2 2
(x - 4 y )
(%o1) ------------------------------------
2 2
4 y + x
(%i2) rat (%, y, a, x);
2 a + 2 y
(%o2)/R/ ---------
x + 2 y
|
Categories: Rational expressions
デフォルト値: true
ratalgdenomが trueの時
根号に関する分母の有理化を有効にします。
ratalgdenomは標準有理式(CRE)が代数モードで使われる時だけ効果を持ちます。
Categories: Simplification flags and variables
式 exprの中の式 x^nの係数を返します。
nを省略した場合 nは1が仮定されます。
戻り値は(非有理な意味で可能な場合を除いて)xの中の変数の制約を受けません。 このタイプの係数が存在しなければ0を返します。
ratcoefは最初の引数を展開し有理的に整理するので
純粋に構文法的な coeffのそれとは違った答えを生成することがあります。
例えば ratcoef ((x + 1)/y + x, x)は (y + 1)/yを返しますが、
coeffは1を返します。
exprを和と見ると、ratcoef (expr, x, 0)は
xを含まない項の和を返します。
だからもし xの負のべき乗が存在するなら ratcoefを使うべきではありません。
exprは検査される前に有理的に整理されるので、 係数が想像された形とは全く違って現れることがあります。
例:
(%i1) s: a*x + b*x + 5$ (%i2) ratcoef (s, a + b); (%o2) x |
Categories: Polynomials ·Rational expressions
exprを標準有理式(CRE)に強制した後、exprの分母を返します。 戻り値はCREです。
もしexprがCREでないなら ratによってCREに強制的に変換されます。
すべての項を共通の分母上に置くことによって、この変換は
exprの形式を変えることがあります。
denomは似ていますが、CREではなく通常の式を返します。
また、denomは共通の分母上にすべての項を置こうとはしませんし、
ratdenomが比と見なすいくつかの式は denomは比と見なしません。
Categories: Rational expressions
デフォルト値: true
ratdenomdivideが trueの時、
ratexpandは、分子が和である比を共通の分母を持つ比の和に展開します。
そうでないなら ratexpandは比の和を1つの比に縮約します。
その比の分子はそれぞれの比の分子の和です。
例:
(%i1) expr: (x^2 + x + 1)/(y^2 + 7);
2
x + x + 1
(%o1) ----------
2
y + 7
(%i2) ratdenomdivide: true$
(%i3) ratexpand (expr);
2
x x 1
(%o3) ------ + ------ + ------
2 2 2
y + 7 y + 7 y + 7
(%i4) ratdenomdivide: false$
(%i5) ratexpand (expr);
2
x + x + 1
(%o5) ----------
2
y + 7
(%i6) expr2: a^2/(b^2 + 3) + b/(b^2 + 3);
2
b a
(%o6) ------ + ------
2 2
b + 3 b + 3
(%i7) ratexpand (expr2);
2
b + a
(%o7) ------
2
b + 3
|
Categories: Simplification flags and variables ·Rational expressions
有理式 exprを xに関して微分します。 exprは xの多項式もしくは多項式の商でなければなりません。 引数 xは exprの変数もしくは部分式を取り得ます。
結果は、たぶん違った形式になりますが diffと同値です。
有理式の場合 ratdiffは diffより速いでしょう。
もしexprが標準有理式(CRE)なら
ratdiffは標準有理式を返します。
そうでないなら一般式を返します。
ratdiffは exprの xへの依存のみを考慮し、
dependsで規定された依存性は無視します。
例:
(%i1) expr: (4*x^3 + 10*x - 11)/(x^5 + 5); 3
4 x + 10 x - 11
(%o1) ----------------
5
x + 5
(%i2) ratdiff (expr, x);
7 5 4 2
8 x + 40 x - 55 x - 60 x - 50
(%o2) - ---------------------------------
10 5
x + 10 x + 25
(%i3) expr: f(x)^3 - f(x)^2 + 7;
3 2
(%o3) f (x) - f (x) + 7
(%i4) ratdiff (expr, f(x));
2
(%o4) 3 f (x) - 2 f(x)
(%i5) expr: (a + b)^3 + (a + b)^2;
3 2
(%o5) (b + a) + (b + a)
(%i6) ratdiff (expr, a + b);
2 2
(%o6) 3 b + (6 a + 2) b + 3 a + 2 a
|
Categories: Rational expressions
引数を一般式として返します。 もし exprが一般式なら戻り値は引数と変わりません。
典型的には ratdisrepは標準有理式(CRE)を一般式に変換するためにコールされます。
もし「伝染」を止めたかったり非有理文脈で有理関数を使いたいなら、
これは時々便利です。
totaldisrepも参照してください。
Categories: Rational expressions
exprを展開します。 指数和や和の積を展開し、共通分母上の分数を結合し、通分し、 (もし和なら)分子を分母で割ったそれぞれの項に分割します。
たとえ exprが標準有理式(CRE)でも
ratexpandの戻り値は一般式です。
スイッチ ratexpandが trueなら、
CRE式は一般式や表示形式に変換された時完全に展開されます。
一方もし falseなら再帰形式に変換します。
ratsimpも参照してください。
ratdenomdivideが trueの時、
ratexpandは分子が和である比を共通の分母を持つ比の和に展開します。
そうでないなら、
ratexpandは比の和をその分子がそれぞれの比の分子の和である単一の比にまとめます。
keepfloatが trueの場合、
浮動小数点を含んだ式をCRE形式に変換する時、浮動小数点が有理化されるのを抑制します。
例:
(%i1) ratexpand ((2*x - 3*y)^3);
3 2 2 3
(%o1) - 27 y + 54 x y - 36 x y + 8 x
(%i2) expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
x - 1 1
(%o2) -------- + -----
2 x - 1
(x + 1)
(%i3) expand (expr);
x 1 1
(%o3) ------------ - ------------ + -----
2 2 x - 1
x + 2 x + 1 x + 2 x + 1
(%i4) ratexpand (expr);
2
2 x 2
(%o4) --------------- + ---------------
3 2 3 2
x + x - x - 1 x + x - x - 1
|
Categories: Rational expressions
デフォルト値: false
ratfacが trueの時、
標準有理式(CRE)を部分的に因数分解された形式で操作します。
有理演算の間、
式を、factorをコールせずに
可能な限り最大限因数分解した形で維持します。
これはいつも保存領域を節約し、いくつかの計算では時間も節約することがあります。
分子と分母は互いに素になります。
例えば factor ((x^2 - 1)^4/(x + 1)^2)は
(x - 1)^4 (x + 1)^2)をもたらしますが、
それぞれの部分の中の因子は互いに素ではないかもしれません。
ctensr(成分テンソル操作)パッケージでは、
ratfacが trueの時、
Ricci, Einstein, Riemann, Weylテンソルとスカラー曲率を
自動的に因数分解します。
ratfacはテンソルの成分が2、3の項から成ると知られている場合だけ
設定すべきです。
ratfacと ratweight体系は互換性はなく、
同時には使えないかもしれません。
Categories: Rational expressions
exprを標準有理式(CRE)に強制変換した後、その分子を返します。 戻り値はCREです。
もしexprがCREでないなら ratによってCREに強制変換されます。
この変換は、
共通の分母上にすべての項を置くことによって、
exprの形式を変えるかもしれません。
numは似ていますが、
CREではなく通常の式を返します。
また numは共通の分母上にすべての項を置こうとはしませんし、
ratnumerが比と見なすいくつかの式は numは比と見しません。
Categories: Rational expressions
もし exprが標準有理式(CRE)か拡張CREなら trueを返し、
そうでないなら falseを返します。
CREは ratと関連関数によって生成されます。
拡張CREは taylorと関連関数によって生成されます。
Categories: Predicate functions ·Rational expressions
デフォルト値: true
ratprintが trueの時、
ユーザーに浮動小数点を有理数に変換したことを通知するメッセージを表示します。
Categories: Rational expressions ·Numerical evaluation ·Console interaction
式 expとその部分式の全てを有理的に整理します(非有理的関数の引数も含みます)。
結果は二つの多項式の商として、再帰的形式
—主変数の係数が他の変数の多項式である形式—で返されます。
変数は(例えば sin(z^2+1)のような)非有理関数を含むかもしれませんが、
どんな非有理関数の引数もまた有理的に整理されます。
ratsimp (expr, x_1, ..., x_n)は
ratvarsで指定した場合と同様に変数の順序指定に従って有理的に整理します。
ratsimpexponsが trueの時、
ratsimpは式の指数にも適用されます。
ratexpandも参照してください。
ratsimpは
ratexpandに影響するフラグのいくつかに影響されることに注意してください。
例:
(%i1) sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2); 2 2
x (log(x) + 1) - log (x)
(%o1) sin(------) = %e
2
x + x
(%i2) ratsimp (%);
1 2
(%o2) sin(-----) = %e x
x + 1
(%i3) ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
3/2
(x - 1) - sqrt(x - 1) (x + 1)
(%o3) --------------------------------
sqrt((x - 1) (x + 1))
(%i4) ratsimp (%);
2 sqrt(x - 1)
(%o4) - -------------
2
sqrt(x - 1)
(%i5) x^(a + 1/a), ratsimpexpons: true;
2
a + 1
------
a
(%o5) x
|
Categories: Simplification functions ·Rational expressions
デフォルト値: false
ratsimpexponsが trueの時、
式整理の間 ratsimpを式の指数に適用します。
Categories: Simplification flags and variables ·Rational expressions
デフォルト値: false
もし radsubstflagが trueなら、
ratsubstが
xの中の sqrt (x)に uを代入するような代入をできるようにします。
Categories: Simplification flags and variables
cの中の bに aを代入し、結果の式を返します。 bは和でも積tでもべきなどでも問題ありません。
substは純粋に構文法的代入ですが、
ratsubstは式の意味の何かを知っています。
だから subst (a, x + y, x + y + z)は x + y + zを返す一方、
ratsubstは z + aを返します。
ratsubstflagが trueの時、
ratsubstは式が陽には含んでいない根への代入を実行します。
ratsubstはオプション変数 keepfloatの値 trueを無視します。
例:
(%i1) ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
3 4
(%o1) a x y + a
(%i2) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
4 3 2
(%o2) cos (x) + cos (x) + cos (x) + cos(x) + 1
(%i3) ratsubst (1 - sin(x)^2, cos(x)^2, %);
4 2 2
(%o3) sin (x) - 3 sin (x) + cos(x) (2 - sin (x)) + 3
(%i4) ratsubst (1 - cos(x)^2, sin(x)^2, sin(x)^4);
4 2 (%o4) cos (x) - 2 cos (x) + 1 (%i5) radsubstflag: false$
(%i6) ratsubst (u, sqrt(x), x);
(%o6) x
(%i7) radsubstflag: true$
(%i8) ratsubst (u, sqrt(x), x);
2
(%o8) u
|
Categories: Rational expressions
有理式に関して主変数 x_1, ..., x_nを宣言します。 もし x_nが有理式の中に存在するなら それを主変数と見なします。 もし x_nが有理式の中に存在せず x_[n-1]が存在するなら、それを主変数と見なします。 などと先行する変数を通してx_1まで続きます。 x_1は 後に続く変数が存在しなかった時だけ主変数と見なされる変数です。
もし有理式の中の変数が ratvarsリストの中に存在しなかったら、
その変数には x_1よりも低い優先順位が与えられます。
ratvarsの引数は変数や sin(x)のような非有理関数もあり得ます。
変数 ratvarsは直近にコールされたときの関数 ratvarsの引数のリストです。
関数 ratvarsのコールそれぞれはリストを再設定します。
ratvars ()はリストをクリアします。
Categories: Rational expressions
デフォルト値: true
Maximaは Lisp変数 VARLISTの中に有理式の主変数の内部リストを保持します。
もし ratvarswitchが trueなら、
すべての評価は新しいリスト VARLISTで開始します。
これがデフォルトの振る舞いです。
そうでないなら、以前の評価からの主変数が内部リスト VARLISTから取り除かれません。
主変数は関数 ratvarsで宣言されるのですが、
オプション変数 ratvarswitchは主変数に影響しません。
例:
もし ratvarswitchが trueなら
すべての評価は新しいリスト VARLISTで始まります。
(%i1) ratvarswitch:true$
(%i2) rat(2*x+y^2);
2
(%o2)/R/ y + 2 x
(%i3) :lisp varlist
($X $Y)
(%i3) rat(2*a+b^2);
2
(%o3)/R/ b + 2 a
(%i4) :lisp varlist
($A $B)
|
もし ratvarswitchが falseなら
直前の評価からの主変数はまだ存在しています。
(%i4) ratvarswitch:false$
(%i5) rat(2*x+y^2);
2
(%o5)/R/ y + 2 x
(%i6) :lisp varlist
($X $Y)
(%i6) rat(2*a+b^2);
2
(%o6)/R/ b + 2 a
(%i7) :lisp varlist
($A $B $X $Y)
|
Categories: Rational expressions ·Global flags
変数 x_iに重み w_iを割り当てます。
これによって、
もし重みが変数 ratwtlvlの値を越えるなら項を0に置き換えるようにします。
(デフォルトでは切り詰めはもたらしません。)
項の重みは項の中の変数の重みと変数の指数を掛けたものの和です。
例えば 3 x_1^2 x_2の重みは 2 w_1 + w_2です。
ratwtlvlに従った切り詰めは標準有理式(CRE)を掛けたり、指数化する時だけ実行されます。
ratweight ()は重み割り当ての累積リストを返します。
注意: ratfacと ratweight体系は互換性はなく、
同時には使えないかもしれません。
例:
(%i1) ratweight (a, 1, b, 1);
(%o1) [a, 1, b, 1]
(%i2) expr1: rat(a + b + 1)$
(%i3) expr1^2;
2 2
(%o3)/R/ b + (2 a + 2) b + a + 2 a + 1
(%i4) ratwtlvl: 1$
(%i5) expr1^2;
(%o5)/R/ 2 b + 2 a + 1
|
Categories: Rational expressions
デフォルト値: []
ratweightsは ratweightが割り当てた重みのリストです。
リストは累積されます:
ratweightをコールすると毎回リストに項目を追加します。
kill (ratweights)と save (ratweights)はともに期待通り動作します。
Categories: Rational expressions
デフォルト値: false
ratwtlvlは、
標準有理式(CRE)の切り詰めを制御するために
ratweight関数と組み合わせて使われます。
デフォルト値の falseでは切り詰めは起こりません。
Categories: Rational expressions
多項式 p_1を多項式 p_2で割った余りを返します。
引数 x_1, ..., x_nはratvarsと同様に解釈されます。
remainderは divideが返す2要素リストの2番目の要素を返します。
Categories: Polynomials
関数 resultantは、変数 xを消去して2つの多項式
p_1と p_2の終結式を計算します。
終結式は p_1と p_2の中の xの係数の判別式です。
それは p_1と p_2が定数でない因子を共通に持つ時だけゼロに等しいです。
もし p_1か p_2が因数分解できるなら、
resultantをコールする前に factor
をコールするのが望ましいかもしれません。
オプション変数 resultantはどのアルゴリズムが計算に使われるか制御します。
オプション変数 resultant
を参照してください。
関数 bezout
は resultantと同じ引数を取り、行列を返します。
戻り値の判別式は望みの終結式です。
例:
(%i1) resultant(2*x^2+3*x+1, 2*x^2+x+1, x);
(%o1) 8
(%i2) resultant(x+1, x+1, x);
(%o2) 0
(%i3) resultant((x+1)*x, (x+1), x);
(%o3) 0
(%i4) resultant(a*x^2+b*x+1, c*x + 2, x);
2
(%o4) c - 2 b c + 4 a
(%i5) bezout(a*x^2+b*x+1, c*x+2, x);
[ 2 a 2 b - c ]
(%o5) [ ]
[ c 2 ]
(%i6) determinant(%); (%o6) 4 a - (2 b - c) c |
Categories: Polynomials
デフォルト値: subres
オプション変数 resultantは関数
resultant.
を使って終結式を計算するのにどのアルゴリズムが使われるか制御します。
可能な値は以下の通りです:
subres部分終結式多項式剰余列(PRS)アルゴリズム
modモジュラー終結式アルゴリズム
red通分多項式剰余列(PRS)アルゴリズム
大抵の問題では subresが最適です。
いくつかの大きな次数の1変数もしくは2変数問題では modがよりよいかもしれません。
Categories: Polynomials
デフォルト値: false
savefactorsが trueの時、
同じ因子のいくつかを含む式の因数分解を後でする時にスピードアップするために、
いくつかの関数が因子の積の形の式の因子を保存されるようにします。
Categories: Polynomials
式 exprの中の標準有理式 (CRE)変数のリストを返します。
ratvarsも参照してください。
Categories: Rational expressions ·Display functions
多項式因子が「平方にならない」ことを除いて factorに似ています。
すなわち、それらは次数1だけの因子を持ちます。
このアルゴリズムは factorの最初の段階でも使われるのですが、
多項式は n階微分と共通に nよりも大きな次数のすべての因子を持つという事実を使います。
このように、それぞれの変数に関する微分の多項式との最大公約数を取ることによって、
1よりも大きな次数の因子を見つけることができます。
例:
(%i1) sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2 2
(%o1) (2 x + 1) (x - 1)
|
Categories: Polynomials
多項式 p_1, ..., p_nの解である要素を Maximaに知られている代数的整数の環に加えます。 それぞれの引数 p_iは整数係数の多項式です。
tellrat (x)は、実際には有理関数の中で
xに0を代入することを意味します。
tellrat ()は現在の代入のリストを返します。
代数的整数の整理が効果を持つようにするためには、
algebraicを trueに設定しなければいけません。
Maximaは、起動の際には虚数単位と整数の根すべてについて知っています。
核(kernels)を取り
tellratプロパティを削除するコマンド untellratがあります。
例えば tellrat (x^2 - y^2)のように多変数多項式を tellratする時、
y^2を x^2に代入するのか逆なのかといったあいまいさがあります。
Maximaは特定の順序付けを選びますが、
もしユーザーがどちらか指定したいなら、
例えば tellrat (y^2 = x^2)は
y^2を x^2で置き換えることを示す構文法を供給します。
例:
(%i1) 10*(%i + 1)/(%i + 3^(1/3));
10 (%i + 1)
(%o1) -----------
1/3
%i + 3
(%i2) ev (ratdisrep (rat(%)), algebraic);
2/3 1/3 2/3 1/3
(%o2) (4 3 - 2 3 - 4) %i + 2 3 + 4 3 - 2
(%i3) tellrat (1 + a + a^2);
2
(%o3) [a + a + 1]
(%i4) 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
1 a
(%o4) ------------- + -----------------
sqrt(2) a - 1 sqrt(3) + sqrt(2)
(%i5) ev (ratdisrep (rat(%)), algebraic);
(7 sqrt(3) - 10 sqrt(2) + 2) a - 2 sqrt(2) - 1
(%o5) ----------------------------------------------
7
(%i6) tellrat (y^2 = x^2);
2 2 2
(%o6) [y - x , a + a + 1]
|
Categories: Polynomials ·Rational expressions
exprのすべての部分式を標準有理式(CRE)から一般形に変換して結果を返します。
もし exprがそれ自身CRE形なら、
totaldisrepは ratdisrepと同一です。
totaldisrepは
CRE形の部分式を持つ等式やリストや行列などの式を
ratdisrepするために役に立つかもしれません。
Categories: Rational expressions
x_1, …, x_nから tellratプロパティを削除します。
Categories: Polynomials ·Rational expressions
| [ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は市川 雄二によって2014年4月月20日にtexi2html 1.82を用いて生成されました。