在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中提取信息以创建一个明确的积分:
>>> 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作为标志来表示它无法解决积分(即当所有实现的算法都失败时积分函数返回Integral),因此尚未感觉到对不同类的需求.