2012-07-04 38 views
10

我需要在C++中进行分析集成。例如,我应该整合这样的表达式:exp[I(x-y)],I是一个虚数。C++中的符号计算

我该如何在C++中做到这一点?

我试图GiNaC但它可以只合并多项式。我也试过SymbolicC++。它可以集成功能,如sinecosineexp(x)ln(x),但它是不是很厉害。例如,它不能整合x*ln(x),它可以很容易地通过使用Mathematica或通过部分集成获得。

是否有任何其他工具或能够做符号计算像在C++分析集成库?

+0

你已经尝试[千里马](http://maxima.sourceforge.net/)? – jxh

+0

正在使用Matlab的一个选项? Matlab的符号工具箱应该能够做到这些。使用C Matlab引擎,你可以从你的C++代码中调用它? – Philipp

+0

我没有Matlab的许可证,所以我不能使用它。 Maxima使用C++语法吗? 我更喜欢C++中的某个库。如果我想使用其他程序,如maxima或Matlab,我会使用Mathematica来代替。 其实我已经在mathematica中编写了我的程序。这是一个简单的程序来加工积分偏差方程,但问题是Mathematica在计算所需的时间方面效率不高。所以我决定用C++编写我的程序。 – MOON

回答

4

如果你需要做象征性的整合,那么你很可能不会得到任何东西比数学或最大运行速度更快 - 他们已经写在(像)C++。所以除非你的方程有一个非常具体的公式,你可以用一种Mathematica或Maxima不能用的方式来开发,那么你很可能不是那么幸运 - 至少你不会从一个现成的图书馆。

您可以编写自己的代码,如果你需要做的数值解得到提升速度是合理的。 (我知道我为PDE生成数值解决方案)。

+0

我用Mathematica编写的代码位于以下链接:http://www.mediafire.com/?cw9s3ne7jz8fq7s 此代码是关于recuult关系。我给它的第0学期,它获得第一学期,然后使用第一学期获得第二个学期等等。 对于前四届而言,并不需要太多时间,但对于进一步的条款来说,这需要很多时间,并且我从来没有获得过更高的条款。 这段代码应该解决一个积分微分方程,所以我需要大量的术语来获得。至少我认为50个条款是必要的。 – MOON

+0

所以,因为它需要很多时间在Mathematica我决定写它通过c + + – MOON

+0

你可以添加一个公式的图片,我无法打开mathematica笔记本(这几天没有可用的mathematica ...) –

1

其他C++库我知道做符号计算的是

如果我没有记错的话,SymEngine尚不支持整合;然而,食人鱼呢。目前Piranha的documentation在某种程度上受到限制,并且正在开发中,但您可以看到集成功能here。请注意,第二个链接使用Python包装器Piranha的语法。然而,Piranha是一个计算机代数库,用于稀疏多元多项式和其他密切相关的符号对象(如Poisson系列)的符号操作,所以我不认为它可以集成您可能感兴趣的特定函数。

虽然不是C++,但您也可能对SymPy for Python感兴趣,它可以执行一些您可能感兴趣的更复杂的符号集成。SymPy集成的文档是here