Kodama's home page.
Ruby, Knot, その他の話題
2005-09-18 に, 岡山大学で行われた研究集会
数学ソフトウェアとフリードキュメント
で発表しました.
当日の発表では, 時間の読み違えで関係者の方々に御迷惑をお掛けしました.
以下では, 発表した内容に基づいて, 内容を整理して編集しなおしています.
概要
- KNOT は 結び目理論関連の研究に使用するソフトウェアです.
結び目,絡み目の図を描き, 様々な結び目不変量を計算します.
- WWW: www.math.kobe-u.ac.jp/~kodama/knot.html
- 配布条件: GPL
- 動作環境:
- Knoppix/Math に収録
- Linux(Vine, RedHat, Debian, Plamo, Knoppix 等)
- Windows(移植:
九州大学 角 俊雄)
- Mac OSX(作業中)
- Solaris(現在は配布していません)
KNOT にできること
- 結び目の図を描く
- 結び目の位相不変量を求める
KNOT 利用の実例を見ましょう.
(ここで実演が入る)
数学に使えるか?
ruby の特徴:
- Knoppix/Math に収録
- 純粋なオブジェクト指向
- 文法が比較的明確だが, いいかげんに書いてもわりと動く.
プロトタイピングにも適する.
- (数学以外の)様々なクラスが開発されている
- 整数は big int
汎用言語で大雑把にプログラムを組むという意味ではましな方
- 環,体などを既存の整数などとシームレスに定義できる(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 文書として編集しています.
- 配布条件: GNU Free Documentation License(FDL)
授業の担当者などが変わっても安定して保守できる
- 授業担当者, 神戸高専 情報教育部会,
中井優一(明石高専)などの協力で作成.
初版は 2001年.
- LaTeX 文書で作成.
- 印刷/製本して教材にする
- latex2html で html に変換.
授業中に各自がブラウザで参照できる.
文書中の URL はリンクになっている.
- 授業での使用実績
- 公開準備中
(HTML 化したものを参照する実演.)
Kodama's home page.