next up previous
Next: 例題:楕円曲線の加法 Up: グレブナ基底 Previous: グレブナ基底

グレブナ基底 (groebner::gbasis)

グレブナ基底を求めるには、groebner::gbasis を使います。
f1:=poly(x-t^2-t^4,[t,x,y]);
f2:=poly(y-t^3-t^5,[t,x,y]);
groebner::gbasis([f1,f2]);

上の $ f1,f2$ を定義するところで、$ [t,x,y]$ の部分は monomial order を 決定する際にも用いられています。 同じものを何度もタイプするのは面倒ですから、

S:=[t,x,y];
f1:=poly(x-t^2-t^4,S);
f2:=poly(y-t^3-t^5,S);
groebner::gbasis([f1,f2]);
などとしても良いでしょう。

なお、次のようにして monomial order を変更することもできます。

S:=[t,x,y];
f1:=poly(x-t^2-t^4,S);
f2:=poly(y-t^3-t^5,S);
groebner::gbasis([f1,f2]);    // t>x>y の順序でグレブナ基底を計算。
T:=[x,y,t];
groebner::gbasis([poly(f1,T),poly(f2,T)]);//x>y>tの順序でグレブナ基底を計算。

順序を指定した方が確実でしょう。

groebner::gbasis([f1,f2],LexOrder); (辞書式順序)
groebner::gbasis([f1,f2],DegreeOrder); (次数つき辞書式順序)
groebner::gbasis([f1,f2],DegInvLexOrder); (次数つき逆辞書式順序)


2008-11-15