児玉 です.

From: Shin-ichiro HARA <sinara / blade.nagaokaut.ac.jp>
Subject: [ruby-math:00414] Re: Groerbner Basis Package
Date: Fri, 23 Mar 2001 16:26:02 +0900
Message-ID: <4.3.2-J.20010323161102.031d2d38 / blade.nagaokaut.ac.jp>

> 原です。
...
>    http://blade.nagaokaut.ac.jp/~sinara/ruby/math/
> 
> です。また、最初から係数体を指定できるようにしました。
> 
>    require "rational"
>    require "groebner-basis"
>    x, y, z = MPolynomial.var("xyz", Rational)
>    f1 = x**2 + y**2 + z**2 -1
>    f2 = x**2 + z**2 - y
>    f3 = x - z
>    p Groebner.basis([f1, f2, f3])
>      #=> [x - z, y - 2z^2, z^4 + 1/2z^2 - 1/4]

うまい.

僕も一応考えてはいたんだが...
(1) 生成時に 係数環を指定できる 原さん方式.
	Rational::zero とか欲しいよなぁ.

(2) 係数環毎にクラスを作る.
  気分としては:
  class MPolyRational < MPolynomial
	def coefficient_zero
		return Rational(0)
	end

	def coefficient_one
		return Rational(1)
	end

のような感じ. メソッドにしないで, 定数扱いでも良いけど.

  
どちらが良いのかな?
まあ, 実装者の趣味の問題とも思うけど...

ちなみに, 型の柔軟生が ruby に劣る Sather での多項式は
(2) のような感じで実現した.
(c.f. http://www.math.kobe-u.ac.jp/HOME/kodama/tips-SatherPoly.html)

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