[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62. grobner


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.1 Introduction to grobner

grobnerは Maximaで Groebner基底を使うためのパッケージです。

以下の関数を使うには `grobner.lisp'パッケージをロードしなければいけません。

 
load(grobner);
 
demo("grobner.demo");

もしくは

 
batch("grobner.demo")

でデモを開始することができます。

デモの中の計算のいくつかは長い時間かかります。 だから、デモの出力 `grobner-demo.output'を デモファイルと同じディレクトリに用意しています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.1.1 Notes on the grobner package

パッケージは

Marek Rychlik

http://alamos.math.arizona.edu

によって書かれ、 General Public License(GPL)の条件の下、 2002-05-24にリリースされました。 (ファイル `grobner.lisp'を参照してください。) このドキュメントはファイル

`README', `grobner.lisp', `grobner.demo', `grobner-demo.output'

から

Günter Nowakによって抽出されました。

ドキュメントの改善に関する提案は maximaメーリングリスト maxima@math.utexas.eduで議論することができます。 現在、コードは若干古くなっています。 モダンな実装は以下に記載されている高速の F4アルゴリズムを使います。

 
A new efficient algorithm for computing Gröbner bases (F4) 
Jean-Charles Faugère
LIP6/CNRS Université Paris VI 
January 20, 1999

Categories:  Groebner bases · Share packages · Package grobner


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.1.2 Implementations of admissible monomial orders in grobner


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.2 Functions and Variables for grobner


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.2.1 Global switches for grobner

オブション変数: poly_monomial_order

デフォルト値: lex

このグローバルスイッチはどの単項式順序を多項式と Groebner基底計算で使うか制御します。 もし設定しないなら lexを使います。

Categories:  Package grobner

オブション変数: poly_coefficient_ring

デフォルト値: expression_ring

このスイッチは grober計算で使う多項式の係数環を示します。 もし設定しないなら maximaの 一般式環を使います。 もし望むならこの変数を ring_of_integersに設定できます。

Categories:  Package grobner

オブション変数: poly_primary_elimination_order

デフォルト値: false

消去ベース関数で消去される変数のデフォルト順序名。 設定しないなら lexを使います。

Categories:  Package grobner

オブション変数: poly_secondary_elimination_order

デフォルト値: false

消去ベース関数で保持される変数のデフォルト順序名。 設定しないなら lexを使います。

Categories:  Package grobner

オブション変数: poly_elimination_order

デフォルト値: false

消去計算で使われるデフォルト消去順序名。 設定したなら、 変数 poly_primary_elimination_orderpoly_secondary_elimination_orderの設定を上書きします。 ユーザーはこれが消去変数の数に有効な真の消去順序であることを保証しなければいけません。

Categories:  Package grobner

オブション変数: poly_return_term_list

デフォルト値: false

もし trueに設定したなら、 このパッケージの関数すべては maxima一般式ではなく、 それぞれの多項式を現在の単項式順序で並べた項のリストとして返します。

Categories:  Package grobner

オブション変数: poly_grobner_debug

デフォルト値: false

もし trueに設定したなら、 デバッグ用、トレース用出力を生成します。

Categories:  Package grobner

オブション変数: poly_grobner_algorithm

デフォルト値: buchberger

可能な値:

Groebner基底を見つけるのに使うアルゴリズム名。

Categories:  Package grobner

オブション変数: poly_top_reduction_only

デフォルト値: false

もし falseでないなら、 可能な時はいつでも、頭項簡約を使います。 頭項簡約は割り算アルゴリズムが最初の簡約後に停止することを意味します。

Categories:  Package grobner


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.2.2 Simple operators in grobner

poly_add, poly_subtract, poly_multiply, poly_exptは 多項式の算出演算子です。 これらは内部表現を使って実行されますが、 結果は maxima一般形式に変換されます。

関数: poly_add (poly1, poly2, varlist)

2つの多項式 poly1poly2を足します。

 
(%i1) poly_add(z+x^2*y,x-z,[x,y,z]);
                                    2
(%o1)                              x  y + x

Categories:  Package grobner

関数: poly_subtract (poly1, poly2, varlist)

多項式 poly1から poly2を引きます。

 
(%i1) poly_subtract(z+x^2*y,x-z,[x,y,z]);
                                      2
(%o1)                          2 z + x  y - x

Categories:  Package grobner

関数: poly_multiply (poly1, poly2, varlist)

多項式 poly1poly2の積を返します。

 
(%i2) poly_multiply(z+x^2*y,x-z,[x,y,z])-(z+x^2*y)*(x-z),expand;
(%o1)                                  0

Categories:  Package grobner

関数: poly_s_polynomial (poly1, poly2, varlist)

2つの多項式 poly1poly2シジジー (syzygy)多項式 (S多項式)を返します。

Categories:  Package grobner

関数: poly_primitive_part (poly1, varlist)

多項式 poly1を係数の GCDで割ったものを返します。

 
(%i1) poly_primitive_part(35*y+21*x,[x,y]);
(%o1)                              5 y + 3 x

Categories:  Package grobner

関数: poly_normalize (poly, varlist)

多項式 poly1を主係数で割ったものを返します。 割り算が可能であることを仮定しています。 これは体の場合には大丈夫ですが、環の場合にはいつも可能なわけではありません。

Categories:  Package grobner


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.2.3 Other functions in grobner

関数: poly_expand (poly, varlist)

この関数は多項式を内部形式にパースします。 もし polyが多項式を正確にパースしたら、それは expand(poly)と同値です。 もし表現が変数 varlistの多項式と互換性がないなら、結果はエラーです。 式が正確に内部表現にパースするかテストするのに使うことができます。 以下の例は添字付き変数と超越関数変数が許されることを例示します。

 
(%i1) poly_expand((x-y)*(y+x),[x,y]);
                                     2    2
(%o1)                               x  - y
(%i2) poly_expand((y+x)^2,[x,y]);
                                2            2
(%o2)                          y  + 2 x y + x
(%i3) poly_expand((y+x)^5,[x,y]);
                  5      4         2  3       3  2      4      5
(%o3)            y  + 5 x y  + 10 x  y  + 10 x  y  + 5 x  y + x
(%i4) poly_expand(-1-x*exp(y)+x^2/sqrt(y),[x]);
                                          2
                                  y      x
(%o4)                       - x %e  + ------- - 1
                                       sqrt(y)

(%i5) poly_expand(-1-sin(x)^2+sin(x),[sin(x)]);
                                2
(%o5)                      - sin (x) + sin(x) - 1

Categories:  Package grobner

関数: poly_expt (poly, number, varlist)

polyの正の整数 numberのべき乗を返します。 もし numberが正の整数でないならエラーが生じます。

 
(%i1) poly_expt(x-y,3,[x,y])-(x-y)^3,expand;
(%o1)                                  0

Categories:  Package grobner

関数: poly_content (poly. varlist)

poly_contentは係数の GCDを抽出します。

 
(%i1) poly_content(35*y+21*x,[x,y]);
(%o1)                                  7

Categories:  Package grobner

関数: poly_pseudo_divide (poly, polylist, varlist)

多項式 polyn個の多項式のリスト polylistで擬似的に割ります。 複数の値を返します。 一番目の値は商のリスト aです。 二番目の値は余り rです。 三番目の値は、係数環(体である必要はありません)内で polylistc*polyを割れるようなスカラ係数 cです。 最後に四番目の値は実行された簡約の回数です。 結果のオブジェクトは以下の等式を満たします:

c*poly=sum(a[i]*polylist[i],i=1...n)+r.

Categories:  Package grobner

関数: poly_exact_divide (poly1, poly2, varlist)

多項式 poly1を多項式 poly2で割ります。 余りのない厳密な割り算が可能と仮定します。 商を返します。

Categories:  Package grobner

関数: poly_normal_form (poly, polylist, varlist)

poly_normal_formは多項式の集合 polylistに関して多項式 polyの正規形を見つけます。

Categories:  Package grobner

関数: poly_buchberger_criterion (polylist, varlist)

Buchberger判定 (criterion)を使ってもし polylistが現在の項順序に関して Groebner基底なら trueを返します: Buchberger判定(criterion)は、 polylistの2つの多項式 h1h2すべてに関して、 S多項式 S(h1,h2)polylistとして0に簡約されるというものです。

Categories:  Package grobner

関数: poly_buchberger (polylist_fl varlist)

poly_buchbergerは多項式のリスト上で Buchbergerアルゴリズムを実行し、結果の Groebner基底を返します。

Categories:  Package grobner


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

62.2.4 Standard postprocessing of Groebner Bases

K[ x[1],...,x[n] ]上のイデアル Ik番目の消去イデアル I_kは イデアル intersect(I, K[ x[k+1],...,x[n] ])です。
コロンイデアル I:Jは イデアル {h|for all w in J: w*h in I}です。.
イデアル I:p^infはイデアル {h| there is a n in N: p^n*h in I}です。
イデアル I:J^infはイデアル {h| there is a n in N and a p in J: p^n*h in I}です。
The 根基イデアル sqrt(I)はイデアル {h| there is a n in N : h^n in I }です。

関数: poly_reduction (polylist, varlist)

poly_reductionは多項式のリスト polylistを簡約します。 それぞれの多項式は他の多項式で完全に簡約されます。

Categories:  Package grobner

関数: poly_minimization (polylist, varlist)

polylistと同じ単項式イデアルの最小全域である、 多項式リスト polylistの部分リストを返します。 すなわち、部分リストの中の多項式の主単項式はすべて、他の多項式の主単項式を割りません。

Categories:  Package grobner

関数: poly_normalize_list (polylist, varlist)

poly_normalize_listpoly_normalizeをリストの中の多項式それぞれに適用します。 これはリスト polylistの中のすべての多項式を主係数で割ることを意味します。

Categories:  Package grobner

関数: poly_grobner (polylist, varlist)

多項式リスト polylistで張られたイデアルの Groebner基底を返します。 グローバルフラグで影響を受けます。

Categories:  Package grobner

関数: poly_reduced_grobner (polylist, varlist)

多項式リスト polylistで張られたイデアルの簡約 Groebner基底を返します。

Categories:  Package grobner

関数: poly_depends_p (poly, var, varlist)

poly_dependsは多項式が変数 varに依存するかテストします。

関数: poly_elimination_ideal (polylist, number, varlist)

poly_elimination_idealは、 (必ずしも Groebner基底である必要はない)生成多項式のリストとして指定されたイデアルの number番目の消去イデアルの Groebner基底を返します。

Categories:  Package grobner

関数: poly_colon_ideal (polylist1, polylist2, varlist)

コロンイデアル

I(polylist1):I(polylist2)

の簡約 Groebner基底を返します。

ここで polylist1polylist2は 2つの多項式リストです。

Categories:  Package grobner

関数: poly_ideal_intersection (polylist1, polylist2, varlist)

poly_ideal_intersectionは 2つのイデアルの交わりです。

Categories:  Package grobner

関数: poly_lcm (poly1, poly2, varlist)

poly1poly2の最小公倍数(式)を返します。

Categories:  Package grobner

関数: poly_gcd (poly1, poly2, varlist)

poly1poly2の最大公約数(式)を返します。

ezgcd, gcd, gcdex, gcdivideも参照してください。

例:

 
(%i1) p1:6*x^3+19*x^2+19*x+6; 
                        3       2
(%o1)                6 x  + 19 x  + 19 x + 6
(%i2) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x;
                  5       4       3       2
(%o2)          6 x  + 13 x  + 12 x  + 13 x  + 6 x
(%i3) poly_gcd(p1, p2, [x]);
                            2
(%o3)                    6 x  + 13 x + 6

Categories:  Package grobner

関数: poly_grobner_equal (polylist1, polylist2, varlist)

poly_grobner_equalは 2つの Groebner基底が同じイデアルを生成するかテストします。 もし Groebner基底と仮定された2つの多項式リスト polylist1polylist2が同じイデアルを生成するなら、 trueを返します。 そうでないなら falseを返します。 これは、一番目の基底のすべての多項式が二番目の基底を法として 0に簡約されるかとその逆をチェックすることと同値です。 以下の例では、一番目のリストが Groebner基底でないので結果が falseであることに注意してください。

 
(%i1) poly_grobner_equal([y+x,x-y],[x,y],[x,y]);
(%o1)                         false

Categories:  Package grobner

関数: poly_grobner_subsetp (polylist1, polylist2, varlist)

poly_grobner_subsetppolylist1が生成するイデアルが polylist2が生成するイデアルに含まれるかテストします。 このテストが常に成功するには polylist2が Groebner基底でなければいけません。

関数: poly_grobner_member (poly, polylist, varlist)

もし多項式 polyが Groebner基底であると仮定された多項式リスト polylistが生成するイデアルに属するなら、 trueを返します。 そうでないなら falseを返します。

poly_grobner_memberは多項式が Groebner基底であると仮定された多項式のリストが生成するイデアルに属するかテストします。 normal_formが 0と同値です。

Categories:  Package grobner

関数: poly_ideal_saturation1 (polylist, poly, varlist)

イデアル

I(polylist):poly^inf の saturationの簡約 Groebner基底を返します。

幾何学的に、代数的閉体上で、これは polyの多様体上で恒等的に 0とならない polylistが生成するイデアルの中の多項式の集合です。

Categories:  Package grobner

関数: poly_ideal_saturation (polylist1, polylist2, varlist)

イデアル

I(polylist1):I(polylist2)^inf の saturationの簡約 Groebner基底を返します。

幾何学的に、代数的閉体上で、これは polylist2の多様体上で恒等的に 0とならない polylist1が生成するイデアルの中の多項式の集合です。

Categories:  Package grobner

関数: poly_ideal_polysaturation1 (polylist1, polylist2, varlist)

polylist2は 2個の多項式のリスト [poly1,...,polyn]です。 多項式リスト polylist1が生成するイデアルの多項式リスト polylist2の多項式に関する連続 saturationの列によって得られるイデアル

I(polylist):poly1^inf:...:polyn^inf

の簡約 Groebner基底を返します。

Categories:  Package grobner

関数: poly_ideal_polysaturation (polylist, polylistlist, varlist)

polylistlistは多項式リスト n個のリスト [polylist1,...,polylistn]です。 イデアル

I(polylist):I(polylist_1)^inf:...:I(polylist_n)^inf の saturationの簡約 Groebner基底を返します。

Categories:  Package grobner

関数: poly_saturation_extension (poly, polylist, varlist1, varlist2)

poly_saturation_extensionは有名な Rabinowitzのトリックを実装します。

Categories:  Package grobner

関数: poly_polysaturation_extension (poly, polylist, varlist1, varlist2)

Categories:  Package grobner


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by 市川雄二 on June, 5 2017 using texi2html 1.76.