=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/parts/groebner.texi,v retrieving revision 1.8 retrieving revision 1.13 diff -u -p -r1.8 -r1.13 --- OpenXM/src/asir-doc/parts/groebner.texi 2003/04/21 08:30:01 1.8 +++ OpenXM/src/asir-doc/parts/groebner.texi 2004/09/13 09:23:30 1.13 @@ -1,4 +1,4 @@ -@comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.7 2003/04/21 03:07:32 noro Exp $ +@comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.12 2003/12/27 11:52:07 takayama Exp $ \BJP @node グレブナ基底の計算,,, Top @chapter グレブナ基底の計算 @@ -15,6 +15,7 @@ * 基本的な函数:: * 計算および表示の制御:: * 項順序の設定:: +* Weight:: * 有理式を係数とするグレブナ基底計算:: * 基底変換:: * Weyl 代数:: @@ -26,6 +27,7 @@ * Fundamental functions:: * Controlling Groebner basis computations:: * Setting term orderings:: +* Weight:: * Groebner basis computation with rational function coefficients:: * Change of ordering:: * Weyl algebra:: @@ -1055,6 +1057,84 @@ beforehand, and some heuristic trial may be inevitable \E \BJP +@node Weight ,,, グレブナ基底の計算 +@section Weight +\E +\BEG +@node Weight,,, Groebner basis computation +@section Weight +\E +\BJP +前節で紹介した項順序は, 各変数に weight (重み) を設定することで +より一般的なものとなる. +\E +\BEG +Term orders introduced in the previous section can be generalized +by setting a weight for each variable. +\E +@example +[0] dp_td(<<1,1,1>>); +3 +[1] dp_set_weight([1,2,3])$ +[2] dp_td(<<1,1,1>>); +6 +@end example +\BJP +単項式の全次数を計算する際, デフォルトでは +各変数の指数の和を全次数とする. これは各変数の weight を 1 と +考えていることに相当する. この例では, 第一, 第二, 第三変数の +weight をそれぞれ 1,2,3 と指定している. このため, @code{<<1,1,1>>} +の全次数 (以下ではこれを単項式の weight と呼ぶ) が @code{1*1+1*2+1*3=6} となる. +weight を設定することで, 同じ項順序型のもとで異なる項順序が定義できる. +例えば, weight をうまく設定することで, 多項式を weighted homogeneous +にすることができる場合がある. +\E +\BEG +By default, the total degree of a monomial is equal to +the sum of all exponents. This means that the weight for each variable +is set to 1. +In this example, the weights for the first, the second and the third +variable are set to 1, 2 and 3 respectively. +Therefore the total degree of @code{<<1,1,1>>} under this weight, +which is called the weight of the monomial, is @code{1*1+1*2+1*3=6}. +By setting weights, different term orders can be set under a term +order type. For example, a polynomial can be made weighted homogeneous +by setting an appropriate weight. +\E + +\BJP +各変数に対する weight をまとめたものを weight vector と呼ぶ. +すべての成分が正であり, グレブナ基底計算において, 全次数の +代わりに用いられるものを特に sugar weight と呼ぶことにする. +sugar strategy において, 全次数の代わりに使われるからである. +一方で, 各成分が必ずしも正とは限らない weight vector は, +sugar weight として設定することはできないが, 項順序の一般化には +有用である. これらは, 行列による項順序の設定にすでに現れて +いる. すなわち, 項順序を定義する行列の各行が, 一つの weight vector +と見なされる. また, ブロック順序は, 各ブロックの +変数に対応する成分のみ 1 で他は 0 の weight vector による比較を +最初に行ってから, 各ブロック毎の tie breaking を行うことに相当する. +\E + +\BEG +A list of weights for all variables is called a weight vector. +A weight vector is called a sugar weight vector if +its elements are all positive and it is used for computing +a weighted total degree of a monomial, because such a weight +is used instead of total degree in sugar strategy. +On the other hand, a weight vector whose elements are not necessarily +positive cannot be set as a sugar weight, but it is useful for +generalizing term order. In fact, such a weight vector already +appeared in a matrix order. That is, each row of a matrix defining +a term order is regarded as a weight vector. A block order +is also considered as a refinement of comparison by weight vectors. +It compares two terms by using a weight vector whose elements +corresponding to variables in a block is 1 and 0 otherwise, +then it applies a tie breaker. + +\E + +\BJP @node 有理式を係数とするグレブナ基底計算,,, グレブナ基底の計算 @section 有理式を係数とするグレブナ基底計算 \E @@ -1354,7 +1434,7 @@ Computation of the global b function is implemented as * lex_hensel_gsl tolex_gsl tolex_gsl_d:: * primadec primedec:: * primedec_mod:: -* bfunction generic_bfct:: +* bfunction bfct generic_bfct ann ann0:: @end menu \JP @node gr hgr gr_mod,,, グレブナ基底に関する函数 @@ -1412,6 +1492,14 @@ strategy による計算, @code{hgr()} は trace @item @code{dgr()} で表示される時間は, この函数が実行されているプロセスでの CPU 時間であり, この函数の場合はほとんど通信のための時間である. +@item +多項式リスト @var{plist} の要素が分散表現多項式の場合は +結果も分散表現多項式のリストである. +この場合, 引数の分散多項式は与えられた順序に従い @code{dp_sort} で +ソートされてから計算される. +多項式リストの要素が分散表現多項式の場合も +変数の数分の不定元のリストを @var{vlist} 引数として与えないといけない +(ダミー). \E \BEG @item @@ -1440,6 +1528,13 @@ Therefore this function is useful to reduce the actual The CPU time shown after an exection of @code{dgr()} indicates that of the master process, and most of the time corresponds to the time for communication. +@item +When the elements of @var{plist} are distributed polynomials, +the result is also a list of distributed polynomials. +In this case, firstly the elements of @var{plist} is sorted by @code{dp_sort} +and the Grobner basis computation is started. +Variables must be given in @var{vlist} even in this case +(these variables are dummy). \E @end itemize @@ -3918,21 +4013,32 @@ execute @code{dp_gr_print(2)} in advance. @fref{dp_gr_flags dp_gr_print}. @end table -\JP @node bfunction generic_bfct,,, グレブナ基底に関する函数 -\EG @node bfunction generic_bfct,,, Functions for Groebner basis computation -@subsection @code{bfunction}, @code{generic_bfct} +\JP @node bfunction bfct generic_bfct ann ann0,,, グレブナ基底に関する函数 +\EG @node bfunction bfct generic_bfct ann ann0,,, Functions for Groebner basis computation +@subsection @code{bfunction}, @code{bfct}, @code{generic_bfct}, @code{ann}, @code{ann0} @findex bfunction +@findex bfct @findex generic_bfct +@findex ann +@findex ann0 @table @t @item bfunction(@var{f}) -@item generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight}) -\JP :: b 関数の計算 -\EG :: Computes the global b function of a polynomial or an ideal +@itemx bfct(@var{f}) +@itemx generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight}) +\JP :: @var{b} 関数の計算 +\EG :: Computes the global @var{b} function of a polynomial or an ideal +@item ann(@var{f}) +@itemx ann0(@var{f}) +\JP :: 多項式のベキの annihilator の計算 +\EG :: Computes the annihilator of a power of polynomial @end table + @table @var @item return -@itemx f +\JP 多項式またはリスト +\EG polynomial or list +@item f \JP 多項式 \EG polynomial @item plist @@ -3946,29 +4052,44 @@ execute @code{dp_gr_print(2)} in advance. @itemize @bullet \BJP @item @samp{bfct} で定義されている. -@item @code{bfunction(@var{f})} は多項式 @var{f} の global b 関数 @code{b(s)} を +@item @code{bfunction(@var{f})}, @code{bfct(@var{f})} は多項式 @var{f} の global @var{b} 関数 @code{b(s)} を 計算する. @code{b(s)} は, Weyl 代数 @code{D} 上の一変数多項式環 @code{D[s]} の元 @code{P(x,s)} が存在して, @code{P(x,s)f^(s+1)=b(s)f^s} を満たすような 多項式 @code{b(s)} の中で, 次数が最も低いものである. @item @code{generic_bfct(@var{f},@var{vlist},@var{dvlist},@var{weight})} は, @var{plist} で生成される @code{D} の左イデアル @code{I} の, -ウェイト @var{weight} に関する global b 関数を計算する. +ウェイト @var{weight} に関する global @var{b} 関数を計算する. @var{vlist} は @code{x}-変数, @var{vlist} は対応する @code{D}-変数 を順に並べる. +@item @code{bfunction} と @code{bfct} では用いているアルゴリズムが +異なる. どちらが高速かは入力による. +@item @code{ann(@var{f})} は, @code{@var{f}^s} の annihilator ideal +の生成系を返す. @code{ann(@var{f})} は, @code{[@var{a},@var{list}]} +なるリストを返す. ここで, @var{a} は @var{f} の @var{b} 関数の最小整数根, +@var{list} は @code{ann(@var{f})} の結果の @code{s}$ に, @var{a} を +代入したものである. @item 詳細については, [Saito,Sturmfels,Takayama] を見よ. \E \BEG @item These functions are defined in @samp{bfct}. -@item @code{bfunction(@var{f})} computes the global b-function @code{b(s)} of +@item @code{bfunction(@var{f})} and @code{bfct(@var{f})} compute the global @var{b}-function @code{b(s)} of a polynomial @var{f}. @code{b(s)} is a polynomial of the minimal degree such that there exists @code{P(x,s)} in D[s], which is a polynomial ring over Weyl algebra @code{D}, and @code{P(x,s)f^(s+1)=b(s)f^s} holds. @item @code{generic_bfct(@var{f},@var{vlist},@var{dvlist},@var{weight})} -computes the global b-function of a left ideal @code{I} in @code{D} +computes the global @var{b}-function of a left ideal @code{I} in @code{D} generated by @var{plist}, with respect to @var{weight}. @var{vlist} is the list of @code{x}-variables, @var{vlist} is the list of corresponding @code{D}-variables. +@item @code{bfunction(@var{f})} and @code{bfct(@var{f})} implement +different algorithms and the efficiency depends on inputs. +@item @code{ann(@var{f})} returns the generator set of the annihilator +ideal of @code{@var{f}^s}. +@code{ann(@var{f})} returns a list @code{[@var{a},@var{list}]}, +where @var{a} is the minimal integral root of the global @var{b}-function +of @var{f}, and @var{list} is a list of polynomials obtained by +substituting @code{s} in @code{ann(@var{f})} with @var{a}. @item See [Saito,Sturmfels,Takayama] for the details. \E @end itemize @@ -3984,6 +4105,11 @@ 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]] @end example @table @t