sympy:如何评估绝对值的积分

Posted

技术标签:

【中文标题】sympy:如何评估绝对值的积分【英文标题】:sympy: how to evaluate integral of absolute value 【发布时间】:2016-09-19 07:57:56 【问题描述】:

当我尝试简化sympy 中的以下积分时,它不会计算,即输出为 $\int_-1^1 |z| dz$ 而我期望的输出是 1。

z = symbols('z', real=True)
a = integrate(abs(z), (z, -1, 1))
simplify(a)

将计算z 上没有绝对值的相似积分。

如何让sympy 评估这个积分?

【问题讨论】:

我的印象是 sympy 的简化还没有达到应有的水平。 simpy 中还有其他几种简化方法(trigsimp、ratsimp、powsimp、combsimp,...),但我不指望它们能够简化积分。有时简化会失败,即使它看起来很简单。在这种情况下,您也可以使用 .evalf() 方法。也可以在这里看看:docs.sympy.org/latest/tutorial/simplification.html 【参考方案1】:

integrate 已经尽其所能评估积分。如果你得到一个 Integral 对象,这意味着它无法评估它。唯一可能有帮助的是以 SymPy 可以识别的方式重写被积函数。

查看this issue,看起来一种解决方法是将其重写为Heaviside:

In [201]: z = symbols('z', real=True)

In [202]: a = integrate(abs(z).rewrite(Heaviside), (z, -1, 1))

In [203]: a
Out[203]: 1

【讨论】:

【参考方案2】:

我相信你应该使用 Sympy 内置的 Abs() 函数。

享受吧!

【讨论】:

您好,感谢您的回复。不幸的是,我已经尝试过内置的sympy.Abs 功能,但没有成功。另外,我相信abssympy.Abs 是同一个功能。 abs 是正确的,因为它只是调用 z.__abs__ 方法,该方法为每个对象(浮点数或 sympy 符号等)定义不同。

以上是关于sympy:如何评估绝对值的积分的主要内容,如果未能解决你的问题,请参考以下文章

数学知识整理:不定积分

sympy与余弦不能正确积分?

数学神器!Sympy 模块解数学方程解微积分

在 sympy 中评估系数而不是指数

反常积分判敛问题

人工智能数学基础---定积分2:定积分的性质