1 /(1-x)与SymPy的集成在对数内部给出错误的符号

时间:2018-03-13 16:18:03

标签: sympy integral

我希望将以下内容和功能集成在一起。

import sympy
x = sympy.symbols('x')
e_a = 1/(1-x)
u_x = sympy.integrate(e_a,x)

print(u_x)
sympy.plot(u_x)

我的微积分记忆建议我得到-log(1-x),而同情回复-log(x - 1)。无法理解代码的错误......

1 个答案:

答案 0 :(得分:0)

-log(1-x)-log(x-1)都是有效答案。这是在issue tracker上讨论的,所以我从那里引用。

  按日志规则

-log(x-1)=-(log(1-x)+log(-1))log(-1)=i*pie**(i*pi)=-1)。 -log(x-1)-log(1-x)-i*pi相同,因此表达式实际上相差一个常数,这与采用表达式的导数时的结果没有区别。

  

这确实是正确的行为。 SymPy不会返回log(abs(x))进行积分(1 / x),因为它对复数不起作用。相反,答案是正确的,直到积分常数(可能很复杂)。默认情况下,所有SymPy操作都假定变量很复杂。

在线程结尾处建议了一些解决方法。

但是底线-log(x-1)是正确的,当x大于1时,它是所需的答案形式.SymPy不知道你的意思是x是小于1还是大于1。

要获得特定的反衍生物,请从给定的初始点进行整合。例如,从0开始的积分给出的反导数在x = 0时为0.

x, t = sympy.symbols('x t')
e_a = 1/(1-x)
u_x = sympy.integrate(e_a, (x, 0, t)).subs(t, x)    
sympy.plot(u_x)

antider