SymPy - 对无限积分应用限制

时间:2013-02-07 16:21:29

标签: python sympy integral

在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))的内容来获得相同的答案。

1 个答案:

答案 0 :(得分:6)

我不知道直接的方式,但是你可以从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时,所有人都不会觉得需要不同的类。实施的算法失败了。