Wolfram EngineをVisualBasicで使う(4:入力により結果を数字とグラフで切り替える)
前回までは、数式の場合は数式だけ、グラフの場合はグラフだけ、だったので、今日は自動で切り替えられるようにしました。
あと、何回も実行すると前のものが残るので、クリアボタンを付けました。
- デザインエディターでラベルやボックスを下のように調節して、新しいボタン「Clear result」を追加しました。
-
まずは、「Evaluate」ボタンの動きを変えます。If文でテキストボックスの文字列が「Plot」が含まれるかどうかで、数式(文字)として出力するか、グラフ(画像)として出力するかを分岐します。文字だった場合は、文字列としてテキストボックスに出力し、グラフだった場合には画像ボックスにグラフを出力します。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ml As IKernelLink = MathLinkFactory.CreateKernelLink("-linkmode launch -linkname 'C:\Program Files\Wolfram Research\Wolfram Engine\13.3\WolframKernel.exe'")
ml.WaitAndDiscardAnswer()
Dim strarg As String = TextBox2.Text
If strarg Like "*Plot*" Then
Dim result As Image = ml.EvaluateToImage(strarg, 200, 200)
PictureBox1.Image = result
Else
Dim result As String = ml.EvaluateToOutputForm(strarg, 0)
TextBox1.Text = result
End If
End Sub
- 次に「Clear result」ボタンの動きです。テキストボックス2つと画像ボックス1つの内容を消します。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
TextBox1.Text = Nothing
TextBox2.Text = Nothing
PictureBox1.Image = Nothing
End Sub
- さて実行してみます。
-
まずは数式。
Expand[(x + 3)(x + 2)]
とすると、結果は次の通り、正解。
- 「Clear result」をクリックすると、入力と出力がクリアされます。
-
次はグラフ。Wolframのドキュメントセンターから次をピックアップしました。
ContourPlot[Cos[x] + Cos[y], {x, 0, 4 Pi}, {y, 0, 4 Pi}]
その結果は、
いい感じに動きました。もちろん、これも「Clear result」でクリアできます。
しかしこれには問題が、、、
|
は、球体のグラフィックスを変えるものです。これには「Plot」という文字がないので、その結果は、
Copyright (c) 2023-2024, techtechlab by DataWith