[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
var
:: rat の主変数.
不定元
有理式
x
, y
, z
, u
, v
, w
, p
, q
, r
, s
, t
, a
, b
, c
, d
, e
,
f
, g
, h
, i
, j
, k
, l
, m
, n
, o
,以後は変数の現れた順.
[0] var(x^2+y^2+a^2); x [1] var(a*b*c*d*e); a [2] var(3/abc+2*xy/efg); abc
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
vars
:: obj に含まれる変数のリスト.
リスト
任意
[0] vars(x^2+y^2+a^2); [x,y,a] [1] vars(3/abc+2*xy/efg); [abc,xy,efg] [2] vars([x,y,z]); [x,y,z]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
uc
:: 未定係数法のための不定元を生成する.
vtype
が 1 の不定元
uc()
を実行するたびに, _0
, _1
, _2
,... という
不定元を生成する.
uc()
で生成された不定元は, 直接キーボードから入力することができない.
これは, プログラム中で未定係数を自動生成する場合, 入力などに含まれる
不定元と同一のものが生成されることを防ぐためである.
vtype
が 0) の自動生成には rtostr()
,
strtov()
を用いる.
uc()
で生成された不定元の不定元としての型 (vtype
) は 1 である.
(See section 不定元の型.)
[0] A=uc(); _0 [1] B=uc(); _1 [2] (uc()+uc())^2; _2^2+2*_3*_2+_3^2 [3] (A+B)^2; _0^2+2*_1*_0+_1^2
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
coef
:: poly の var (省略時は主変数) に関する deg 次の係数.
多項式
多項式
不定元
自然数
[0] A = (x+y+z)^3; x^3+(3*y+3*z)*x^2+(3*y^2+6*z*y+3*z^2)*x+y^3+3*z*y^2+3*z^2*y+z^3 [1] coef(A,1,y); 3*x^2+6*z*x+3*z^2 [2] coef(A,0); y^3+3*z*y^2+3*z^2*y+z^3
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
deg
, mindeg
:: poly の, 変数 var に関する最高次数.
:: poly の, 変数 var に関する最低次数.
自然数
多項式
不定元
[0] deg((x+y+z)^10,x); 10 [1] deg((x+y+z)^10,w); 0 [75] mindeg(x^2+3*x*y,x); 1
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
nmono
:: rat の単項式の項数.
自然数
有理式
[0] nmono((x+y)^10); 11 [1] nmono((x+y)^10/(x+z)^10); 22 [2] nmono(sin((x+y)^10)); 1
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ord
:: 変数順序の設定
変数のリスト
変数のリスト
ord()
の終了時における変数順序リストを返す.
[0] ord(); [x,y,z,u,v,w,p,q,r,s,t,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y,_z,_u,_v, _w,_p,_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o, exp(_x),(_x)^(_y),log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x), (-_x^2+1)^(-1/2),cosh(_x),sinh(_x),tanh(_x), (_x^2+1)^(-1/2),(_x^2-1)^(-1/2)] [1] ord([dx,dy,dz,a,b,c]); [dx,dy,dz,a,b,c,x,y,z,u,v,w,p,q,r,s,t,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y, _z,_u,_v,_w,_p,_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n, _o,exp(_x),(_x)^(_y),log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x), (-_x^2+1)^(-1/2),cosh(_x),sinh(_x),tanh(_x), (_x^2+1)^(-1/2),(_x^2-1)^(-1/2)]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
sdiv
, sdivm
, srem
, sremm
, sqr
, sqrm
:: poly1 を poly2 で割る除算が最後まで実行できる場合に商を求める.
:: poly1 を poly2 で割る除算が最後まで実行できる場合に剰余を求める.
:: poly1 を poly2 で割る除算が最後まで実行できる場合に商, 剰余を 求める.
sdiv()
, sdivm()
, srem()
, sremm()
: 多項式, sqr()
, sqrm()
: [商,剰余]
なるリスト
多項式
不定元
素数
sdivm()
, sremm()
, sqrm()
は GF(mod) 上で計算する.
sqr()
は商と剰余を同時に求めたい時に用いる.
idiv
, irem
を用いる.
%
を用いる.
[0] sdiv((x+y+z)^3,x^2+y+a); x+3*y+3*z [1] srem((x+y+z)^2,x^2+y+a); (2*y+2*z)*x+y^2+(2*z-1)*y+z^2-a [2] X=(x+y+z)*(x-y-z)^2; x^3+(-y-z)*x^2+(-y^2-2*z*y-z^2)*x+y^3+3*z*y^2+3*z^2*y+z^3 [3] Y=(x+y+z)^2*(x-y-z); x^3+(y+z)*x^2+(-y^2-2*z*y-z^2)*x-y^3-3*z*y^2-3*z^2*y-z^3 [4] G=gcd(X,Y); x^2-y^2-2*z*y-z^2 [5] sqr(X,G); [x-y-z,0] [6] sqr(Y,G); [x+y+z,0] [7] sdiv(y*x^3+x+1,y*x+1); divsp: cannot happen return to toplevel
idiv
, irem
, %
.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
tdiv
:: poly1 が poly2 で割り切れるかどうか調べる.
割り切れるならば商, 割り切れなければ 0
多項式
tdiv()
を繰り返し呼ぶことにより重複度がわかる.
[11] Y=(x+y+z)^5*(x-y-z)^3; x^8+(2*y+2*z)*x^7+(-2*y^2-4*z*y-2*z^2)*x^6 +(-6*y^3-18*z*y^2-18*z^2*y-6*z^3)*x^5 +(6*y^5+30*z*y^4+60*z^2*y^3+60*z^3*y^2+30*z^4*y+6*z^5)*x^3 +(2*y^6+12*z*y^5+30*z^2*y^4+40*z^3*y^3+30*z^4*y^2+12*z^5*y+2*z^6)*x^2 +(-2*y^7-14*z*y^6-42*z^2*y^5-70*z^3*y^4-70*z^4*y^3-42*z^5*y^2 -14*z^6*y-2*z^7)*x-y^8-8*z*y^7-28*z^2*y^6-56*z^3*y^5-70*z^4*y^4 -56*z^5*y^3-28*z^6*y^2-8*z^7*y-z^8 [12] for(I=0,F=x+y+z,T=Y; T=tdiv(T,F); I++); [13] I; 5
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
%
:: 整数による剰余
整数または多項式
整数または整数係数多項式
整数
irem()
と同様に用いることができる.
[0] (x+2)^5 % 3; x^5+x^4+x^3+2*x^2+2*x+2 [1] (x-2)^5 % 3; x^5+2*x^4+x^3+x^2+2*x+1 [2] (-5) % 4; 3 [3] irem(-5,4); -1
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
subst
, psubst
:: rat の varn に ratn を代入 (n=1,2,... で左から右に順次代入する).
有理式
有理式
不定元
subst()
は, sin()
などの函数の引数に対しても代入を行う.
psubst()
は, このような函数を一つの独立した不定元と見なして, そ
の引数には代入は行わない. (partial substitution のつもり)
subst
の引数ratがリスト,配列,行列,あるいは分散表現多項式で
あった場合には, それぞれの要素または係数に対して再帰的にsubst
を
行う.
[0] subst(x^3-3*y*x^2+3*y^2*x-y^3,y,2); x^3-6*x^2+12*x-8 [1] subst(@@,x,-1); -27 [2] subst(x^3-3*y*x^2+3*y^2*x-y^3,y,2,x,-1); -27 [3] subst(x*y^3,x,y,y,x); x^4 [4] subst(x*y^3,y,x,x,y); y^4 [5] subst(x*y^3,x,t,y,x,t,y); y*x^3 [6] subst(x*sin(x),x,t); sint(t)*t [7] psubst(x*sin(x),x,t); sin(x)*t
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
diff
:: rat を varn あるいは varlist の中の変数で順次微分する.
式
有理式 (初等函数を含んでもよい)
不定元
不定元のリスト
[0] diff((x+2*y)^2,x); 2*x+4*y [1] diff((x+2*y)^2,x,y); 4 [2] diff(x/sin(log(x)+1),x); (sin(log(x)+1)-cos(log(x)+1))/(sin(log(x)+1)^2) [3] diff(sin(x),[x,x,x,x]); sin(x)
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ediff
:: poly を varn あるいは varlist の中の変数で順次オイラー微分する.
多項式
多項式
不定元
不定元のリスト
[0] ediff((x+2*y)^2,x); 2*x^2+4*y*x [1] ediff((x+2*y)^2,x,y); 4*y*x
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
res
:: var に関する poly1 と poly2 の終結式.
多項式
不定元
多項式
素数
[0] res(t,(t^3+1)*x+1,(t^3+1)*y+t); -x^3-x^2-y^3
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
fctr
, sqfr
:: poly を既約因子に分解する.
:: poly を無平方分解する.
リスト
有理数係数の多項式
fctr()
は既約因子分解,
sqfr()
は無平方因子分解.
ptozp()
参照)
[0] fctr(x^10-1); [[1,1],[x-1,1],[x+1,1],[x^4+x^3+x^2+x+1,1],[x^4-x^3+x^2-x+1,1]] [1] fctr(x^3+y^3+(z/3)^3-x*y*z); [[1/27,1],[9*x^2+(-9*y-3*z)*x+9*y^2-3*z*y+z^2,1],[3*x+3*y+z,1]] [2] A=(a+b+c+d)^2; a^2+(2*b+2*c+2*d)*a+b^2+(2*c+2*d)*b+c^2+2*d*c+d^2 [3] fctr(A); [[1,1],[a+b+c+d,2]] [4] A=(x+1)*(x^2-y^2)^2; x^5+x^4-2*y^2*x^3-2*y^2*x^2+y^4*x+y^4 [5] sqfr(A); [[1,1],[x+1,1],[-x^2+y^2,2]] [6] fctr(A); [[1,1],[x+1,1],[-x-y,2],[x-y,2]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ufctrhint
:: 次数情報を用いた 1 変数多項式の因数分解
リスト
有理数係数の 1 変数多項式
自然数
fctr()
より効率良く行う.
poly が, d 次の拡大体上における
ある多項式のノルム (代数的数に関する演算) で無平方である場合,
各既約因子の次数は d の倍数となる. このような場合に
用いられる.
[10] A=t^9-15*t^6-87*t^3-125; t^9-15*t^6-87*t^3-125 0msec [11] N=res(t,subst(A,t,x-2*t),A); -x^81+1215*x^78-567405*x^75+139519665*x^72-19360343142*x^69 +1720634125410*x^66-88249977024390*x^63-4856095669551930*x^60 +1999385245240571421*x^57-15579689952590251515*x^54 +15956967531741971462865*x^51 ... +140395588720353973535526123612661444550659875*x^6 +10122324287343155430042768923500799484375*x^3 +139262743444407310133459021182733314453125 980msec + gc : 250msec [12] sqfr(N); [[-1,1],[x^81-1215*x^78+567405*x^75-139519665*x^72+19360343142*x^69 -1720634125410*x^66+88249977024390*x^63+4856095669551930*x^60 -1999385245240571421*x^57+15579689952590251515*x^54 ... -10122324287343155430042768923500799484375*x^3 -139262743444407310133459021182733314453125,1]] 20msec [13] fctr(N); [[-1,1],[x^9-405*x^6-63423*x^3-2460375,1], [x^18-486*x^15+98739*x^12-9316620*x^9+945468531*x^6-12368049246*x^3 +296607516309,1],[x^18-8667*x^12+19842651*x^6+19683,1], [x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3 +31524548679,1], [x^18+10773*x^12+2784051*x^6+307546875,1]] 167.050sec + gc : 1.890sec [14] ufctrhint(N,9); [[-1,1],[x^9-405*x^6-63423*x^3-2460375,1], [x^18-486*x^15+98739*x^12-9316620*x^9+945468531*x^6-12368049246*x^3 +296607516309,1],[x^18-8667*x^12+19842651*x^6+19683,1], [x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3 +31524548679,1], [x^18+10773*x^12+2784051*x^6+307546875,1]] 119.340sec + gc : 1.300sec
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
modfctr
:: 有限体上での多項式の因数分解
リスト
整数係数の多項式
自然数
fctr_ff
を用いる.
(有限体に関する演算,see section fctr_ff
).
[0] modfctr(x^10+x^2+1,2147483647); [[1,1],[x+1513477736,1],[x+2055628767,1],[x+91854880,1], [x+634005911,1],[x+1513477735,1],[x+634005912,1], [x^4+1759639395*x^2+2045307031,1]] [1] modfctr(2*x^6+(y^2+z*y)*x^4+2*z*y^3*x^2+(2*z^2*y^2+z^3*y)*x+z^4,3); [[2,1],[2*x^3+z*y*x+z^2,1],[2*x^3+y^2*x+2*z^2,1]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ptozp
:: poly を有理数倍して整数係数多項式にする.
多項式
多項式
red()
で分数係数有理式を約分しても,
分子多項式の係数は有理数のままであり, 有理式の分子を求める
nm()
では, 分数係数多項式は, 分数係数のままの形で出力されるため,
直ちに整数係数多項式を得る事は出来ない.
[0] ptozp(2*x+5/3); 6*x+5 [1] nm(2*x+5/3); 2*x+5/3
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
prim
, cont
:: poly の原始的部分 (primitive part).
:: poly の容量 (content).
有理数係数多項式
不定元
[0] E=(y-z)*(x+y)*(x-z)*(2*x-y); (2*y-2*z)*x^3+(y^2-3*z*y+2*z^2)*x^2+(-y^3+z^2*y)*x+z*y^3-z^2*y^2 [1] prim(E); 2*x^3+(y-2*z)*x^2+(-y^2-z*y)*x+z*y^2 [2] cont(E); y-z [3] prim(E,z); (y-z)*x-z*y+z^2
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
gcd
, gcdz
:: poly1 と poly2 の gcd.
多項式
多項式
素数
gcd()
は有理数体上の多項式としての GCD を返す.
すなわち, 結果は整数係数で, かつ係数の GCD
が 1 になるような多項式, または, 互いに素の場合は 1 を返す.
gcdz()
は poly1, poly2 ともに整数係数の場合に,
整数環上の多項式としての GCD を返す.
すなわち, gcd()
の値に, 係数全体の整数 GCDの値を掛けたものを返す.
gcd()
は GF(mod) 上での GCD を返す.
gcd()
, gcdz()
Extended Zassenhaus アルゴリズムによる.
有限体上の GCD は PRS アルゴリズムによっているため, 大きな問題,
GCD が 1 の場合などにおいて効率が悪い.
[0] gcd(12*(x^2+2*x+1)^2,18*(x^2+(y+1)*x+y)^3); x^3+3*x^2+3*x+1 [1] gcdz(12*(x^2+2*x+1)^2,18*(x^2+(y+1)*x+y)^3); 6*x^3+18*x^2+18*x+6 [2] gcd((x+y)*(x-y)^2,(x+y)^2*(x-y)); x^2-y^2 [3] gcd((x+y)*(x-y)^2,(x+y)^2*(x-y),2); x^3+y*x^2+y^2*x+y^3
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
red
:: rat を約分したもの.
有理式
有理式
[0] (x^3-1)/(x-1); (x^3-1)/(x-1) [1] red((x^3-1)/(x-1)); x^2+x+1 [2] red((x^3+y^3+z^3-3*x*y*z)/(x+y+z)); x^2+(-y-z)*x+y^2-z*y+z^2 [3] red((3*x*y)/(12*x^2+21*y^3*x)); (y)/(4*x+7*y^3) [4] red((3/4*x^2+5/6*x)/(2*y*x+4/3*x)); (9/8*x+5/4)/(3*y+2)
[ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は12月 21, 2024にtexi2html 5.0を用いて生成されました。