【发布时间】:2014-10-17 18:07:11
【问题描述】:
我找到了这两个库: - 解析器 - symbolicc++
第一个能够有效地解析数学表达式,因此我可以用最少的包装制作一个解析器对象,以便
parser my_parser("1/2 * x^2");
cout<<myparser(2)<<endl;
会导致它打印 2.0.这很棒,但它只适用于双打,对吧?
第二个实现了 Symbolic 对象,因此例如我可以执行以下操作:
Symbolic x("x");
Symbolic x2 = x^2;
cout<<df(x2, x)<<endl;
导致 2.0*x。所以它能够区分表达式,这很好。
我需要做的是两者的混合!我需要一个函数被解析然后区分,这样我就可以做类似的事情:
cout<<df("1/2 * x^2", "x")<<endl;
我也希望它打印出 2.0*x。
有可能做这样的事情吗?原则上,如果 muparser 可以处理任何对象,我可以简单地对 Symbolic 对象运行一个表达式,然后区分它们。但我无法完成这样的工作。
那么还有其他解决方法吗?我需要一些东西,它接受一个带有表达式的输入字符串并返回一个带有该表达式导数的输出字符串。
谢谢!
【问题讨论】:
-
我不认为你可以使用 muparser - 我相信它没有适当的回调,它只是在内部构造表达式。你应该看看类似stackoverflow.com/questions/11703082/…
-
嗯......我不熟悉解析树和语法......有没有更简单的方法呢?这样做不是我的具体目标,所以如果有什么东西可以简单地工作,那就太棒了..
标签: c++ parsing symbolic-math differentiation