How to simplify logarithm of exponent in sympy?

六月ゝ 毕业季﹏ 提交于 2019-12-03 18:11:44

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!