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