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

2.3 グレブナー基底


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

2.3.1 dp_gr_main

dp_gr_main(f | v=vv, order=oo, homo=n, matrix=m, block=b, sugarweight=sw)

:: dp_gr_main の新しいインタフェース.

return

リスト (グレブナ基底. 再帰表現多項式か分散表現多項式のリスト)

f

リスト (入力多項式系. 再帰表現多項式か分散表現多項式のリスト)

vv

リスト (変数のリスト)

oo

リスト (順序をあらわすリスト)

n

0 か1 (homogenization をするか)

m

順序を matrix で表現する場合 (cf. dp_ord).

b

???

sw

Sugar strategy を適用するときの weight vector. 全ての要素は非負.

[218] load("cyclic");
[219] V=vars(cyclic(4));
[c0,c1,c2,c3]
[220]dp_gr_main(cyclic(4) | v=V, order=[[c0,10,c1,1],[c2,5],[@grlex,range(c0,c3)]]);
[ 10 1 0 0 ]
[ 0 0 5 0 ]
[ R R R R ]
[(-c3^6+c3^2)*c2^2+c3^4-1,c3^2*c2^3+c3^3*c2^2-c2-c3,
 (c3^4-1)*c1+c3^5-c3,(c2-c3)*c1+c3^4*c2^2+c3*c2-2*c3^2,-c1^2-2*c3*c1-c3^2,
 c0+c1+c2+c3]

[1151]  F=map(dp_ptod,katsura(4), vars(katsura(4)));
[(1)*<<1,0,0,0,0>>+(2)*<<0,1,0,0,0>>+ ... ]
[1152] dp_gr_main(F | order=[[range(x0,x3),1]]);
[ 1 1 1 1 0 ]
[ R R R R R ]
[(47774098944)*<<0,0,0,0,13>>+ ... ]

[1153] Opt=[["v",[x,y]], ["order",[[x,5,y,1]]]];
[[v,[x,y]],[order,[[x,5,y,1]]]]
[1154]  dp_gr_main([x^2+y^2-1,x*y-1] | option_list=Opt);
[ 5 1 ]
[ R R ]
[-y^4+y^2-1,x+y^3-y]

ChangeLog


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

2.3.2 dp_weyl_gr_main

dp_weyl_gr_main(f | v=vv, order=oo, homo=n, matrix=m, block=b, sugarweight=sw)

:: dp_weyl_gr_main の新しいインタフェース. dp_gr_main と同じ形式である.

return

リスト (グレブナ基底. 再帰表現多項式か分散表現多項式のリスト)

f

リスト (入力多項式系. 再帰表現多項式か分散表現多項式のリスト)

vv

リスト (変数のリスト)

oo

リスト (順序をあらわすリスト)

n

0 か1 (homogenization をするか). [テストまだ]

m

順序を matrix で表現する場合 (cf. dp_ord). [テストまだ]

b

???

sw

Sugar strategy を適用するときの weight vector. 全ての要素は非負. [テストまだ]

[1220] F=sm1.gkz([ [[1,1,1,1],[0,1,3,4]], [0,0]]);  /* Command in asir-contrib*/
[[x4*dx4+x3*dx3+x2*dx2+x1*dx1,4*x4*dx4+3*x3*dx3+x2*dx2,-dx1*dx4+dx2*dx3,-dx2^2*dx4+dx1*dx3^2,dx1^2*dx3-dx2^3,-dx2*dx4^2+dx3^3],[x1,x2,x3,x4]]
[1221] V=[x1,x2,x3,x4,dx1,dx2,dx3,dx4]$
[1222] dp_weyl_gr_main(F[0] | v=V, order=[[dx1,1,dx2,1,dx3,1,dx4,1]]);
...
[1238] FF=map(dp_ptod,F[0],V);
[(1)*<<1,0,0,0,1,0,0,0>>+(1)*<<0,1,0,0,0,1,0,0>>+(1)*<<0,0,1,0,0,0,1,0>>+(1)*<<0,0,0,1,0,0,0,1>>,(1)*<<0,1,0,0,0,1,0,0>>+(3)*<<0,0,1,0,0,0,1,0>>+(4)*<<0,0,0,1,0,0,0,1>>,0,0,0,0]

[1244] FF=map(dp_ptod,F[0],V);
[(1)*<<1,0,0,0,1,0,0,0>>+(1)*<<0,1,0,0,0,1,0,0>>+(1)*<<0,0,1,0,0,0,1,0>>+(1)*<<0,0,0,1,0,0,0,1>>,(1)*<<0,1,0,0,0,1,0,0>>+(3)*<<0,0,1,0,0,0,1,0>>+(4)*<<0,0,0,1,0,0,0,1>>,(1)*<<0,0,0,0,0,1,1,0>>+(-1)*<<0,0,0,0,1,0,0,1>>,(1)*<<0,0,0,0,1,0,2,0>>+(-1)*<<0,0,0,0,0,2,0,1>>,(-1)*<<0,0,0,0,0,3,0,0>>+(1)*<<0,0,0,0,2,0,1,0>>,(1)*<<0,0,0,0,0,0,3,0>>+(-1)*<<0,0,0,0,0,1,0,2>>]

dp_weyl_gr_main(FF | v=V, order=[[0,0,0,0,1,1,1,1]]);

[1246] dp_weyl_gr_main(FF | v=V, order=[[dx1,1,dx2,1,dx3,1,dx4,1]]);
[ 0 0 0 0 1 1 1 1 ]
[ R R R R R R R R ]
 ...

参照

dp_gr_main

ChangeLog


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

2.3.3 dp_initial_term

dp_initial_term(f | v=vv, order=oo)

:: dp_initial_term は与えられた weight に対する先頭項の和を戻す.

return

分散表現多項式または分散表現多項式のリスト.

f

分散表現多項式か分散表現多項式のリスト.

vv

リスト (変数のリスト)

oo

リスト (順序をあらわすリスト)

[1220] F=<<2,0,0>>+<<1,1,0>>+<<0,0,1>>;
(1)*<<2,0,0>>+(1)*<<1,1,0>>+(1)*<<0,0,1>>
[1220] dp_initial_term(F | order=[[1,1,1]]);
[ 1 1 1 ]
[ R R R ]
(1)*<<2,0,0>>+(1)*<<1,1,0>>
[1221] dp_initial_term(F | v=[x,y,z], order=[[x,1]]);
[ 1 0 0 ]
[ R R R ]
(1)*<<2,0,0>>
参照

dp_gr_main, dp_weyl_gr_main, dp_order, @ref{dp_hm}

ChangeLog


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

2.3.4 dp_order

dp_order(f | v=vv, order=oo)

:: dp_order は与えられた weight に対する次数の最大値を戻す.

return

数か数のリスト

f

分散表現多項式か分散表現多項式のリスト.

vv

リスト (変数のリスト)

oo

リスト (順序をあらわすリスト)

[1220] F=<<2,0,0>>+<<1,1,0>>+<<0,0,1>>;
(1)*<<2,0,0>>+(1)*<<1,1,0>>+(1)*<<0,0,1>>
[1222] dp_order(F | order=[[1,1,1]]);
[ 1 1 1 ]
[ R R R ]
2
[1223] dp_order(F | v=[x,y,z], order=[[x,1]]);
[ 1 0 0 ]
[ R R R ]
参照

dp_gr_main, dp_weyl_gr_main, dp_initial_term, @ref{dp_hm}

ChangeLog


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

2.3.5 nd_sba, nd_sba_f4

nd_sba(gen,vars,char,ord)
nd_sba_f4(gen,vars,char,ord)

:: signature based algorithm によるグレブナー基底の計算

gen

多項式リスト

ord

項順序型

var

変数リスト

return

多項式リスト

[0] load("katsura")$
[4] F=katsura(10)$
[5] V=[u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10]$
[6] cputime(1)$
1.7e-05sec(1.502e-05sec)
[7] G=nd_gr(F,V,31991,0)$
83.04sec(83.2sec)
[8] Gs=nd_sba(F,V,31991,0)$
12.9sec(12.92sec)
[9] G4=nd_f4(F,V,31991,0)$ 
12.56sec(12.58sec)
[10] G4s=nd_sba_f4(F,V,31991,0)$
5.534sec(5.538sec)
参照

Risa/Asir ユーザーズマニュアルの「グレブナ基底の計算」


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

2.3.6 nd_gr, nd_gr_trace (加群)

nd_gr(gen,vars,char,ord)
nd_gr_trace(gen,vars,homo,char,ord)
nd_weyl_gr(gen,vars,char,ord)
nd_weyl_gr_trace(gen,vars,homo,char,ord)

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

gen

リストのリスト

ord

[IsPOT,Ord] なるリスト

return

リストのリスト

[0] Gen=[[x,y,z],[y^2+x,x^2,z],[y^2,z^3+x,x+z]];
[[x,y,z],[x+y^2,x^2,z],[y^2,x+z^3,x+z]]
[1]  nd_gr(Gen,[x,y,z],0,[0,0]);
[[x,y,z],[y^2,x^2-y,0],[y^2,x+z^3,x+z],[y^3+z^3*y^2,y^3*x-y^3,
-x^3-z*x^2+(z*y^2+y)*x-z*y^2+z*y],[0,0,x^4+z*x^3+(-z*y^2-y)*x^2
+(-y^3+z*y^2-z*y)*x+z^4*y^2]]
参照

@ref{nd_gr}, @ref{nd_gr_trace}


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

2.3.7 nd_gr, nd_gr_trace (option)

nd_gr(...[|opt,opt,…])
nd_gr_trace(...[|opt,opt,…])
nd_weyl_gr(...[|opt,opt,…])
nd_weyl_gr_trace(...[|opt,opt,…])

:: グレブナー基底計算に関する種々のオプションの説明

opt

key=value なるオプション設定

return

オプションにより異なる

[0] C=[c3*c2*c1*c0-1,((c2+c3)*c1+c3*c2)*c0+c3*c2*c1,...]
[1] D=nd_gr_trace(C,[c0,c1,c2,c3,c4],0,1,0|gentrace=1,gensyz=1)$
[2] D[0];
[c0+c1+c2+c3,-c1^2-2*c3*c1-c3^2,...]
[3] D[2];
[[[0,0,1],[1,1,1],[2,2,1],[3,3,1]],[4,[[1,2,(1)*<<0,0,0,0>>,1],...]
[4] D[6];
[[-1,[[1,0,(1)*<<0,0,2,4>>,1],[1,6,(-1)*<<1,0,0,0>>,1],...]
参照

@ref{nd_gr}, @ref{nd_gr_trace}


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

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