Groebner[HilbertSeries] - Hilbert 級数の計算
Groebner[HilbertPolynomial] - Hilbert 多項式の計算
|
使い方
|
|
HilbertSeries(J, X, s, characteristic=p)
HilbertPolynomial(J, X, s, characteristic=p)
|
|
パラメータ
|
|
J
|
-
|
多項式のリストか集合、あるいは PolynomialIdeal
|
X
|
-
|
(オプション) 変数のリストか集合、単項式順序の短い記述か一般的な記述
|
s
|
-
|
(オプション) この級数や多項式を表現するのに使う変数
|
p
|
-
|
(オプション) 標数
|
|
|
|
|
説明
|
|
•
|
非可換多項式の場合、計算結果のこれらの不変量は J によって生成される左イデアルのものです。
|
•
|
その系の変数はオプションとして第 2 引数 X を指定することによって特定することができます。もし X が 単項式順序の短い記述 であったときは J の X に関する Groebner 基底が計算されます。特に指定がないとき X は、J が多項式のリストか集合であったときは出てくる全ての不定元のうち RootOf や根号の中に入っていないものとし、また、J がイデアルであった時は PolynomialIdeals[IdealInfo][Variables](J) として計算されます。
|
•
|
Hilbert 級数、あるいは多項式で用いられる変数は第 3 引数 s を入力することで指定できます。これが省略された場合はグローバルな名前 'Z' が使用されます。
|
•
|
HilbertSeries とHilbertPolynomial のアルゴリズムは J の全次数順序の Groebner 基底の頭単項式を用います。(プログラムの一部として) この機能に直接使うためには J を頭単項式の集合とします。コマンドはそのような場合を検知し、計算にかかる無駄を最小限に抑えます。
|
•
|
hilbertseries コマンドと hilbertpoly コマンドは同じ働きをしますが、今後リリースされる Maple ではサポートされない可能性がありますのでご注意ください。
|
|
|
例
|
|
>
|
F := [x^31-x^6-x-y, x^8-z, x^10-t];
|
| (4.1) |
>
|
h := HilbertSeries(F, {x,y,z,t}, s);
|
| (4.2) |
>
|
HilbertPolynomial(F, {x,y,z,t}, n);
|
| (4.3) |
| (4.4) |
与えられた系 G がホロノミー系ではない場合、 Hilbert 次元は変数 (x, y) の数である 2 以上であるといえます。
>
|
A := diff_algebra([Dx,x], [Dy,y], polynom={x,y}):
|
>
|
T := MonomialOrder(A, tdeg(Dx,Dy,x,y)):
|
>
|
F := [p*Dx+diff(p,x), p*Dy+diff(p,y)];
|
| (4.5) |
| (4.6) |
>
|
HilbertDimension(F, T);
|
| (4.7) |
>
|
p := HilbertPolynomial(F, T, n);
|
| (4.8) |
>
|
h := HilbertSeries(F, T, s);
|
| (4.9) |
| (4.10) |
>
|
series(add(eval(p,n=i), i=0..6), s);
|
| (4.11) |
x, y のいづれも消去できません。
>
|
remove(has, Basis(F, MonomialOrder(A, lexdeg([x],[Dx,Dy,y]))), x);
|
| (4.12) |
>
|
remove(has, Basis(F, MonomialOrder(A, lexdeg([y],[Dx,Dy,x]))), y);
|
| (4.13) |
| (4.14) |
>
|
(x^2-x+y)*diff(f,x,y)+2*(2*x-1)*diff(f,y);
|
| (4.15) |
多項式を追加するとこの系はホロノミーになります。このとき Hilbert 次元は 2 になり、x, y どちらも消去することができるようになります。
>
|
F2 := [op(F), (x^2-x+y)*Dx*Dy+2*(2*x-1)*Dy];
|
| (4.16) |
>
|
HilbertDimension(F2, T);
|
| (4.17) |
>
|
HilbertPolynomial(F2, T, n);
|
| (4.18) |
>
|
h := HilbertSeries(F2, T, s);
|
| (4.19) |
| (4.20) |
>
|
remove(has, Basis(F2, MonomialOrder(A, lexdeg([x],[Dx,Dy,y]))), x);
|
| (4.21) |
>
|
remove(has, Basis(F2, MonomialOrder(A, lexdeg([y],[Dx,Dy,x]))), y);
|
| (4.22) |
|
|