dp_gr_maindp_gr_main(f) は, f のグレブナ基底を計算する.
グレブナ基底は順序を変えるとその形が変わる. asir ではいままで順序の指定方法が
系統だっていなかった.
dp_gr_main の新しいインタフェースでは順序をある文法に従い指定する.
order : '[' orderElement { ',' orderElement } ']'
orderElement : weightVec | builtinOrder
weightVec : '[' weightElement { ',' weightElement } ']'
builtiniOrder : '[' orderName ',' setOfVariables ']'
weightElement : NUMBER | setOfVariables ',' NUMBER
setOfVariables: V | range(V,V)
orderName : @grlex | @glex | @lex
ここで V は 変数名, NUMBER は整数をあわらす.
例1: v=[x,y,z,u,v], order=[[x,10,y,5,z,1],[@grlex,range(x,v)]]
は x,y,z がそれぞれ weight 10, 5, 1 をもつ
順序で比較したあと, [x,y,z,u,v] についての
graded reverse lexicographic order を tie-breaker として用いることを意味する.
参考書: B.Sturmfels: Gr\"obner Bases and Convex Polytopes (1995).
M.Saito, B.Sturmfels, N.Takayama:
Gr\"obner Deformations of Hypergeometric Differential Equations (2000).
[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
setOfVariablesの表現のために range オブジェクトが導入された.
Go to the first, previous, next, last section, table of contents.