用任意参数替换 sympy 函数

Cra*_*aig 4 python sympy substitution

这应该是一项简单的任务,但我很难让它在 Sympy 中工作。我想用特定公式替换带有任意参数的未定义函数,例如:

from sympy import *
var('a b c')
f= Function('f')
test= f(a+b)
lin= test.subs({f(c):2*(c)})
print(lin)
Run Code Online (Sandbox Code Playgroud)

我想要打印出来

2*(a+b)
Run Code Online (Sandbox Code Playgroud)

但是,为此我必须使用

lin= test.subs({f(a+b):2*(a+b)})
Run Code Online (Sandbox Code Playgroud)

我是否必须将 f 定义为类才能进行此替换?

Oli*_* W. 5

当您进行像这样的高级表达式操作时(好吧,您的示例仍然很简单),replace 方法非常有用:

test.replace(f, lambda arg: 2*arg)  # returns: 2*x + 2*y
Run Code Online (Sandbox Code Playgroud)

来自文档:

[replace] 遍历表达式树,并从树的底部到顶部执行匹配子表达式的替换。

文档的第二个示例表明,任何函数都可以被另一个对其参数起作用的函数替换,如上面的示例所示。