児玉 です.

From: Shin-ichiro HARA <sinara / blade.nagaokaut.ac.jp>
Subject: [ruby-math:00412] Re: Groerbner Basis Package
Date: Wed, 21 Mar 2001 18:10:49 +0900
Message-ID: <4.3.2-J.20010321174811.02d16e18 / blade.nagaokaut.ac.jp>
> 原です。
...
> 児玉さんのライブラリの使い方を実は余り分かってないのですが、
> ちょっと Ruby かライブラリのバグではないかと思われるのがあ
> あります。

gbase.rb のバグです. 訂正版を置きました.


> require "polynomialm"
> require "gbasem"
> 
> f1=PolynomialM("x")
> f2=PolynomialM("x - 1")
> gb=GBase.getGBase([f1, f2])
> 
> これでエラーでがでます。それから、

gbase.m の 1元生成の場合の バグでした.

def makeReducedGBase # Reduced Grobner basis is canonical.
if GBase.size>1;   # <----追加
	GBase.sort!{|f1,f2| f2<=>f1};
	for i in 0..GBase.size-1
		p=GBase[i]; g=GBase.dup; g.delete_at(i)
		q,r=p.divmod(g)
		GBase[i]=r
	end
end   # <----追加 
end


> f1 = PolynomialM("x**3 * y**2 - x**2 * y**3 + x")
> f2 = PolynomialM("3 * x**4 * y + y**2")
> gb=GBase.getGBase([f1,f2])
> print gb.join(", "),"\n"
> 
> これの答えが
> 
> x, y^(2)
> 
> なのですが、正しくは
> 
> y^15 + 1/3y^12 - 4y^11 + 2y^7 + 3y^2,
> x + 8/147y^14 + 4/49y^13 + 6/49y^12 + 89/441y^11 + 37/147y^10 - 6/49y^9 - 9/49y^8 - 97/441y^7 - 155/147y^6 - 4/49y^5 - 6/49y^4 - 9/49y^3 - 16/147y^2
> 
> ではないかと。他はOKなのに、これだけなぜ値が違うかミステリーです。

不思議. ftp に壊れた版をおいちゃたかな?
手もとではこんな具合:
x+8y^(14)/147+4y^(13)/49+6y^(12)/49+89y^(11)/441+37y^(10)/147-6y^(9)/49-9y^(8)/49-97y^(7)/441-155y^(6)/147-4y^(5)/49-6y^(4)/49-9y^(3)/49-16y^(2)/147,
y^(15)+y^(12)/3-4y^(11)+2y^(7)+3y^(2)

表示の順序は逆ですが "正しくは..." の方の結果になりました.

-- 
K.Kodama(kodama / kobe-kosen.ac.jp)