Tom*_*ens 7 wolfram-mathematica
我需要找到一个转换表达式的方法
a^(1+m+n) b^(2+2m - 2n)
Run Code Online (Sandbox Code Playgroud)
成
(a b^2)^m (a/b^2)^n (a b^2),
Run Code Online (Sandbox Code Playgroud)
也就是说,使用相同的指数对术语进行分组.我尝试使用Collect []等,但无法使用任何东西.
有什么建议?
谢谢,汤姆
Hei*_*ike 10
使用Log
与组合CoefficientRules
:
exp = a^(1 + m + n) b^(2 + 2 m - 2 n);
Times @@ (Exp[#[[2]]]^(Times @@ ({n, m}^#[[1]])) & /@
CoefficientRules[PowerExpand[Log[exp]], {n, m}])
Run Code Online (Sandbox Code Playgroud)
输出:
a (a/b^2)^n b^2 (a b^2)^m
Run Code Online (Sandbox Code Playgroud)
你可以这样做,例如:
log[x_*y_] := log[x] + log[y];
log[x_^y_] := y*log[x];
log1 /: a_*log1[b_] := log1[b^a];
log1 /: Plus[x__log1] := log1[Times @@ Map[First, {x}]];
exp[HoldPattern[Plus[x__]]] := Times @@ Map[exp, {x}];
exp[log1[x_]] := x
Run Code Online (Sandbox Code Playgroud)
然后:
In[58]:= exp[Collect[Expand[log[a^(1+m+n) b^(2+2m-2n)]],{m,n}]]/.log->log1
Out[58]= a (a/b^2)^n b^2 (a b^2)^m
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2060 次 |
最近记录: |