gpt4 book ai didi

python - 包含另一个函数、传播参数的通用函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:47 25 4
gpt4 key购买 nike

我想使用 sympy 来帮助我简化表达式,但是我需要继承的部分是函数参数。这是一个玩具问题,但大致如下:

example_equation

到目前为止,我知道我可以创建泛型函数,但传播参数却让我望而却步:

tau_1, tau_2, tau_3, x = symbols("tau_1, tau_2, tau_3, x")
f = Function("f")
g = Function("g")
h = Function("h")
delta = Function("delta")
f = tau_1 + delta(x)
g = f(x + tau_2)

结果如下:

TypeError: 'Add' object is not callable

是否可以在 sympy 中完成我正在寻找的事情?

最佳答案

首先,表达式和函数是有区别的。例如,expr = sin(x) + cos(x) 是一个表达式;它不可调用,这意味着您不能执行 expr(y+1) 或类似的操作(您可以执行 expr.subs(x, y+1),尽管)。

如果您想要看起来像 sin(x) + cos(x) 但实际上是函数的东西,请使用 Lambda (这是 Python 的 lambda 的 SymPy 版本)。

f = Lambda(x, sin(x) + cos(x))

那么f(y+1)就是sin(y+1) + cos(y+1)

在你的符号中,那将是

f = Lambda(x, tau_1 + delta(x))
g = Lambda(x, f(x + tau_2))

现在 g(2) 是 tau_1 + delta(tau_2 + 2)

另外,请注意 f = Function("f") 没有任何意义,因为它稍后会被 f = ... 覆盖。您可能将语句 f = Function("f") 视为一种类型声明:“我声明 f 是一个函数,并期望对 f 的后续赋值知道它是一个函数”。但这只是一个赋值,而不是类型声明;因此被任何后续赋值覆盖。说 f = Function("f") 意味着你创建了一个未定义的函数 f,就是这样。 SymPy 对象是不可变的,以后不能向 f 添加更多功能,只能覆盖它。

关于python - 包含另一个函数、传播参数的通用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48173823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com