小编au7*_*700的帖子

如何简化/扩展/应用模式到函数的参数

(我做了一些改变......)

我经常想简化函数的参数,或者对它应用模式,例如.我想改变:

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)

wolfram-mathematica

3
推荐指数
2
解决办法
2137
查看次数

标签 统计

wolfram-mathematica ×1