児玉です.
ちょっと欲しくなって, この土日で
多変数多項式クラス PolynomialM(polynomialm.rb) を作ってみました.

ちょっと造りが荒いけど,
一応, グレブナ−ベ−スを計算できる程度まで整備できました.
有理数係数でも問題なく動くようで, 複素係数でも OK のはず.
こんな風に "簡易多項式電卓" 的気分で 使えます:

p1=PolynomialM("(x+1)(3*x^2+x^2*y+y*z)")
p2=PolynomialM("(x+3y)^2")
p3=p1+p2
printf "(%s)+(%s)=(%s)\n", p1, p2, p3

#  y*z の "*" が無ければ yz という1個の変数とみなす.
-- 
K.Kodama(kodama / kobe-kosen.ac.jp)