我希望将以下内容和功能集成在一起。
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)
。无法理解代码的错误......
答案 0 :(得分:0)
-log(1-x)
和-log(x-1)
都是有效答案。这是在issue tracker上讨论的,所以我从那里引用。
按日志规则
-log(x-1)=-(log(1-x)+log(-1))
,log(-1)=i*pi
(e**(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)