如何通知Sympy L是有界的(0 <l <∞)

时间:2018-07-17 09:05:06

标签: sympy

=“”

有时Sympy会给我一些替代答案,具体取决于函数参数,例如

integrate(sin(pi*x/L), (x, 0, L))

⎧         π    
⎪ 0   for ─ = 0
⎪         L    
⎨              
⎪2⋅L           
⎪───  otherwise
⎩ π            

我知道值L是正数并且是有限的,因此第一个答案与我无关...我如何告诉Sympy π/L严格大于零,或者,正如我在标题中所述,L有界吗?

1 个答案:

答案 0 :(得分:2)

SymPy符号也可以表示无穷大(oo-oozoo)。可以对这些进行一些算术运算。当L为无穷大时,pi / L为零,因此我们得到的积分为0,即为零。从这个意义上说,SymPy的答案是正确的。如果L表示是有限的,则用

声明为L
L = symbols("L", finite=True)

足以获得2*L/pi的答案。

或者您可以保留L并告诉SymPy不用担心积分的conds="none"参数的边缘情况。

integrate(sin(pi*x/L), (x, 0, L), conds="none")   # 2*L/pi

此外:real=True并不排除L是oo-oo的可能性,因为它们被认为是真实的:oo.is_real是True(这是一个有争议的观点SymPy开发)。