conds ='无'在Sympy没有用

时间:2018-03-08 22:45:13

标签: sympy

我有以下积分

x,x1,x2,t=symbols('x x1 x2 t')
f=t*x1*x2*(x-t)**(-Rational('0.5'))
integrate(f,t).simplify()

这是一个分段函数

Piecewise((2*sqrt(x)*x1*x2*(-I*t**2*sqrt((t - x)/x) - I*t*x*sqrt((t - x)/x) + 2*t*x + 2*I*x**2*sqrt((t - x)/x) - 2*x**2)/(3*(t - x)), Abs(t/x) > 1), (2*sqrt(x)*x1*x2*(-t**2*sqrt((-t + x)/x) - t*x*sqrt((-t + x)/x) + 2*t*x + 2*x**2*sqrt((-t + x)/x) - 2*x**2)/(3*(t - x)), True))

我想忽略第一种情况,所以解决方案就是

integrate(f,t,conds='none').simplify()

但是这并没有改变输出,这仍然是

Piecewise((2*sqrt(x)*x1*x2*(-I*t**2*sqrt((t - x)/x) - I*t*x*sqrt((t - x)/x) + 2*t*x + 2*I*x**2*sqrt((t - x)/x) - 2*x**2)/(3*(t - x)), Abs(t/x) > 1), (2*sqrt(x)*x1*x2*(-t**2*sqrt((-t + x)/x) - t*x*sqrt((-t + x)/x) + 2*t*x + 2*x**2*sqrt((-t + x)/x) - 2*x**2)/(3*(t - x)), True))

我怎样才能忽略这些条件?

1 个答案:

答案 0 :(得分:0)

我认为conds不影响这个积分的原因是条件不是收敛条件,而是影响被积函数形式的条件。 conds的文档特别提到了融合的条件。

  

明确的不正确积分通常需要微妙的收敛条件。传递conds ='分段','分开'或'无'分别将这些作为分段函数返回,作为单独的结果(即结果将是元组),或者根本不返回(默认为'分段')

你可以通过用False替换它的条件来摆脱你不想要的情况。

>>> integrate(f, t).subs(Abs(t/x)>1, False).simplify()
2*sqrt(x)*x1*x2*(t**2*sqrt((-t + x)/x) + t*x*sqrt((-t + x)/x) - 2*t*x - 2*x**2*sqrt((-t + x)/x) + 2*x**2)/(3*(-t + x))