今回は、前回分を少し掘り下げて説明することにします。
Dim ml As IKernelLink = MathLinkFactory.CreateKernelLink("-linkmode launch -linkname 'C:\Program Files\Wolfram Research\Wolfram Engine\13.3\WolframKernel.exe'") ml.WaitAndDiscardAnswer() |
ボタンをクリックするとMathLinkFactory.CreateKernelLink()で、"launch"を指定することで、後ろでWolfram Kernelを起動します。
Wolfram Engineというものはなく、かなりややこしい。
C:\Program Files\Wolfram Research\Wolfram Engine\13.3\
の中を見ると、
math.exe
MathKernel.exe
wolfram.exe
WolframKernel.exe
WolframPlayer.exe
WolframScript.exe
の6つのexeがあります。
ネットで少し調べたら、
が見つかりました。
これによると、
math.exe = wolfram.exe
MathKernel.exe = WolframKernel.exe
とあります。確かにファイルサイズサイズが同じなんですよね。
なぜ、同じものなのに名前が違うのか。調べてみると次の記事が見つかりました。
これによると…
「2015年4月6日のv3.1.0にmath.exeをよりモダンな名前wolfram.exeに変えた」
とあります。Kernelのほうはこの記事にはありませんでしたが、おそらく同じタイミングだったのではないかと思います。
後方互換を残すためにあえて古いものを残しているんでしょうね。たぶん。
では、math.exeとMathKernel.exeの違いはというと、起動してみるとわかります。
math.exeを起動すると。。。
一方、MathKernel.exeの場合は。。。
math.exeは、Windowsのコマンドプロンプトライクに起動しますが、MathKernel.exeの場合、「File」「Edit」などのメニューがある(大したことはありませんが)GUI付きのプログラムだということがわかります。これが90KBほどのサイズの違うということなのでしょう。
プログラムの本体は「SystemFiles」フォルダの下にあります。これは4GB以上のサイズがあります。
WolframPlayer.exeは、Mathematicaを使ったことがる人にはなじみがあると思います。Mathematicaで作ったノートブックファイル(.nb)を再生するものです。
起動すると次のようなトップ画面が表示されます。
そして、またややこしいのがWindowsのスタートメニュー。フォルダー名は「Wolfram Engine」と書かれながらも、中の項目は「wolframscript (Wolfram Engine)」となっています。
この、メニューに行きつく先が「wolframscript.exe」です。
さて、話がそれてきているので、もどします。
2つ目の関数ですが、前にも話した通り、出力が文字列か画像かで"Evaluate***"の関数名が変わります。
Dim result As String = ml.EvaluateToOutputForm("trainingset = {" + TextBox1.Text + "}; p = Predict[trainingset, Method -> ""LinearRegression""]; p[" + TextBox2.Text + "]", 0) TextBox3.Text = result |
中のWolfram言語の3行は、簡単にいうと、
- テキストボックスの内容をトレーニングセットに代入
- トレーニングセットと方法を指定して予測
- テキストボックスの新しい入力値に対する出力を予測
です。
「はみだし」終了。