【问题标题】:Integrating and deriving absolute functions sympy集成和导出绝对函数 sympy
【发布时间】:2020-08-23 20:24:02
【问题描述】:

Sympy 通常是计算函数积分和导数的好工具。当函数碰巧包含一个绝对分量(|x|)时,由于某种原因,它似乎无法弄清楚。

例如当你写这样的东西时:

diff(abs(x+1))

你会得到以下输出:

sign⁡(x+1)

答案应该是(x+1)/|x+1|,那么sympy有什么问题吗,有办法解决吗?

【问题讨论】:

  • 在 sympy 中 sign(z) 被定义为 z/|z| 对于所有非零复杂 z
  • 好吧,有没有办法可以将其转换为 z/[z]?

标签: python sympy integral derivative calculus


【解决方案1】:

在 SymPy 中,sign(z) 定义为 z/|z|,用于复杂的非零 z。事实上,sign(z) 的另一个定义正好是abs(z) 的派生词: https://en.wikipedia.org/wiki/Sign_function#Definition

理想情况下应该可以将rewrite(Abs)sign 一起使用,但目前不能: https://github.com/sympy/sympy/issues/19277

请注意,如果没有任何方法知道x+1 是非零的(例如,如果x 被声明为正数,则在您的情况下重写将不起作用)。

您可以使用 replace 手动强制重写:

In [4]: s
Out[4]: sign(x + 1)

In [5]: s.replace(sign, lambda arg: arg/Abs(arg))
Out[5]: 
 x + 1 
───────
│x + 1│

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多