在Matlab,C ++等中将数学公式转换为代码的方法?

时间:2010-07-31 15:21:58

标签: c++ math matlab wolfram-mathematica

我对所有数学专家都有一个基本问题。

“如果我有一篇学术论文,那么将简单的数学方程转换为工作Matlab(或C ++)代码的最简单方法是什么?”

理想情况下,会有一个Latex>> Matlab(或C ++)转换工具。

然而,如果没有这个,是否有一个“备忘单”,其中包含所有常见的数学符号,以及它们在Matlab(或R或C ++)中的等效实现关键字?

5 个答案:

答案 0 :(得分:9)

我从未见过这样的事情。大多数数学符号都是由(至少)合理智能的人理解,因此它经常省略生成工作代码所需的各种细节。如果你有这样一个工具,我怀疑它会产生超过(可能)10%的可用结果。

反过来看起来更加稳固 - 从代码中产生可读的数学符号(特别是来自像Mat​​lab这样的东西)听起来更合理。省略现有信息要比尝试合成缺失的信息容易得多。

答案 1 :(得分:8)

使用Mathematica Symbolic Computation

您可以直接在Mathematica中输入数学方程式,然后将结果导出为C代码。

继续调整等式,直到渲染看起来与学术论文中的原始等式相同。然后,您可以插入自己的参数,Mathematica将为您计算结果。

你甚至可以做一些很酷的事情,例如要求它区分方程式 - 它会产生差异,并打印出所得到的方程式。

您可以使用任何语言调用Mathematica,包括.NET,Q,Python,Java等。

您甚至可以将Mathematica程序编译成.NET程序集并将其嵌入到您的应用程序中。

Mathematica还将发出与您刚刚输入的数学公式相匹配的Java或C代码。

答案 2 :(得分:3)

有一篇关于Converting math equations to C#的代码项目文章表示为MathML

答案 3 :(得分:1)

这是不可能的。一般来说,正如Jerry Coffin所说,论文中的数学表达是为人类理解的。因此,存在各种各样的问题。一个我认为最重要的是最优。人类消费的(数学)代码很少是最优的,坏的例子是Fibonacci序列。没有人会像人类理解的那样写斐波那契代码。

所以,即使您确实已经解析了代码,您仍然需要做很多工作,就像自己编写代码一样。

答案 4 :(得分:0)

这个问题基于一个核心假设 - 计算机可以做得更好。事实并非如此。

计算机和特定计算机器往往比人类做更好的迭代任务,更糟糕的是认知任务。您是否正在尝试转换迭代或认知的数学?如果它是迭代的那么标准程序 - 对于x做n次或while(标准)做等等......对于迭代任务来说将是简单的。如果您正在深入研究人工智能和机器学习,那么关于计算机应该如何进行人工智能并且做得很好,就会有大量的信息。我假设提问者从认知意义上寻求帮助而不是迭代。因此问题 - 缺乏解决方案。如果任务是认知的,那么计算机就无法帮助你了。