计算Mathematica中的表达式

时间:2011-07-01 17:10:45

标签: wolfram-mathematica

如果我想计算表达式^中出现x的次数,那很简单:

Count[x, _Power, {0, Infinity}]

假设我只想计算-1的实例来提高功率。我怎么能这样做?

我曾尝试过

Count[(-1)^n + 2^n, _Power[-1, _], {0, Infinity}]

甚至

Count[Plus[Power[-1, n], Power[2, n]], _Power[-1, _], {0, Infinity}]

但两人都给了0。

问题的根源:我正在构建一个ComplexityFunction,允许某些表达式,例如Power[-1, anyComplicatedExpressionHere]Sqrt[5](与我的问题相关),但会严重惩罚{{1}的其他用法}和Power

3 个答案:

答案 0 :(得分:6)

你会做Count[x,Power[-1,_], {0, Infinity}]

In[4]:= RandomInteger[{-1, 1}, 10]^RandomChoice[{x, y, z}, 10]

Out[4]= {(-1)^x, (-1)^x, 0^y, 0^z, (-1)^z, 1, 1, 1, (-1)^y, 0^x}

In[5]:= Count[%, (-1)^_, {0, Infinity}]

Out[5]= 4

答案 1 :(得分:4)

什么是

Count[expr, Power[-1, _], {0, Infinity}]

P.S。问题中的示例不正确。我想你可能意味着

Count[x, _Power, {0, Infinity}]

答案 2 :(得分:3)

可能

Count[x, Power[-1, _], Infinity]
  • Infinity的级别规范包括所有级别1到无穷大
  • 模式Power[-1, _]仅在基数为Power
  • 时匹配-1的实例