Kodama's home page.

Ruby, Knot, その他の話題

2005-09-18 に, 岡山大学で行われた研究集会 数学ソフトウェアとフリードキュメント で発表しました. 当日の発表では, 時間の読み違えで関係者の方々に御迷惑をお掛けしました. 以下では, 発表した内容に基づいて, 内容を整理して編集しなおしています.

概要

KNOT プログラム

KNOT にできること

  1. 結び目の図を描く
  2. 結び目の位相不変量を求める
KNOT 利用の実例を見ましょう.
(ここで実演が入る)

ruby言語と数学

数学に使えるか?

ruby の特徴:

  1. Knoppix/Math に収録
  2. 純粋なオブジェクト指向
  3. 文法が比較的明確だが, いいかげんに書いてもわりと動く.
    プロトタイピングにも適する.
  4. (数学以外の)様々なクラスが開発されている
  5. 整数は big int
    汎用言語で大雑把にプログラムを組むという意味ではましな方
  6. 環,体などを既存の整数などとシームレスに定義できる(coerceなど)

ruby の使用例

ruby で多項式/有理式を実装. Knoppix/Math に収録されています.

使用例を見ましょう.

(スクリプトの実演/解説)

require "polynomialm"
s1="(2x^2-3y^2+1)^2"
f1=PolyM(s1)    #  文字列 s1 を多項式にする.
p  f1.to_s
実行結果:
$ ruby sample.rb
"4x^(4)-12x^(2)*y^(2)+4x^(2)+9y^(4)-6y^(2)+1"

(スクリプトの実演/解説)

require "polynomialm"
x=PolyM("x")   #  整式としての x
f2=4*x**2-5*x+4   #  多項式を作る
#  3 種類の見た目で印字
p  f2.to_s
p  f2.to_s("tex")
p  f2.to_s("prog")
実行結果:
$ ruby sample.rb
"4x^(2)-5x+4"     #   人間が見やすい形式
"4x^{2}-5x+4"     #   LaTeX 形式
"4*x**(2)-5*x+4"  #  プログラム 形式

ruby の使用例

Manindra Agrawal, Neeraj Kayal and Nitin Saxena, "PRIMES in P" で 素数判定が多項式時間でできる事を示されている.

ここでは, ruby による AKS prime test の実装例 を見てみましょう.

(実演)

スクリプト例: 103 が素数かどうか調べてみる.

ruby -e 'require "prime_test/aks_prime_test.rb"; p AKS_prime::prime?(103)'
.....実行経過の表示がある.....
true
動くところだけ見てもあまり意味が無いなぁ. 興味があれば, 原論文とスクリプト(30行程度)を自分で読む!

free文書

"情報基礎" のテキスト(神戸高専) を free 文書として編集しています.
  1. 配布条件: GNU Free Documentation License(FDL)
    授業の担当者などが変わっても安定して保守できる
  2. 授業担当者, 神戸高専 情報教育部会, 中井優一(明石高専)などの協力で作成.
    初版は 2001年.
  3. LaTeX 文書で作成.
    1. 印刷/製本して教材にする
    2. latex2html で html に変換.
      授業中に各自がブラウザで参照できる.
      文書中の URL はリンクになっている.
  4. 授業での使用実績
  5. 公開準備中
(HTML 化したものを参照する実演.)
Kodama's home page.