[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10 グレブナ基底に関する函数


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.1 gr, hgr, gr_mod, dgr

gr(plist,vlist,order)
hgr(plist,vlist,order)
gr_mod(plist,vlist,order,p)
dgr(plist,vlist,order,procs)

:: グレブナ基底の計算

return

リスト

plist vlist procs

リスト

order

数, リストまたは行列

p

2^27 未満の素数

[0] load("gr")$
[64] load("cyclic")$
[74] G=gr(cyclic(5),[c0,c1,c2,c3,c4],2);
[c4^15+122*c4^10-122*c4^5-1,...]
[75] GM=gr_mod(cyclic(5),[c0,c1,c2,c3,c4],2,31991)$
24628*c4^15+29453*c4^10+2538*c4^5+7363
[76] (G[0]*24628-GM[0])%31991;
0
参照

dp_gr_main, dp_gr_mod_main, dp_gr_f_main, dp_weyl_gr_main, dp_weyl_gr_mod_main, dp_weyl_gr_f_main, dp_ord.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.2 lex_hensel, lex_tl, tolex, tolex_d, tolex_tl

lex_hensel(plist,vlist1,order,vlist2,homo)
lex_tl(plist,vlist1,order,vlist2,homo)

:: 基底変換による辞書式順序グレブナ基底の計算

tolex(plist,vlist1,order,vlist2)
tolex_d(plist,vlist1,order,vlist2,procs)
tolex_tl(plist,vlist1,order,vlist2,homo)

:: グレブナ基底を入力とする, 基底変換による辞書式順序グレブナ基底の計算

return

リスト

plist vlist1 vlist2 procs

リスト

order

数, リストまたは行列

homo

フラグ

[78] K=katsura(5)$ 
30msec + gc : 20msec
[79] V=[u5,u4,u3,u2,u1,u0]$
0msec
[80] G0=hgr(K,V,2)$
91.558sec + gc : 15.583sec
[81] G1=lex_hensel(K,V,0,V,0)$
49.049sec + gc : 9.961sec
[82] G2=lex_tl(K,V,0,V,1)$
31.186sec + gc : 3.500sec
[83] gb_comp(G0,G1);
1
10msec
[84] gb_comp(G0,G2);
1
参照

dp_gr_main, dp_gr_mod_main, dp_gr_f_main, dp_weyl_gr_main, dp_weyl_gr_mod_main, dp_weyl_gr_f_main, dp_ord, 分散計算


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.3 lex_hensel_gsl, tolex_gsl, tolex_gsl_d

lex_hensel_gsl(plist,vlist1,order,vlist2,homo)

:: GSL 形式のイデアル基底の計算

tolex_gsl(plist,vlist1,order,vlist2)
tolex_gsl_d(plist,vlist1,order,vlist2,procs)

:: グレブナ基底を入力とする, GSL 形式のイデアル基底の計算

return

リスト

plist vlist1 vlist2 procs

リスト

order

数, リストまたは行列

homo

フラグ

[103] K=katsura(5)$
[104] V=[u5,u4,u3,u2,u1,u0]$
[105] G0=gr(K,V,0)$
[106] GSL=tolex_gsl(G0,V,0,V)$ 
[107] GSL[0];
[u1,8635837421130477667200000000*u0^31-...]
[108] GSL[1];
[u2,10352277157007342793600000000*u0^31-...]
[109] GSL[5];
[u0,11771021876193064124640000000*u0^32-...,
376672700038178051988480000000*u0^31-...]
参照

lex_hensel, lex_tl, tolex, tolex_d, tolex_tl, 分散計算


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.4 gr_minipoly, minipoly

gr_minipoly(plist,vlist,order,poly,v,homo)

:: 多項式の, イデアルを法とした最小多項式の計算

minipoly(plist,vlist,order,poly,v)

:: グレブナ基底を入力とする, 多項式の最小多項式の計算

return

多項式

plist vlist

リスト

order

数, リストまたは行列

poly

多項式

v

不定元

homo

フラグ

[117] G=tolex(G0,V,0,V)$      
43.818sec + gc : 11.202sec
[118] GSL=tolex_gsl(G0,V,0,V)$
17.123sec + gc : 2.590sec
[119] MP=minipoly(G0,V,0,u0,z)$
4.370sec + gc : 780msec
参照

lex_hensel, lex_tl, tolex, tolex_d, tolex_tl.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.5 tolexm, minipolym

tolexm(plist,vlist1,order,vlist2,mod)

:: 法 mod での基底変換によるグレブナ基底計算

minipolym(plist,vlist1,order,poly,v,mod)

:: 法 mod でのグレブナ基底による多項式の最小多項式の計算

return

tolexm() : リスト, minipolym() : 多項式

plist vlist1 vlist2

リスト

order

数, リストまたは行列

mod

素数

[197] tolexm(G0,V,0,V,31991);
[8271*u0^31+10435*u0^30+816*u0^29+26809*u0^28+...,...]
[198] minipolym(G0,V,0,u0,z,31991);
z^32+11405*z^31+20868*z^30+21602*z^29+...
参照

lex_hensel, lex_tl, tolex, tolex_d, tolex_tl, gr_minipoly, minipoly.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.6 dp_gr_main, dp_gr_mod_main, dp_gr_f_main, dp_weyl_gr_main, dp_weyl_gr_mod_main, dp_weyl_gr_f_main

dp_gr_main(plist,vlist,homo,modular,order)
dp_gr_mod_main(plist,vlist,homo,modular,order)
dp_gr_f_main(plist,vlist,homo,order)
dp_weyl_gr_main(plist,vlist,homo,modular,order)
dp_weyl_gr_mod_main(plist,vlist,homo,modular,order)
dp_weyl_gr_f_main(plist,vlist,homo,order)

:: グレブナ基底の計算 (組み込み函数)

return

リスト

plist vlist

リスト

order

数, リストまたは行列

homo

フラグ

modular

フラグまたは素数

参照

dp_ord, dp_gr_flags, dp_gr_print, gr, hgr, gr_mod, dgr, setmod_ff, 計算および表示の制御.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.7 dp_f4_main, dp_f4_mod_main, dp_weyl_f4_main, dp_weyl_f4_mod_main

dp_f4_main(plist,vlist,order)
dp_f4_mod_main(plist,vlist,order)
dp_weyl_f4_main(plist,vlist,order)
dp_weyl_f4_mod_main(plist,vlist,order)

:: F4 アルゴリズムによるグレブナ基底の計算 (組み込み函数)

return

リスト

plist vlist

リスト

order

数, リストまたは行列

参照

dp_ord, dp_gr_flags, dp_gr_print, gr, hgr, gr_mod, dgr, 計算および表示の制御.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.8 nd_gr, nd_gr_trace, nd_f4, nd_f4_trace, nd_weyl_gr, nd_weyl_gr_trace

nd_gr(plist,vlist,p,order[|option=value,...])
nd_gr_trace(plist,vlist,homo,p,order[|option=value,...])
nd_f4(plist,vlist,modular,order[|option=value,...])
nd_f4_trace(plist,vlist,homo,p,order[|option=value,...])
nd_weyl_gr(plist,vlist,p,order[|option=value,...])
nd_weyl_gr_trace(plist,vlist,homo,p,order[|option=value,...])

:: グレブナ基底の計算 (組み込み函数)

return

リスト

plist vlist

リスト

order

数, リストまたは行列

homo

フラグ

modular

フラグまたは素数

[38] load("cyclic")$
[49] C=cyclic(7)$
[50] V=vars(C)$
[51] cputime(1)$
[52] dp_gr_mod_main(C,V,0,31991,0)$
26.06sec + gc : 0.313sec(26.4sec)
[53] nd_gr(C,V,31991,0)$
ndv_alloc=1477188
5.737sec + gc : 0.1837sec(5.921sec)
[54] dp_f4_mod_main(C,V,31991,0)$  
3.51sec + gc : 0.7109sec(4.221sec)
[55] nd_f4(C,V,31991,0)$
1.906sec + gc : 0.126sec(2.032sec)
参照

dp_ord, dp_gr_flags, dp_gr_print, 計算および表示の制御.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.9 nd_gr_postproc, nd_weyl_gr_postproc

nd_gr_postproc(plist,vlist,p,order,check)
nd_weyl_gr_postproc(plist,vlist,p,order,check)

:: グレブナ基底候補のチェックおよび相互簡約

return

リスト または 0

plist vlist

リスト

p

素数または 0

order

数, リストまたは行列

check

0 または 1

afo

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.10 dp_gr_flags, dp_gr_print

dp_gr_flags([list])
dp_gr_print([i])

:: 計算および表示用パラメタの設定, 参照

return

設定値

list

リスト

i

整数

参照

計算および表示の制御


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.11 dp_ord

dp_ord([order])

:: 変数順序型の設定, 参照

return

変数順序型 (数, リストまたは行列)

order

数, リストまたは行列

[19] dp_ord(0)$          
[20] <<1,2,3>>+<<3,1,1>>;
(1)*<<1,2,3>>+(1)*<<3,1,1>>
[21] dp_ord(2)$          
[22] <<1,2,3>>+<<3,1,1>>;
(1)*<<3,1,1>>+(1)*<<1,2,3>>
参照

項順序の設定


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.12 dp_set_weight, dp_set_top_weight, dp_weyl_set_weight

dp_set_weight([weight])

:: sugar weight の設定, 参照

dp_set_top_weight([weight])

:: top weight の設定, 参照

dp_weyl_set_weight([weight])

:: weyl weight の設定, 参照

return

ベクトル

weight

整数のリストまたはベクトル

参照

Weight


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.13 dp_ptod

dp_ptod(poly,vlist)

:: 多項式を分散表現多項式に変換する.

return

分散表現多項式

poly

多項式

vlist

リスト

[50] dp_ord(0);
1
[51] dp_ptod((x+y+z)^2,[x,y,z]);
(1)*<<2,0,0>>+(2)*<<1,1,0>>+(1)*<<0,2,0>>+(2)*<<1,0,1>>+(2)*<<0,1,1>>
+(1)*<<0,0,2>>
[52] dp_ptod((x+y+z)^2,[x,y]);  
(1)*<<2,0>>+(2)*<<1,1>>+(1)*<<0,2>>+(2*z)*<<1,0>>+(2*z)*<<0,1>>
+(z^2)*<<0,0>>
参照

dp_dtop, dp_ord.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.14 dpm_dptodpm

dpm_dptodpm(dpoly,pos)

:: 分散表現多項式を加群多項式に変換する.

return

加群多項式

dpoly

分散表現多項式

pos

正整数

[50] dp_ord([0,0])$
[51] D=dp_ptod((x+y+z)^2,[x,y,z]);
(1)*<<2,0,0>>+(2)*<<1,1,0>>+(1)*<<0,2,0>>+(2)*<<1,0,1>>+(2)*<<0,1,1>>
+(1)*<<0,0,2>>
[52] dp_dptodpm(D,2);
(1)*<<2,0,0:2>>+(2)*<<1,1,0:2>>+(1)*<<0,2,0:2>>+(2)*<<1,0,1:2>>
+(2)*<<0,1,1:2>>+(1)*<<0,0,2:2>>
参照

dp_ptod, dp_ord.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.15 dpm_ltod

dpm_dptodpm(plist,vlist)

:: 多項式リストを加群多項式に変換する.

return

加群多項式

plist

多項式リスト

vlist

変数リスト

[2126] dp_ord([0,0])$
[2127] dpm_ltod([x^2+y^2,x,y-z],[x,y,z]);
(1)*<<2,0,0:1>>+(1)*<<0,2,0:1>>+(1)*<<1,0,0:2>>+(1)*<<0,1,0:3>>
+(-1)*<<0,0,1:3>>
参照

dpm_dtol, dp_ord.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.16 dpm_dtol

dpm_dptodpm(poly,vlist)

:: 加群多項式を多項式リストに変換する.

return

多項式リスト

poly

加群多項式

vlist

変数リスト

[2126] dp_ord([0,0])$
[2127] D=(1)*<<2,0,0:1>>+(1)*<<0,2,0:1>>+(1)*<<1,0,0:2>>+(1)*<<0,1,0:3>>
+(-1)*<<0,0,1:3>>$
[2128] dpm_dtol(D,[x,y,z]);
[x^2+y^2,x,y-z]
参照

dpm_ltod, dp_ord.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.17 dp_dtop

dp_dtop(dpoly,vlist)

:: 分散表現多項式を多項式に変換する.

return

多項式

dpoly

分散表現多項式

vlist

リスト

[53] T=dp_ptod((x+y+z)^2,[x,y]);
(1)*<<2,0>>+(2)*<<1,1>>+(1)*<<0,2>>+(2*z)*<<1,0>>+(2*z)*<<0,1>>
+(z^2)*<<0,0>>
[54] P=dp_dtop(T,[a,b]);
z^2+(2*a+2*b)*z+a^2+2*b*a+b^2

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.18 dp_mod, dp_rat

dp_mod(p,mod,subst)

:: 有理数係数分散表現多項式の有限体係数への変換

dp_rat(p)

:: 有限体係数分散表現多項式の有理数係数への変換

return

分散表現多項式

p

分散表現多項式

mod

素数

subst

リスト

参照

dp_nf, dp_nf_mod, dp_true_nf, dp_true_nf_mod, dp_weyl_nf, dp_weyl_nf_mod, subst, psubst, setmod.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.19 dp_homo, dp_dehomo

dp_homo(dpoly)

:: 分散表現多項式の斉次化

dp_dehomo(dpoly)

:: 斉次分散表現多項式の非斉次化

return

分散表現多項式

dpoly

分散表現多項式

[202] X=<<1,2,3>>+3*<<1,2,1>>;
(1)*<<1,2,3>>+(3)*<<1,2,1>>
[203] dp_homo(X);
(1)*<<1,2,3,0>>+(3)*<<1,2,1,2>>
[204] dp_dehomo(@);
(1)*<<1,2,3>>+(3)*<<1,2,1>>
参照

gr, hgr, gr_mod, dgr.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.20 dp_ptozp, dp_prim

dp_ptozp(dpoly)

:: 定数倍して係数を整数係数かつ係数の整数 GCD を 1 にする.

dp_prim(dpoly)

:: 有理式倍して係数を整数係数多項式係数かつ係数の多項式 GCD を 1 にする.

return

分散表現多項式

dpoly

分散表現多項式

[208] X=dp_ptod(3*(x-y)*(y-z)*(z-x),[x]);
(-3*y+3*z)*<<2>>+(3*y^2-3*z^2)*<<1>>+(-3*z*y^2+3*z^2*y)*<<0>>
[209] dp_ptozp(X);                       
(-y+z)*<<2>>+(y^2-z^2)*<<1>>+(-z*y^2+z^2*y)*<<0>>
[210] dp_prim(X);                        
(1)*<<2>>+(-y-z)*<<1>>+(z*y)*<<0>>
参照

ptozp.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.21 dp_nf, dp_nf_mod, dp_true_nf, dp_true_nf_mod, dp_weyl_nf, dp_weyl_nf_mod

dp_nf(indexlist,dpoly,dpolyarray,fullreduce)
dp_weyl_nf(indexlist,dpoly,dpolyarray,fullreduce)
dp_nf_mod(indexlist,dpoly,dpolyarray,fullreduce,mod)
dp_weyl_nf_mod(indexlist,dpoly,dpolyarray,fullreduce,mod)

:: 分散表現多項式の正規形を求める. (結果は定数倍されている可能性あり)

dp_true_nf(indexlist,dpoly,dpolyarray,fullreduce)
dp_true_nf_mod(indexlist,dpoly,dpolyarray,fullreduce,mod)

:: 分散表現多項式の正規形を求める. (真の結果を [分子, 分母] の形で返す)

return

dp_nf() : 分散表現多項式, dp_true_nf() : リスト

indexlist

リスト

dpoly

分散表現多項式

dpolyarray

配列

fullreduce

フラグ

mod

素数

[0] load("gr")$
[64] load("katsura")$
[69] K=katsura(4)$
[70] dp_ord(2)$
[71] V=[u0,u1,u2,u3,u4]$
[72] DP1=newvect(length(K),map(dp_ptod,K,V))$
[73] G=gr(K,V,2)$
[74] DP2=newvect(length(G),map(dp_ptod,G,V))$
[75] T=dp_ptod((u0-u1+u2-u3+u4)^2,V)$
[76] dp_dtop(dp_nf([0,1,2,3,4],T,DP1,1),V);
u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2^2
+(6*u1-2)*u2+9*u1^2-6*u1+1
[77] dp_dtop(dp_nf([4,3,2,1,0],T,DP1,1),V);
-5*u4^2+(-4*u3-4*u2-4*u1)*u4-u3^2-3*u3-u2^2+(2*u1-1)*u2-2*u1^2-3*u1+1
[78] dp_dtop(dp_nf([0,1,2,3,4],T,DP2,1),V);
-11380879768451657780886122972730785203470970010204714556333530492210
456775930005716505560062087150928400876150217079820311439477560587583
488*u4^15+...
[79] dp_dtop(dp_nf([4,3,2,1,0],T,DP2,1),V);
-11380879768451657780886122972730785203470970010204714556333530492210
456775930005716505560062087150928400876150217079820311439477560587583
488*u4^15+...
[80] @78==@79;
1
参照

dp_dtop, dp_ord, dp_mod, dp_rat, p_nf, p_nf_mod, p_true_nf, p_true_nf_mod.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.22 dpm_nf, dpm_nf_and_quotient

dpm_nf([indexlist,]dpoly,dpolyarray,fullreduce)

:: 加群多項式の正規形を求める. (結果は定数倍されている可能性あり)

dpm_nf_and_quotient([indexlist,]dpoly,dpolyarray)

:: 加群多項式の正規形と商を求める.

return

dpm_nf() : 加群多項式, dpm_nf_and_quotient() : リスト

indexlist

リスト

dpoly

加群多項式

dpolyarray

配列

[2126] dp_ord([1,0])$
[2127] S=ltov([(1)*<<0,0,2,0:1>>+(1)*<<0,0,1,1:1>>+(1)*<<0,0,0,2:1>>
+(-1)*<<3,0,0,0:2>>+(-1)*<<0,0,2,1:2>>+(-1)*<<0,0,1,2:2>>
+(1)*<<3,0,1,0:3>>+(1)*<<3,0,0,1:3>>+(1)*<<0,0,2,2:3>>,
(-1)*<<0,1,0,0:1>>+(-1)*<<0,0,1,0:1>>+(-1)*<<0,0,0,1:1>>
+(-1)*<<3,0,0,0:3>>+(1)*<<0,1,1,1:3>>,(1)*<<0,1,0,0:2>>
+(1)*<<0,0,1,0:2>>+(1)*<<0,0,0,1:2>>+(-1)*<<0,1,1,0:3>>
+(-1)*<<0,1,0,1:3>>+(-1)*<<0,0,1,1:3>>])$
[2128] U=dpm_sp(S[0],S[1]);
(1)*<<0,0,3,0:1>>+(-1)*<<0,1,1,1:1>>+(1)*<<0,0,2,1:1>>
+(-1)*<<0,1,0,2:1>>+(1)*<<3,1,0,0:2>>+(1)*<<0,1,2,1:2>>
+(1)*<<0,1,1,2:2>>+(-1)*<<3,1,1,0:3>>+(1)*<<3,0,2,0:3>>
+(-1)*<<3,1,0,1:3>>+(-1)*<<0,1,3,1:3>>+(-1)*<<0,1,2,2:3>>
[2129] dpm_nf(U,S,1);
0
[2130] L=dpm_nf_and_quotient(U,S)$
[2131] Q=L[2]$
[2132] D=L[1]$
[2133] D*U-(Q[1]*S[1]+Q[2]*S[2]);
0
参照

dpm_sp, dp_ord.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.23 dp_hm, dp_ht, dp_hc, dp_rest

dp_hm(dpoly)

:: 頭単項式を取り出す.

dp_ht(dpoly)

:: 頭項を取り出す.

dp_hc(dpoly)

:: 頭係数を取り出す.

dp_rest(dpoly)

:: 頭単項式を取り除いた残りを返す.

return

dp_hm(), dp_ht(), dp_rest() : 分散表現多項式, dp_hc() : 数または多項式

dpoly

分散表現多項式

[87] dp_ord(0)$
[88] X=ptozp((a46^2+7/10*a46+7/48)*u3^4-50/27*a46^2-35/27*a46-49/216)$
[89] T=dp_ptod(X,[u3,u4,a46])$                                        
[90] dp_hm(T);                                                        
(2160)*<<4,0,2>>
[91] dp_ht(T);
(1)*<<4,0,2>>
[92] dp_hc(T);
2160
[93] dp_rest(T);
(1512)*<<4,0,1>>+(315)*<<4,0,0>>+(-4000)*<<0,0,2>>+(-2800)*<<0,0,1>>
+(-490)*<<0,0,0>>

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.24 dpm_hm, dpm_ht, dpm_hc, dpm_hp, dpm_rest

dpm_hm(dpoly)

:: 加群多項式の頭単項式を取り出す.

dpm_ht(dpoly)

:: 加群多項式の頭項を取り出す.

dpm_hc(dpoly)

:: 加群多項式の頭係数を取り出す.

dpm_hp(dpoly)

:: 加群多項式の頭位置を取り出す.

dpm_rest(dpoly)

:: 加群多項式の頭単項式を取り除いた残りを返す.

return

dp_hm(), dp_ht(), dp_rest() : 加群多項式, dp_hc() : 数または多項式

dpoly

加群多項式

[2126] dp_ord([1,0]); 
[1,0]
[2127] F=2*<<1,2,0:2>>-3*<<1,0,2:3>>+<<2,1,0:2>>;
(1)*<<2,1,0:2>>+(2)*<<1,2,0:2>>+(-3)*<<1,0,2:3>>
[2128] M=dpm_hm(F);
(1)*<<2,1,0:2>>
[2129] C=dpm_hc(F);
(1)*<<2,1,0>>
[2130] R=dpm_rest(F);
(2)*<<1,2,0:2>>+(-3)*<<1,0,2:3>>
[2131] dpm_hp(F);
2

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.25 dp_td, dp_sugar

dp_td(dpoly)

:: 頭項の全次数を返す.

dp_sugar(dpoly)

:: 多項式の sugar を返す.

return

自然数

dpoly

分散表現多項式

onoff

フラグ

[74] dp_ord(0)$
[75] X=<<1,2>>+<<0,1>>$
[76] Y=<<1,2>>+<<1,0>>$
[77] Z=X-Y;
(-1)*<<1,0>>+(1)*<<0,1>>
[78] dp_sugar(T);
3

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.26 dp_lcm

dp_lcm(dpoly1,dpoly2)

:: 最小公倍項を返す.

return

分散表現多項式

dpoly1 dpoly2

分散表現多項式

[100] dp_lcm(<<1,2,3,4,5>>,<<5,4,3,2,1>>);
(1)*<<5,4,3,4,5>>
参照

p_nf, p_nf_mod, p_true_nf, p_true_nf_mod.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.27 dp_redble

dp_redble(dpoly1,dpoly2)

:: 頭項どうしが整除可能かどうか調べる.

return

整数

dpoly1 dpoly2

分散表現多項式

[148] C;
(1)*<<1,1,1,0,0>>+(1)*<<0,1,1,1,0>>+(1)*<<1,1,0,0,1>>+(1)*<<1,0,0,1,1>>
[149] T;
(3)*<<2,1,0,0,0>>+(3)*<<1,2,0,0,0>>+(1)*<<0,3,0,0,0>>+(6)*<<1,1,1,0,0>>
[150] for ( ; T; T = dp_rest(T)) print(dp_redble(T,C));
0
0
0
1
参照

dp_red, dp_red_mod.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.28 dpm_redble

dpm_redble(dpoly1,dpoly2)

:: 頭項どうしが整除可能かどうか調べる.

return

整数

dpoly1 dpoly2

加群多項式


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.29 dp_subd

dp_subd(dpoly1,dpoly2)

:: 頭項の商単項式を返す.

return

分散表現多項式

dpoly1 dpoly2

分散表現多項式

[162] dp_subd(<<1,2,3,4,5>>,<<1,1,2,3,4>>);
(1)*<<0,1,1,1,1>>
参照

dp_red, dp_red_mod.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.30 dp_vtoe, dp_etov

dp_vtoe(vect)

:: 指数ベクトルを項に変換

dp_etov(dpoly)

:: 頭項を指数ベクトルに変換

return

dp_vtoe : 分散表現多項式, dp_etov : ベクトル

vect

ベクトル

dpoly

分散表現多項式

[211] X=<<1,2,3>>;
(1)*<<1,2,3>>
[212] V=dp_etov(X);
[ 1 2 3 ]
[213] V[2]++$
[214] Y=dp_vtoe(V);
(1)*<<1,2,4>>

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.31 dp_mbase

dp_mbase(dplist)

:: monomial 基底の計算

return

分散表現多項式のリスト

dplist

分散表現多項式のリスト

[215] K=katsura(5)$
[216] V=[u5,u4,u3,u2,u1,u0]$
[217] G0=gr(K,V,0)$
[218] H=map(dp_ptod,G0,V)$
[219] map(dp_ptod,dp_mbase(H),V)$
[u0^5,u4*u0^3,u3*u0^3,u2*u0^3,u1*u0^3,u0^4,u3^2*u0,u2*u3*u0,u1*u3*u0,
u1*u2*u0,u1^2*u0,u4*u0^2,u3*u0^2,u2*u0^2,u1*u0^2,u0^3,u3^2,u2*u3,u1*u3,
u1*u2,u1^2,u4*u0,u3*u0,u2*u0,u1*u0,u0^2,u4,u3,u2,u1,u0,1]
参照

gr, hgr, gr_mod, dgr.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.32 dp_mag

dp_mag(p)

:: 係数のビット長の和を返す

return

p

分散表現多項式

[221] X=dp_ptod((x+2*y)^10,[x,y])$
[222] dp_mag(X);
115
参照

dp_gr_flags, dp_gr_print.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.33 dp_red, dp_red_mod

dp_red(dpoly1,dpoly2,dpoly3)
dp_red_mod(dpoly1,dpoly2,dpoly3,mod)

:: 一回の簡約操作

return

リスト

dpoly1 dpoly2 dpoly3

分散表現多項式

vlist

リスト

mod

素数

[157] D=(3)*<<2,1,0,0,0>>+(3)*<<1,2,0,0,0>>+(1)*<<0,3,0,0,0>>;
(3)*<<2,1,0,0,0>>+(3)*<<1,2,0,0,0>>+(1)*<<0,3,0,0,0>>
[158] R=(6)*<<1,1,1,0,0>>;                                    
(6)*<<1,1,1,0,0>>
[159] C=12*<<1,1,1,0,0>>+(1)*<<0,1,1,1,0>>+(1)*<<1,1,0,0,1>>; 
(12)*<<1,1,1,0,0>>+(1)*<<0,1,1,1,0>>+(1)*<<1,1,0,0,1>>
[160] dp_red(D,R,C);                                         
[(6)*<<2,1,0,0,0>>+(6)*<<1,2,0,0,0>>+(2)*<<0,3,0,0,0>>,
(-1)*<<0,1,1,1,0>>+(-1)*<<1,1,0,0,1>>]
参照

dp_mod, dp_rat.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.34 dp_sp, dp_sp_mod

dp_sp(dpoly1,dpoly2)
dp_sp_mod(dpoly1,dpoly2,mod)

:: S-多項式の計算

return

分散表現多項式

dpoly1 dpoly2

分散表現多項式

mod

素数

[227] X=dp_ptod(x^2*y+x*y,[x,y]);
(1)*<<2,1>>+(1)*<<1,1>>
[228] Y=dp_ptod(x*y^2+x*y,[x,y]);
(1)*<<1,2>>+(1)*<<1,1>>
[229] dp_sp(X,Y);
(-1)*<<2,1>>+(1)*<<1,2>>
参照

dp_mod, dp_rat.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.35 dpm_sp

dpm_sp(dpoly1,dpoly2[|coef=1])

:: S-多項式の計算

return

加群多項式またはリスト

dpoly1 dpoly2

加群多項式 分散表現多項式


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.36 dpm_schreyer_base

dpm_schreyer_base(G)

:: szygy 加群のグレブナー基底の計算

return

加群多項式リスト

G

加群多項式リスト


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.37 dpm_schreyer_frame

dpm_schreyer_frame(G)

:: Schreyer フレームの計算

return

加群単項式リストのリスト

G

加群多項式リスト


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.38 dpm_set_schreyer_level

dpm_set_schreyer_level(L)

:: 指定されたレベルの Schreyer ordering の設定

return

非負整数

G

非負整数


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.39 dpm_sp_nf

dpm_sp_nf(C,Z,P,Q)

:: S-多項式を多項式配列で割った余りの計算

return

加群単項式のリスト

C

加群多項式配列

Z

整数リストの配列

P
Q

整数


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.40 p_nf, p_nf_mod, p_true_nf, p_true_nf_mod

p_nf(poly,plist,vlist,order)
p_nf_mod(poly,plist,vlist,order,mod)

:: 表現多項式の正規形を求める. (結果は定数倍されている可能性あり)

p_true_nf(poly,plist,vlist,order)
p_true_nf_mod(poly,plist,vlist,order,mod)

:: 表現多項式の正規形を求める. (真の結果を [分子, 分母] の形で返す)

return

p_nf : 多項式, p_true_nf : リスト

poly

多項式

plist vlist

リスト

order

数, リストまたは行列

mod

素数

[79] K = katsura(5)$
[80] V = [u5,u4,u3,u2,u1,u0]$
[81] G = hgr(K,V,2)$
[82] p_nf(K[1],G,V,2);
0
[83] L = p_true_nf(K[1]+1,G,V,2);
[-1503...,-1503...]
[84] L[0]/L[1];
1
参照

dp_ptod, dp_dtop, dp_ord, dp_nf, dp_nf_mod, dp_true_nf, dp_true_nf_mod, dp_weyl_nf, dp_weyl_nf_mod.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.41 p_terms

p_terms(poly,vlist,order)

:: 多項式にあらわれる単項をリストにする.

return

リスト

poly

多項式

vlist

リスト

order

数, リストまたは行列

[233] G=gr(katsura(5),[u5,u4,u3,u2,u1,u0],2)$
[234] p_terms(G[0],[u5,u4,u3,u2,u1,u0],2);
[u5,u0^31,u0^30,u0^29,u0^28,u0^27,u0^26,u0^25,u0^24,u0^23,u0^22,
u0^21,u0^20,u0^19,u0^18,u0^17,u0^16,u0^15,u0^14,u0^13,u0^12,u0^11,
u0^10,u0^9,u0^8,u0^7,u0^6,u0^5,u0^4,u0^3,u0^2,u0,1]

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.42 gb_comp

gb_comp(plist1, plist2)

:: 多項式リストが, 符号を除いて集合として等しいかどうか調べる.

return 0 または 1
plist1 plist2
[243] C=cyclic(6)$
[244] V=[c0,c1,c2,c3,c4,c5]$
[245] G0=gr(C,V,0)$
[246] G=tolex(G0,V,0,V)$
[247] GG=lex_tl(C,V,0,V,0)$
[248] gb_comp(G,GG);
1

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.43 katsura, hkatsura, cyclic, hcyclic

katsura(n)
hkatsura(n)
cyclic(n)
hcyclic(n)

:: 多項式リストの生成

return

リスト

n

整数

[74] load("katsura")$
[79] load("cyclic")$ 
[89] katsura(5);
[u0+2*u4+2*u3+2*u2+2*u1+2*u5-1,2*u4*u0-u4+2*u1*u3+u2^2+2*u5*u1,
2*u3*u0+2*u1*u4-u3+(2*u1+2*u5)*u2,2*u2*u0+2*u2*u4+(2*u1+2*u5)*u3
-u2+u1^2,2*u1*u0+(2*u3+2*u5)*u4+2*u2*u3+2*u1*u2-u1,
u0^2-u0+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]
[90] hkatsura(5);
[-t+u0+2*u4+2*u3+2*u2+2*u1+2*u5,
-u4*t+2*u4*u0+2*u1*u3+u2^2+2*u5*u1,-u3*t+2*u3*u0+2*u1*u4+(2*u1+2*u5)*u2,
-u2*t+2*u2*u0+2*u2*u4+(2*u1+2*u5)*u3+u1^2,
-u1*t+2*u1*u0+(2*u3+2*u5)*u4+2*u2*u3+2*u1*u2,
-u0*t+u0^2+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]
[91] cyclic(6);
[c5*c4*c3*c2*c1*c0-1,
((((c4+c5)*c3+c5*c4)*c2+c5*c4*c3)*c1+c5*c4*c3*c2)*c0+c5*c4*c3*c2*c1,
(((c3+c5)*c2+c5*c4)*c1+c5*c4*c3)*c0+c4*c3*c2*c1+c5*c4*c3*c2,
((c2+c5)*c1+c5*c4)*c0+c3*c2*c1+c4*c3*c2+c5*c4*c3,
(c1+c5)*c0+c2*c1+c3*c2+c4*c3+c5*c4,c0+c1+c2+c3+c4+c5]
[92] hcyclic(6);
[-c^6+c5*c4*c3*c2*c1*c0,
((((c4+c5)*c3+c5*c4)*c2+c5*c4*c3)*c1+c5*c4*c3*c2)*c0+c5*c4*c3*c2*c1,
(((c3+c5)*c2+c5*c4)*c1+c5*c4*c3)*c0+c4*c3*c2*c1+c5*c4*c3*c2,
((c2+c5)*c1+c5*c4)*c0+c3*c2*c1+c4*c3*c2+c5*c4*c3,
(c1+c5)*c0+c2*c1+c3*c2+c4*c3+c5*c4,c0+c1+c2+c3+c4+c5]
参照

dp_dtop.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.44 primadec, primedec

primadec(plist,vlist)
primedec(plist,vlist)

:: イデアルの分解

return
plist

多項式リスト

vlist

変数リスト

[84] load("primdec")$
[102] primedec([p*q*x-q^2*y^2+q^2*y,-p^2*x^2+p^2*x+p*q*y,
(q^3*y^4-2*q^3*y^3+q^3*y^2)*x-q^3*y^4+q^3*y^3,
-q^3*y^4+2*q^3*y^3+(-q^3+p*q^2)*y^2],[p,q,x,y]);
[[y,x],[y,p],[x,q],[q,p],[x-1,q],[y-1,p],[(y-1)*x-y,q*y^2-2*q*y-p+q]]
[103] primadec([x,z*y,w*y^2,w^2*y-z^3,y^3],[x,y,z,w]);
[[[x,z*y,y^2,w^2*y-z^3],[z,y,x]],[[w,x,z*y,z^3,y^3],[w,z,y,x]]]
参照

fctr, sqfr, 項順序の設定.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.45 primedec_mod

primedec_mod(plist,vlist,ord,mod,strategy)

:: イデアルの分解

return
plist

多項式リスト

vlist

変数リスト

ord

数, リストまたは行列

mod

正整数

strategy

整数

[0] load("primdec_mod")$
[246] PP444=[x^8+x^2+t,y^8+y^2+t,z^8+z^2+t]$
[247] primedec_mod(PP444,[x,y,z,t],0,2,1);
[[y+z,x+z,z^8+z^2+t],[x+y,y^2+y+z^2+z+1,z^8+z^2+t],
[y+z+1,x+z+1,z^8+z^2+t],[x+z,y^2+y+z^2+z+1,z^8+z^2+t],
[y+z,x^2+x+z^2+z+1,z^8+z^2+t],[y+z+1,x^2+x+z^2+z+1,z^8+z^2+t],
[x+z+1,y^2+y+z^2+z+1,z^8+z^2+t],[y+z+1,x+z,z^8+z^2+t],
[x+y+1,y^2+y+z^2+z+1,z^8+z^2+t],[y+z,x+z+1,z^8+z^2+t]]
[248] 
参照

modfctr, dp_gr_main, dp_gr_mod_main, dp_gr_f_main, dp_weyl_gr_main, dp_weyl_gr_mod_main, dp_weyl_gr_f_main, 項順序の設定. dp_gr_flags, dp_gr_print.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

8.10.46 bfunction, bfct, generic_bfct, ann, ann0

bfunction(f)
bfct(f)
generic_bfct(plist,vlist,dvlist,weight)

:: b 関数の計算

ann(f)
ann0(f)

:: 多項式のベキの annihilator の計算

return

多項式またはリスト

f

多項式

plist

多項式リスト

vlist dvlist

変数リスト

[0] load("bfct")$
[216] bfunction(x^3+y^3+z^3+x^2*y^2*z^2+x*y*z);
-9*s^5-63*s^4-173*s^3-233*s^2-154*s-40
[217] fctr(@);
[[-1,1],[s+2,1],[3*s+4,1],[3*s+5,1],[s+1,2]]
[218] F = [4*x^3*dt+y*z*dt+dx,x*z*dt+4*y^3*dt+dy,
x*y*dt+5*z^4*dt+dz,-x^4-z*y*x-y^4-z^5+t]$
[219] generic_bfct(F,[t,z,y,x],[dt,dz,dy,dx],[1,0,0,0]);
20000*s^10-70000*s^9+101750*s^8-79375*s^7+35768*s^6-9277*s^5
+1278*s^4-72*s^3
[220] P=x^3-y^2$
[221] ann(P);
[2*dy*x+3*dx*y^2,-3*dx*x-2*dy*y+6*s]
[222] ann0(P);
[-1,[2*dy*x+3*dx*y^2,-3*dx*x-2*dy*y-6]]
参照

Weyl 代数.


[ << ] [ < ] [] [ > ] [ >> ]

この文書は12月 30, 2024texi2html 5.0を用いて生成されました。