我希望改变像
这样的表达形式r^{-1-n} a^n
将Mathematica中的权力结合起来给予
[(a/r)^n] / r.
为实现这一目标,我已经编写了这个TransformationFunction
PowerReduce[Times[Power[a_, -1 - b_], Power[c_, b_]]] := Power[a, -1] Power[c/a, b]
适用于像这样的例子
Simplify[Power[r, -1 - n] Power[a, n], TransformationFunctions -> PowerReduce]
但如果我使用数值,则会失败,例如r=2
:
Simplify[ Power[2, -1 - n] Power[a, n], TransformationFunctions -> PowerReduce]
其他TransformFunction似乎与数值一起使用。例如,以下适用于数值和代数值。
MultAllVals[Power[a_, b_]] := a b
Simplify[ Power[2, -1 - n] Power[a, n], TransformationFunctions -> MultAllVals]
如何让Mathematica将n
的权力分组到一个Power []中?
答案 0 :(得分:7)
问题实际上是自动简化,而且很难对付。在许多情况下,Mathematica会将输入转换为它认为更简单,自动而不需要用户的同等形式,并且不需要使用任何Simplify
- 族函数。这种简化是否是正确的设计选择是一个意见问题。在某些情况下,它们非常有用,但很难撤消这种简化。
在您的特定情况下,请考虑:
In[55]:= (a/2)^n/2
Out[55]= 2^(-1-n) a^n
因此,无论您的转型是否真的有效,您的具体案例都将注定失败。事实上,它可以通过在r.h.中包含一些Print
语句来轻松检查。 PowerReduce
。一种方法是定义自己的函数,如times
,power
等,并让它们在某些情况下在某些时候衰减到Times
,Power
等。但是,使用这种方法,您会立即失去Simplify
等主要优势,内置插件如Times
和Power
- 即与这些功能相互关联的巨大且经过测试的内置规则库。也许可以设计一些混合方法,它将在表达的不同部分使用两者来简化,但这似乎必然是问题特定的。