相关疑难解决方法(0)

简化数学表达式的策略

我有一个结构良好的树,代表一个数学表达式.例如,给定字符串:"1+2-3*4/5",这将被解析为:

subtract(add(1,2),divide(multiply(3,4),5))
Run Code Online (Sandbox Code Playgroud)

这表示为这棵树:

我希望能够做的就是把这棵树尽可能地减少它.在上面的例子中,这很简单,因为所有的数字都是常量.然而,一旦我允许未知数(用a $后面跟一个标识符表示),事情开始变得棘手:

"3*$a/$a"divide(multiply(3,$a), $a)

这应该简化为3,因为这些$a术语应该相互抵消.问题是,"我如何以通用的方式认识到这一点?" 我如何认识到这min(3, sin($x))将永远存在sin($x)?我怎么认出那sqrt(pow($a, 2))abs($a)?我怎么认识到nthroot(pow(42, $a), $a)( 42 权力的根源)是42

我意识到这个问题相当广泛,但是我一直在打击这个问题一段时间并没有得到足够令人满意的东西.

algorithm math simplify

65
推荐指数
3
解决办法
2万
查看次数

标签 统计

algorithm ×1

math ×1

simplify ×1