代数计算的优化

时间:2013-08-23 17:11:48

标签: performance wolfram-mathematica

使用mathematica,我可以计算一个函数的数学表示,然后我想用C ++编写代码。

说我得到类似的东西:

f=Log[2*x+3*y]+Sin[4*x+6*y]

在这种情况下进行计算显然是有道理的:

temp=2*x+3*y
f=Log[temp]+Sin[2*temp]

有没有办法在给定更复杂的数学表达式的情况下获得表达式,以减少表达式的执行时间/操作数/大小或任何好的度量标准?

1 个答案:

答案 0 :(得分:0)

虽然它不适用于您的简单示例,但您可以尝试以下内容 Mathematica

Experimental`OptimizeExpression[{Log[(2*x^3 + 3*y)^2] + Sin[2 (2*x^3 + 6*y)^2]}]

结果你得到了

Experimental`OptimizedExpression[
 Block[{Compile`$3, Compile`$4}, Compile`$3 = x^3; 
  Compile`$4 = 2 Compile`$3; 
  {Log[(Compile`$4 + 3 y)^2] + Sin[2 (Compile`$4 + 6 y)^2]}]]