如何创建从Visual Studio到Wolfram Mathematica的简单调用
目录
介绍
如今,随着计算机技术的飞速发展,并非总是能够使用一种编程语言来创建复杂的应用程序。不同的语言各有优缺点,通常,它们都不满足已开发应用程序的要求。解决这种情况的方法是使用几种编程语言。此方法通常用于科学研究、工业控制和其他商业应用的软件开发中。在这种情况下,有必要解决用不同编程语言编写的组件之间的交互问题。实现图形用户界面、数据库管理以及实时数据获取和处理的组件通常集成到一个应用程序中。
在本文中,我将提供一个将Visual Studio与Wolfram Mathematica计算机代数系统集成的示例。Wolfram具有用于在Mathematica和其他程序——MathLink之间进行数据通信的协议。MathLink允许外部程序调用Mathematica并从Mathematica 中调用。使用MathLink,例如,您可以将Mathematica视为外部程序中的子程序。此外,您可以创建一个实现自己的用户界面并通过MathLink与Mathematica核心进行交互的界面。此外,您可以使用MathLink让Mathematica调用外部程序中的各个函数。至少,您甚至可以为MathLink本身编写代码,但是要使用C语言。此协议的缺点是,尽管库本身位于一个文件(Wolfram.NETLink.dll)中,但仍需要预先安装的Wolfram Mathematica环境进行操作。
如何创建
在此示例中,我将向您展示如何使用Windows窗体应用程序从Visual Studio创建最简单的Wolfram Mathematica连接。如前所述,您需要安装Wolfram Mathematica软件包,然后在项目中包括Wolfram.NETLink.dll库。只需将引用添加到项目中即可(图1)。
图1 –将引用添加到项目
该库通常位于C:\Program Files\Wolfram Research\Mathematica\12.1\SystemFiles\Links\NETLink。
然后将Wolfram.NETLink命名空间中的“MathKernel”组件添加到工具箱(图2)。
图像2 –添加到工具箱“ MathKernel”组件
然后添加表单“MathKernel”组件并打开“CaptureGraphics”属性。结果,我们得到了这样一个带有按钮的窗体,一个pictureBox(用于图形)和一个textBox(用于结果)(图3)。
图片3 –测试表格
例如,考虑Wolfram Mathematica 的PDF[NormalDistribution[-5,3],x]函数“ ”。结果应该是
。
只需在按钮上添加操作即可:
// This launches the Mathematica kernel:
mathKernel1.Compute("PDF[NormalDistribution[-5, 3], x]"); //sent function to Kernel
textBox1.Text = mathKernel1.Result.ToString(); //convert result to string
mathKernel1.Dispose();
然后,我们在图像4上得到一个结果。
图片4 –调用Mathematica的结果
我们可以在表格中添加图形。让我们在按钮操作中添加代码:
if (pictureBox1.Image != null)
{
pictureBox1.Image = null;
}
mathKernel1.GraphicsHeight = pictureBox1.Height;
mathKernel1.GraphicsWidth = pictureBox1.Width;
mathKernel1.Compute("Plot[PDF[NormalDistribution[0, 1], x] ,
{x, -5, 5}, Filling -> Axis]");
if (mathKernel1.Graphics.Length > 0)
pictureBox1.Image = mathKernel1.Graphics[0]; //
mathKernel1.Dispose();
结果是一张图(图5)。
图片5 –最终结果
它既快速又简单。
结论
在本文中,我们研究了从Visual Studio中调用Wolfram Mathematica的最简单方法。该机制适用于具有大量数学计算的项目。我认为.NET/Link对于硕士、研究生和其他科学或与科学相关的开发人员来说可以是一个很好的工具。