Rubyによる代数系の表現
著者:梅谷 武
Rubyによる代数系の表現について述べる。
作成:2008-01-20
更新:2011-03-08

Rubyの組み込み数値型

 Rubyには次の数値型が組み込まれています。
  • 数値型(Numeric)
    • 整数型(Integer)
      • 固定長整数型(Fixnum)
      • 可変長整数型(Bignum)
    • 浮動小数点型(Float)

数値型(Numeric)

 数値型はすべての数値が継承する抽象クラスです。
 数値型のおもなメソッド:
+x 自分自身
-x 符号反転(= 0 - x )
x == y 等しいならば真
abs 絶対値
div(other) 整数商(self/other)
quo(other) 実数・有理数商(self/other)
modulo(other) 剰余(otherと同符号)
remainder(other) 剰余(selfと同符号)

整数型(Integer)

 整数型の実装には固定長と可変長の2種類があります。値の大きさにより自動的に変換されますので、つねに無限精度であると考えてかまいません。つまり、Rubyの整数型は実装による制約はありますが、有理整数環そのものと考えることができます。
 整数型のおもなメソッド:
x + y 加算
x - y 減算
x * y 乗算
x / y 除算
x 剰余
x ** y 冪乗
x <=> y x > y ならば正、等しいならば0、小さいならば負
x == y 等しいならば真
x < y 小さいならば真
x <= y 小さいか等しいならば真
x > y 大きいならば真
x >= y 大きいか等しいならば真
 x ビット演算子:否定
x | y ビット演算子:論理和
x & y ビット演算子:論理積
x ^ y ビット演算子:排他的論理和
x << y シフト演算子:左シフト
x >> y シフト演算子:右シフト(最上位ビット保持)
size 整数の実装上のサイズ[byte]
to_f 浮動小数点数(Float)へ変換
to_s 10進表現文字列に変換
to_s(基数) 基数が2~36ならば、その基数表現文字列に変換

有理数型(Rational)

 Rubyには標準で rational.rb という有理数体を表現するためのライブラリが付属しています。有理数を生成するときは Rational(分子,分母) とします。
 有理数型のおもなメソッド:
x + y 加算
x - y 減算
x * y 乗算
x / y 除算
x ** y 冪乗
x <=> y 大きいならば正、等しいならば0、小さいならば負
x == y 等しいならば真
x < y 小さいならば真
x <= y 小さいか等しいならば真
x > y 大きいならば真
x >= y 大きいか等しいならば真
to_i 整数型(Integer)に変換
to_f 浮動小数点数(Float)に変換
to_s 10進表現文字列に変換("分子/分母")

補助ライブラリ:mathn.rb

 有理数型と標準で付属する mathn.rb を同時に使うと、有理数体の範囲の計算では数式とほぼ一対一に対応するようなプログラミングができるようになります。
  • 整数型/整数型が有理数型になる。
  • 有理数型の積が整数であれば整数型になる。
  • 冪乗が有理数であれば有理数型になる。

一変数多項式環型(Poly1)

 一変数多項式環クラス:poly1.rbはRubyの組み込み型による有理整数環(Integer)あるいは有理数型(Rational)を係数とする一変数多項式環クラスです。
 一変数多項式環型のおもなメソッド:
x + y 加算
x - y 減算
x * y 乗算
x / y 除算
x 剰余
x ** y 冪乗
setchar(chr) 表示用不定元文字chrを設定する。
Horner(const) ホーナー法により定数constを代入する。
diff(n) n階微分
Published by SANENSYA Co.,Ltd.