2009-10-02[n年前へ]
■IronRubyとMathematica Playerの良い組み合わせ方を考える
さて、.NETで動くRubyであるIronRubyと無料で使うことができるMathematica Playerを組み合わせて遊んでいると、とりあえずは、Rubyの中で数式処理結果を使いたければ、EvaluateToInputFormを使って評価を行い、人間が評価結果を眺めたければ、EvaluateToOutputForm を使って評価を行うのが便利だ、という当たり前の事実に突き当たります。
たとえば、こんなコードを書いてみます。4 x+3==0 という1次方程式を解くだけのコードです。
include System require 'Wolfram.NETLink' include Wolfram::NETLink kernelLink=MathLinkFactory.CreateKernelLink() kernelLink.WaitAndDiscardAnswer() result=kernelLink.EvaluateToInputForm( "Solve[4 x+3==0,x]", 0) puts result kernelLink.closeこのスクリプトを走らせると、
{{x -> -3/4}}という風に答えが返ってきます。こういった形式で答えが返ってくれば、このMathematicaによる数式処理結果を用いてRubyの中で(xを-3/4で)置換を行い何か処理を実行させる・・・といった使い方がいくらでも簡単にわかりやすく書けそうです。 これが、もし EvaluateToInputForm をEvaluateToOutputForm に入れ替えれてみたとするならば、
3 {{x -> -(-)}} 4という答えが返ってくることになります。もちろん、こちらの記述の方が人間はわかりやすいですが、Ruby中で数式評価結果を使おうとすると、これでは不便極まりない表記としか言いようがありません。(もちろん、MathematicaですらOutputFormで出力した結果を直接再利用することはできません)
Mathematica と IronRuby を上手く組み合わせると、結構面白いことができそうです。久しぶりにATOKの機能拡張であるAmetMultiでも引っ張り出して使ってみるか、それともATOK for Windows 無償試用版でもダウンロードしてみて面白い使い方ができないかどうか、少し挑戦してみることにしましょうか…。