问题
When I type
import sympy as sp
x = sp.Symbol('x')
sp.simplify(sp.log(sp.exp(x)))
I obtain
log(e^x)
Instead of x
. I know that "there are no guarantees" on this function.
Question. Is there some specific simplification (through series expansion or whatsoever) to convert logarithm of exponent into identity function?
回答1:
You have to set x
to real type and your code will work:
import sympy as sp
x = sp.Symbol('x', real=True)
print(sp.simplify(sp.log(sp.exp(x))))
Output: x
.
For complex x
result of this formula is not always is equal to x
. Example is here.
回答2:
If you want to force the simplification, expand
can help because it offers the force
keyword which basically makes certain assumptions like this for you without you having to declare your variables as real. But be careful with the result -- you will not want to use it when those assumptions are not warranted.
>>> log(exp(x)).expand(force=True)
x
来源:https://stackoverflow.com/questions/46129259/how-to-simplify-logarithm-of-exponent-in-sympy