=begin [(())] = Algebra::ResidueClassRing ((*(剰余環クラス)*)) 環からその1つの元を法とした剰余環を構成します。実際のクラスを生成するには環 と法とを指定して、クラスメソッド ((<::create>)) あるいは 関数 (())() を用います。 == ファイル名: * ((|residue-class-ring.rb|)) == スーパークラス: * ((|Object|)) == インクルードしているモジュール: なし == 関連する関数: --- Algebra.ResidueClassRing(ring, mod) ((<::create>))(ring, mod) と同じです。 == クラスメソッド: --- ::create(ring, mod) クラス ((|ring|)) で表現されるを環とその環の元 ((|mod|)) から、 その元を法とした剰余環を表現するクラスを返します。 この戻り値は (()) クラスのサブクラスです。 このサブクラスにはクラスメソッドとして ((|::ground|)) と ((|::modulus|)) と (({[x]})) が定義され、それぞれ、基礎環 ((|ring|))、 法 ((|mod|))、x を代表元とする剰余類を返します。 例: 多項式環を法 (({x**2 + x + 1})) で割る。 require "rational" require "polynomial" require "residue-class-ring" Px = Algebra.Polynomial(Rational, "x") x = Px.var F = Algebra.ResidueClassRing(Px, x**2 + x + 1) p F[x + 1]**100 #=> -x - 1 ((|ring|)) が Integer である場合に限り、全ての逆数を予め計算して 保管します。また (({0, 1, ... , mod-1})) に対応する剰余類の配列を ((|to_ary|)) で得ることができます。 例: modulo 7 の素体 require "residue-class-ring" F7 = Algebra::ResidueClassRing.create(Integer, 7) a, b, c, d, e, f, g = F7 p [e + c, e - c, e * c, e * 2001, 3 + c, 1/c, 1/c * c] #=> [6, 2, 1, 3, 5, 4, 1] p( (1...7).collect{|i| F7[i]**6} ) #=> [1, 1, 1, 1, 1, 1] --- ::[](x) ((|x|)) で代表される剰余類を返します。 #--- ::indeterminate(obj) --- ::zero 零元を返します。 --- ::unity 単位元を返します。 == メソッド: --- lift 剰余類の代表元を返します。 #--- monomial? --- zero? 零元であるとき真を返します。 --- zero 零元を返します。 --- unity 単位元を返します。 --- ==(other) 等しいとき真を返します。 --- +(other) 和を計算します。 --- -(other) 差を計算します。 --- *(other) 積を計算します。 --- **(n) ((|n|)) 乗を計算します。 --- /(other) (()) を利用して商を計算します。 --- inverse 基礎環がユークリッド環であることを仮定して、逆数を返します。 逆数が存在しない場合の値は nil です。 #--- to_s =end