(我做了一些改变......)
我经常想简化函数的参数,或者对它应用模式,例如.我想改变:
Exp[a(b+c)]
Run Code Online (Sandbox Code Playgroud)
成
Exp[a b + a c]
Run Code Online (Sandbox Code Playgroud)
简单的模式没有帮助:
Sin[a(b+c)] /. Sin[aaa_] -> Sin[Expand[aaa]]
Run Code Online (Sandbox Code Playgroud)
又给了
Sin[a(b+c)]
Run Code Online (Sandbox Code Playgroud)
但是,除了Simplify/Expand之外的功能,它似乎做了我所期望的:
Sin[a (b + c)] /. Sin[aaa_] -> Sin[f[aaa]]
Run Code Online (Sandbox Code Playgroud)
给
Sin[ f[a(b+c)] ]
Run Code Online (Sandbox Code Playgroud)
我通常的解决方案是使用2种模式并保持:
(Exp[a(b+c)] /. Exp[aaa_] -> Exp[Hold[ Expand[aaa] ]] ) /. Hold[xxx_] -> xxx
Run Code Online (Sandbox Code Playgroud)
结果
E^(a*b + a*c)
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是代码变得比它需要的更复杂.
我的真实生活例子是:
ppp2 =
( ppp1
/. { ExpIntegralEi[aaa_] ->
ExpIntegralEi[Hold[aaa /. { u2 -> 0, w2 -> 0, u3 -> x, w3 -> x}]],
Log[aaa_] ->
Log[Hold[aaa /. {u2 -> 0, w2 …Run Code Online (Sandbox Code Playgroud)