计算Mathematica中的表达式

Cha*_*les 4 wolfram-mathematica

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

Count[x, _Power, {0, Infinity}]
Run Code Online (Sandbox Code Playgroud)

假设我只想计算-1的实例来提高功率.我怎样才能做到这一点?

我试过了

Count[(-1)^n + 2^n, _Power[-1, _], {0, Infinity}]
Run Code Online (Sandbox Code Playgroud)

乃至

Count[Plus[Power[-1, n], Power[2, n]], _Power[-1, _], {0, Infinity}]
Run Code Online (Sandbox Code Playgroud)

但两人都给了0.

问题的由来:我建立一个ComplexityFunction可以使某些这样的表达式Power[-1, anyComplicatedExpressionHere]Sqrt[5](有关我的问题),但严重处罚的其他用途PowerSqrt.

Sas*_*sha 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
Run Code Online (Sandbox Code Playgroud)

  • 这是因为`_Power`匹配'Power [___]`所以你的模式正在寻找`Power [___] [ - 1,_]`并且没有.你的模式将匹配`(a ^ b)[ - 1,n]`,其形式为'Power [a,b] [ - 1,n]`.正确的模式应该是'Power [-1,_]`. (3认同)