SymPy - 对无限积分应用限制

Tim*_*m D 4 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))
Run Code Online (Sandbox Code Playgroud)

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

我正在寻找Y_indef.evalf((theta, 0, sympy.pi/2))能得到相同答案的东西.

Kra*_*nov 6

我不知道直接的方式,但是你可以从中提取信息Y_indef以创建一个明确的积分:

>>> indef = Integral(x)
>>> to_be_integrated, (free_var,) = indef.args
>>> definite = Integral(to_be_integrated, (free_var, 1, 2))
Run Code Online (Sandbox Code Playgroud)

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

编辑:解决问题的评论.

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

  2. 确定和不定积分都是同一类的实例.唯一的区别是它们包含的内容.args.鉴于SymPy主要Integral用作标志来说它无法解决积分(即当所有实现的算法都失败时integrate函数返回),因此尚未感觉到需要不同的类Integral.