[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
dp_gr_main
:: dp_gr_main の新しいインタフェース.
リスト (グレブナ基底. 再帰表現多項式か分散表現多項式のリスト)
リスト (入力多項式系. 再帰表現多項式か分散表現多項式のリスト)
リスト (変数のリスト)
リスト (順序をあらわすリスト)
0 か1 (homogenization をするか)
順序を matrix で表現する場合 (cf. dp_ord).
???
Sugar strategy を適用するときの weight vector. 全ての要素は非負.
dp_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 オブジェクトが導入された.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
dp_weyl_gr_main
:: dp_weyl_gr_main の新しいインタフェース. dp_gr_main と同じ形式である.
リスト (グレブナ基底. 再帰表現多項式か分散表現多項式のリスト)
リスト (入力多項式系. 再帰表現多項式か分散表現多項式のリスト)
リスト (変数のリスト)
リスト (順序をあらわすリスト)
0 か1 (homogenization をするか). [テストまだ]
順序を matrix で表現する場合 (cf. dp_ord). [テストまだ]
???
Sugar strategy を適用するときの weight vector. 全ての要素は非負. [テストまだ]
dp_weyl_gr_main(f)
は, f のグレブナ基底を計算する.
グレブナ基底は順序を変えるとその形が変わる. asir ではいままで順序の指定方法が
系統だっていなかった.
dp_weyl_gr_main の新しいインタフェースでは順序をある文法に従い指定する.
指定方法については dp_gr_main のマニュアルを参照.
[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 ] ...
ChangeLog
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
dp_initial_term
:: dp_initial_term は与えられた weight に対する先頭項の和を戻す.
分散表現多項式または分散表現多項式のリスト.
分散表現多項式か分散表現多項式のリスト.
リスト (変数のリスト)
リスト (順序をあらわすリスト)
[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
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
dp_order
:: dp_order は与えられた weight に対する次数の最大値を戻す.
数か数のリスト
分散表現多項式か分散表現多項式のリスト.
リスト (変数のリスト)
リスト (順序をあらわすリスト)
[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
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
nd_sba
, nd_sba_f4
:: signature based algorithm によるグレブナー基底の計算
多項式リスト
項順序型
変数リスト
多項式リスト
nd_sba
は signature 付き Buchberger algorithm を実行する.
引数, オプション, dp_gr_flags()
で設定されるスイッチは nd_gr
と同一である.
nd_sba_f4
は nd_sba
において, 複数のS-ペアをまとめて簡約できるような
reducer を symbolic preprocessing で集め, 行列上で簡約操作を行う実装である.
しかし, 通常の F4 と異なり, SBA の実行は S-ペアを選ぶ順序に鋭敏であり,
どのような基準で複数のS-ペアを選ぶかについて実験中である.
[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 ユーザーズマニュアルの「グレブナ基底の計算」
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
nd_gr
, nd_gr_trace
(加群):: 部分加群のグレブナー基底の計算
リストのリスト
[IsPOT,Ord] なるリスト
リストのリスト
[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}
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
nd_gr
, nd_gr_trace
(option):: グレブナー基底計算に関する種々のオプションの説明
key=value なるオプション設定
オプションにより異なる
value が 0 でないとき, グレブナー基底の計算経過情報を出力する.
value が 0 でないとき, 計算されたグレブナー基底に対する syzygy の生成系を出力する.
value が 0 でないとき, 最終ステップで相互簡約を行わない.
グレブナー基底
中間基底が斉次化されている場合 1, そうでない場合 0.
全中間基底に対する計算経過情報
相互簡約に対する計算経過情報
簡約グレブナー基底の各要素の, 全中間基底のにおけるインデックス
各入力多項式をグレブナー基底で簡約して剰余 0 を得るまでの計算経過情報 (gensyz が指定された場合)
簡約グレブナー基底に対する S 多項式を簡約して剰余 0 を得るまでの計算経過情報 (syzygy 加群の生成系の要素のみ; gensyz が指定された場合)
[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月 16, 2025にtexi2html 5.0を用いて生成されました。