【问题标题】:Can Sympy identify functions in expressions, if fuctions are defined?如果定义了函数,Sympy 可以识别表达式中的函数吗?
【发布时间】:2020-10-03 08:06:12
【问题描述】:

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

是否可以在表达式中找到自定义函数,并使用函数定义对其进行简化。

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

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

是否可以告诉 Sympy 简化此表达式以根据函数 f.... 给出结果,即 Sympy 的输出为:3 * f(x)。

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

谢谢。

【问题讨论】:

    标签: python function sympy symbolic-math


    【解决方案1】:

    我认为 Sympy 目前不支持您想要做的事情(例如,参见这个 stackoverflow question)。不过,可以用这段代码完成一些非常接近的事情:

    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 的函数。

    【讨论】:

    • 谢谢。您的代码建议有效,但这需要根据已知参数定义函数...即 Sympy 看不到 2 * exp(y) 并将其更改为 f,除非您明确将 f 定义为等于 2 * exp(y) 在较早的一行。让我们希望这是将来的附加功能。还是谢谢。
    • 您想要的(使用变量y 而不明确声明该函数依赖于它)在 sympy 中是不可能的,据我所知,永远不会。您需要明确声明符号以避免命名空间冲突和相关问题。我敢打赌,这是你能得到的好东西,但我可能错了。无论如何,我希望答案对你有所帮助。如果你愿意,欢迎讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多