如何编写自定义SymPy假设

时间:2019-04-03 06:13:56

标签: sympy

我正在尝试创建一个对象,该对象的单位间隔中的值是恒定的。 SymPy有一组built-in assumptions,具有许多有用的属性:奇/偶,正,素,复数等。但是,看来我必须自己用假设()构造它:

import sympy as sp

p   = sp.symbols('p', real=True, constant=True)
x   = sp.symbols('x', real=True)

with sp.assuming(sp.Q.is_true(0 < p), sp.Q.is_true(p < 1)):
    display(sp.Integral(x**(-p), (x, 1, sp.oo)))
    display(sp.Integral(x**(-p), (x, 1, sp.oo)).doit())
    display(sp.Integral(sp.cos(x), (x, 0, sp.oo)).doit())

但是,当我评估上面的积分时,它提供了两个结果,一个用于p> 1(超出了我的假设约束),一个用于p <1的未评估积分。

嗯...好吧,现在我看到了假设()是New Assumptions包的一部分,并且两个包没有很好地集成在一起。有没有办法为诸如inner_unit_interval,big_than_n,less_than_n之类的东西编写自定义假设?

0 个答案:

没有答案