2009-10-12[n年前へ]
■引数付きのMathLinkFactory.CreateKernelLinkの書き方 
無料配布のMathematicaカーネルを(やはり同じく無料で使うことができる).NET Framework上で動作するRubyであるIronRubyから使うときに、引数無しの"MathLinkFactory.CreateKernelLink() "を使うと、毎回ダイアログが開き"MathKernel.exe"のパスを尋ねられます。そして、毎回パスを入力します。
その作業は、やはり面倒くさいものです。そこで、「MathLinkFactoryでリンクを作成する」といったドキュメントを頼りに、(「ありがち」なMathematicaカーネルのパスを指定して)自動でMathematicaカーネルと通信を開始するスクリプトを書いてみます。(大文字小文字が最初の記事投稿では間違えていたので、mathkernel.exeからMathKernel.exeへと修正してあります)
require 'pp'
class Mathematica
require 'Wolfram.NETLink'
include Wolfram::NETLink
def initialize
@kernelLink=MathLinkFactory.CreateKernelLink(
"-linkmode launch -linkname
'C:\\Program Files\\Wolfram Research\\
Mathematica Player\\7.0
\\MathKernel.exe'")
@kernelLink.WaitAndDiscardAnswer()
end
def do(command)
@kernelLink.EvaluateToInputForm(command, 0)
end
def close
@kernelLink.EvaluateToInputForm(
'MVClose[]', 0)
end
end
m=Mathematica.new
pp m.do('Table[i,{i,1,10}]')
m.close
CreateKernelに引数をつけただけですが、Mathematica Playerのインストール先が決まっているなら、とても便利で手間要らずになるのでここにメモしておくことにします。