开源的 C/C++ 数学表达式解析库

30

我正在寻找一个优秀的开源数学库,它可以执行以下操作:

  • 解析数学表达式 "1+1*(3/5)"
  • 积分

有人知道类似这样的东西吗?


1
表达式解析和集成在很大程度上取决于您需要多么复杂的集成。 - Martin Beckett
一些免费的Java和C++实现Shunting Yard算法的代码可以在这里找到,用于将表达式转换为逆波兰表示法,然后进行求值:http://www.technical-recipes.com/2011/a-mathematical-expression-parser-in-java-and-cpp/ - AndyUK
1
示例解析数学表达式:https://dev59.com/_m435IYBdhLWcg3w9FDi#32853177 - Lucinda Rigetti
7个回答

7

还有GNU libmatheval,它可以进行求值和微分。对于看似无辜的被积函数来说,积分是一个更加困难的问题。


+1,我以前没有遇到过这个,看起来非常有意思。 - Flexo

5

3

我一直使用C++编写的muParser进行解析。你不会获得一个可以进行积分的库;这太困难了,需要一个严肃而沉重的库。类似Maxima、Octave等开源符号积分器存在,但它们很难与外部接口交互,并且这种功能不能轻松地与项目的其余部分分离。


2

1

另一种方法是在您的应用程序中嵌入一个解释性语言,并使用该语言的数学解析器。

LUA在这方面变得越来越流行 - 参见如何通过SWIG将lua嵌入c ++


1

0

有一个名为MathPresso的库,它是数学表达式的解析器和JIT编译器,当性能很重要时我会使用它。

一些测试: 计算表达式“x / y + (x * x * y + 18.243 * y) / z” - 其中变量是双精度浮点数。

  • C++函数:每秒144.1百万次计算
  • MathPresso:每秒133.8百万次计算

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接