Python 如果定义了函数,可以在表达式中识别函数吗?

Python 如果定义了函数,可以在表达式中识别函数吗?,python,function,sympy,symbolic-math,Python,Function,Sympy,Symbolic Math,我看到Symphy有一个symphy.Function功能,但在文档中找不到以下问题的答案 可以在表达式中找到自定义函数并使用函数定义来简化它们吗 作为一个非常简单的例子,我定义了函数:f(x)=2*exp(x) 现在让我们假设我有一些同态表达式:6*exp(y+z) 是否可以告诉Sympy简化此表达式以给出函数f的结果。。。。i、 因此,Sympy的输出是:3*f(x) 我发现使用.subs()可以简单地替换变量,但对于包含符号作为参数的函数,这似乎不起作用,如上所述 谢谢。我认为Symphy

我看到Symphy有一个
symphy.Function
功能,但在文档中找不到以下问题的答案

可以在表达式中找到自定义函数并使用函数定义来简化它们吗

作为一个非常简单的例子,我定义了函数:
f(x)=2*exp(x)

现在让我们假设我有一些同态表达式:
6*exp(y+z)

是否可以告诉Sympy简化此表达式以给出函数
f
的结果。。。。i、 因此,Sympy的输出是:
3*f(x)

我发现使用
.subs()
可以简单地替换变量,但对于包含符号作为参数的函数,这似乎不起作用,如上所述


谢谢。

我认为Symphy目前不支持您想做的事情(例如,请参阅此stackoverflow)。然而,使用此代码可以完成一些非常接近的操作:

from sympy import symbols, exp

x, f = symbols('x, f')
expr = 6 * exp(x)
f_func = 2 * exp(x)

print(expr.subs({f_func: f}))
# 3 * f

在上面的代码中,我假设您想要简化的表达式(
expr
在代码中)是x的函数。

我认为Symphy目前不支持您想要做的事情(例如,请参见此stackoverflow)。然而,使用此代码可以完成一些非常接近的操作:

from sympy import symbols, exp

x, f = symbols('x, f')
expr = 6 * exp(x)
f_func = 2 * exp(x)

print(expr.subs({f_func: f}))
# 3 * f

在上面的代码中,我假设您想要简化的表达式(
expr
在代码中)是x的函数。

谢谢。您的代码建议有效,但这需要根据已知参数定义函数。。。i、 e.Sympy无法看到2*exp(y)并将其更改为f,除非在前面的一行中明确定义f等于2*exp(y)。希望这是将来的一个附加功能。无论如何,谢谢。您想要的(使用变量
y
而不明确声明函数依赖于它)在Symphy中是不可能的,而且据我所知,永远也不可能。您需要显式声明符号,以避免名称空间冲突和相关问题。我敢打赌这是你能得到的最好的结果,但我可能错了。不管怎样,我希望答案对你有帮助。如果你愿意,欢迎讨论。谢谢。您的代码建议有效,但这需要根据已知参数定义函数。。。i、 e.Sympy无法看到2*exp(y)并将其更改为f,除非在前面的一行中明确定义f等于2*exp(y)。希望这是将来的一个附加功能。无论如何,谢谢。您想要的(使用变量
y
而不明确声明函数依赖于它)在Symphy中是不可能的,而且据我所知,永远也不可能。您需要显式声明符号,以避免名称空间冲突和相关问题。我敢打赌这是你能得到的最好的结果,但我可能错了。不管怎样,我希望答案对你有帮助。如果你愿意,欢迎讨论。