from sympy import *
from sympy.abc import x
integrate(ln(x-4))
输出:
𝑥log(𝑥−4)−𝑥−4log(𝑥−4)
有没有办法将其转换为(x-4)*ln(x-4) - (x-4)
或(x-4)*ln(x-4) + 4 -x
您可以使用transform
:手动替换
In [2]: I = Integral(ln(x - 4), x)
In [3]: I
Out[3]:
⌠
⎮ log(x - 4) dx
⌡
In [4]: I.transform(x - 4, y)
Out[4]:
⌠
⎮ log(y) dy
⌡
In [5]: I.transform(x - 4, y).doit()
Out[5]: y⋅log(y) - y
In [6]: I.transform(x - 4, y).doit().subs(y, x - 4)
Out[6]: -x + (x - 4)⋅log(x - 4) + 4
或者,您也可以使用collect
:
In [7]: integrate(ln(x - 4))
Out[7]: x⋅log(x - 4) - x - 4⋅log(x - 4)
In [8]: integrate(ln(x - 4)).collect(log(x - 4))
Out[8]: -x + (x - 4)⋅log(x - 4)
这种情况错过了4
,但这是意料之中的事,因为反导数只在加法常数之前唯一定义。