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.closeCreateKernelに引数をつけただけですが、Mathematica Playerのインストール先が決まっているなら、とても便利で手間要らずになるのでここにメモしておくことにします。