在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))
的内容来获得相同的答案。
答案 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对象所需的任何内容。
编辑:解决问题的评论。
SymPy可能会成功评估定积分,同时无法解决其无限期版本。这是因为存在要应用于定积分的附加算法。
明确和不定积分都是同一类的实例。唯一的区别是它们在.args
中包含的内容。鉴于SymPy主要使用Integral
作为标志来表示它无法解决积分(即integrate
函数返回Integral
时,所有人都不会觉得需要不同的类。实施的算法失败了。