児玉 です. From: IKEGAMI Daisuke <daisu-ik / is.aist-nara.ac.jp> Subject: [ruby-math:00360] Re: one/zero for algebraic class Date: Mon, 04 Sep 2000 18:15:41 +0900 Message-ID: <200009040915.AA21407 / rho.aist-nara.ac.jp> > いけがみです. > > 多項式クラスの実装の上で, > 係数環クラスの名前を与えてやらなければいけないというのは > 少し残念です. > 名前で与えてやらなければいけないとなると, > 新しい数が登場するたびに Polynomial クラスを書き換えなきゃいけないのではないか > と思います. いや,単なる思い付きの案だったのですが, 係数環毎に Polynomial を書き換えるのとは __逆に__, パラメ−タ−として係数環を与えるように f=Polynomial("3 x**2 + x + 1",Integer) # Z[x] とみなす g=Polynomial("3 x**2 + x + 1", Complex) # C[x] とみなす のように Polynomial を変更して, 一方で, 環の方で one, zero を実装しておくと なんとかなるか? と思ったわけ. > # まあ多項式環の係数にくるのはせいぜい(準)環か体でしょうから, > # 種類はそうはないだろうとは思うんですけれども > > coerce の力を借りて, > > x = Variable("x") # xという名前の文字 > f = 3 x**2 + x + 1 # Polynomial("3 x**2 + x + 1") これは x=Polynomial("x"); f = 3 * x**2 + x + 1 # Polynomial("3 x**2 + x + 1") に対応するけど, > x.set_value(1) # x = 1; f = 5 > x.set_value(0) # x = 0; f = 1 f1=f.substitute(1) # 5 f0=f.substitute(0) # 1 のような代入を使ってもらうしかないようです. -- K.Kodama(kodama / kobe-kosen.ac.jp)