【问题标题】:SymPy - apply limits to an indefinite integralSymPy - 对不定积分应用限制
【发布时间】:2013-02-07 16:21:29
【问题描述】:

在 SymPy 中,是否可以对不定积分应用极限并对其求值?

import sympy
from sympy.abc import theta

y = sympy.sin(theta)

Y_indef = sympy.Integral(y)
Y_def = sympy.Integral(y, (theta, 0, sympy.pi / 2))

Y_def.evalf() 产生一个数字。

我正在寻找类似Y_indef.evalf((theta, 0, sympy.pi/2)) 的东西来获得相同的答案。

【问题讨论】:

  • 为什么不只计算积分区间边界处的不定积分,然后将这两个值相减?
  • 我想我更想弄清楚上面的 Y_indef 和 Y_def 对象之间的区别,是否可以对 Y_indef 做一些事情以使其表现得像 Y_def。
  • @DavidZwicker 这种天真的方法通常不会奏效。如果集成域中有极点,您将得到错误的答案。此外,通常可以计算定积分,但不能计算不定积分(如果您只对数值评估感兴趣,这绝对是正确的)。

标签: python sympy integral


【解决方案1】:

我不知道直接的方法,但是您可以从Y_indef 中提取信息以创建定积分:

>>> indef = Integral(x)
>>> to_be_integrated, (free_var,) = indef.args
>>> definite = Integral(to_be_integrated, (free_var, 1, 2))

.args 是一个通用属性,包含构造大多数 SymPy 对象所需的任何内容。

编辑:解决问题。

  1. SymPy 可能会成功评估定积分,但同时无法解决其不定版本。这是由于存在要应用于定积分的其他算法。

  2. 定积分和不定积分都是同一类的实例。唯一的区别是它们在.args 中包含的内容。考虑到 SymPy 主要使用 Integral 作为表示它无法求解积分的标志(即,当所有实现的算法都失败时,integrate 函数返回 Integral),还没有感觉到对不同类的需求。

【讨论】:

  • 这是正确的。这样做的唯一方法是创建一个新的 Integral 并对其进行评估,这可以通过一个简单的辅助函数来完成。
  • 谢谢。这正是我想要的。
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 2020-07-30
  • 2021-09-11
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多