C ++中的符号计算

时间:2012-07-04 08:43:53

标签: c++ symbolic-computation

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

如何在C ++中执行此操作?

我尝试了GiNaC,但它只能集成多项式。我也试过SymbolicC++。它可以集成sinecosineexp(x)ln(x)等功能,但功能不是很强大。例如,它无法集成x*ln(x),这可以通过使用Mathematica或通过部分集成轻松获得。

是否有其他工具或库能够进行符号计算,如C ++中的分析集成?

3 个答案:

答案 0 :(得分:4)

如果你需要进行符号集成,那么你可能无法获得比在mathematica或maxima中运行更快的任何东西 - 它们已经被编写成(类似于)C ++。因此,除非你的方程有一个非常具体的公式,你可以用Mathematica或Maxima那样的方式来利用,那么你可能运气不好 - 至少你不会从那里获得那种自定义操作现成的图书馆。

如果您需要进行数值解决方案,您可能有理由编写自己的代码以获得速度提升。 (我知道我为PDE生成数值解决方案。)

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

几天前,我正在寻找一个符号数学库,例如SymPy for C ++,因为与Python或大多数其他编程语言相比,它的速度令我着迷。

我发现Vienna Math Library,这是一个很棒的库,具有非常现代的语法,并且据我所知,它具有SymPy的功能。该库还具有可用于解决问题的积分功能。

这对于解决3自由度铰接机械手的IK(逆运动学)已经足够了。