.NETアプリケーションでのWolfram Mathematica機能の使用

.NETアプリケーションを作成したい人がいます。 コンピューター代数システムが好きな人がいます。 この記事ではオイラー円が交差しています!







参加する代わりに



科学的な仕事のために、複雑な数学的計算と美しいグラフの描画が必要でした。 最も論理的なのは、 MathematicaMatlab、またはそれらの無料の同等物などの数学的パッケージです。 しかし、これは行われました。 しかし、入力パラメーターの表示と便利な変更のために、別個の実行可能ファイルが必要でした。







上記のパッケージにはインターフェースをコンパイルおよび開発する独自の方法があることは知っていますが、.NET + Wolfram.NETLinkバンドルが選択されました。 これはどんな獣ですか?



Wolfram .NET /リンク



Wolframには、Mathematicaと他のプログラム間でデータを交換するためのプロトコルMathLinkがあります。 .NET / Linkは、このプロセスの低レベルの詳細を隠し、プログラマが.NETの高レベルコードを作成できるようにします。 要するに、このライブラリのセットにより、1つのコマンドを使用してMathematicaカーネルにリクエストを送信し、別のコマンドを使用して回答を取得できます。 MathLink自体で記述できますが、すでにCで記述されています。

もちろん、この奇跡には欠点があります。 より正確に1つ。 ライブラリ自体は1つのファイル(Wolfram.NETLink.dll)のみを占有しますが、プログラムは事前にインストールされたWolfram Mathematica環境なしでは機能しません。 もちろん、いくつかのシャーマニズムの助けを借りて、プログラムでMathematicaのコアをドラッグできますが、これは合法ではありません。



実装



アキー まず、例として簡単なものを取り上げます。 たとえば、二次関数の最大値を見つけます。 そして、それを関数グラフに表示します。 原則として、これは.NET / Linkライブラリを操作するときに必要なほぼすべてを理解するのに十分です。 したがって、Wolfram Mathematicaでは、次のようになります。







ここでは説明なしにすべてが明確になっていると思います。 これで、実装を続行できます。 Visual Studioで新しいプロジェクトを作成し、Wolfram.NETLink.dllライブラリへのリンクを追加しましょう(バージョンによっては、 \ Mathematica \ 8.0 \ SystemFiles \ Links \ NETLinkにあります )。







Wolfram.NETLink名前空間からMathKernelコンポーネントをツールバーに追加します:







リストにない場合は、ライブラリへのリンクも指定する必要があります(「参照」を使用)。

では、フォームのデザインを処理する必要があります。 pictureBox(グラフ表示)、textBox(最大出力)、およびボタン(計算プロセスを開始するため)が必要です。







また、MathKernelコンポーネントをフォームに追加することを忘れないでください。 デフォルトでは、このコンポーネントのCaptureGraphicsプロパティはfalseに設定されています。 グラフィックが必要なので、このプロパティの値を反転します。

実際には、ボタンに指示を与えるだけです。



mathKernel1.Compute("f[x_] := -0.75 x^2 - 6*x + 7.5;"); //      mathKernel1.Compute("xm = x /. Last[FindMaximum[f[x], {x}]]"); textBox1.Text = mathKernel1.Result.ToString(); //   
      
      





さて、関数の最大値を定義しました。 次に、グラフィックスを扱いましょう。



 pictureBox1.Image = null; // pictureBox1 mathKernel1.GraphicsHeight = pictureBox1.Height; //      mathKernel1.GraphicsWidth = pictureBox1.Width; mathKernel1.Compute("Plot[{f[x], f[xm]}, {x, -10, 10}, PlotRange -> Full]"); //    if (mathKernel1.Graphics.Length > 0) pictureBox1.Image = mathKernel1.Graphics[0]; //    pictureBox1
      
      





結果は、次のスクリーンショットに表示されます。







速く、シンプルで美しい。



おわりに



.NET / Linkは、科学に関わる修士、大学院生、その他の仲間にとって良いツールになると思います。 残念ながら、主な欠点-Wolfram Mathematicaの高価格と移植性の低さ-は全体像を台無しにする可能性があります。



PS私が最初の投稿を楽しんだことを願っています。 私は質問に答えてうれしいです。 Wolfram Mathematicaに関する記事に興味があるなら、書いてください!



All Articles