如何简化sympy中的指数对数?
How to simplify logarithm of exponent in sympy?
当我输入时
import sympy as sp
x = sp.Symbol('x')
sp.simplify(sp.log(sp.exp(x)))
我得到
log(e^x)
而不是 x
。我知道 "there are no guarantees" 这个函数。
Question. Is there some specific simplification (through series expansion or whatsoever) to convert logarithm of exponent into identity function?
您必须将 x
设置为真实类型,您的代码才能正常工作:
import sympy as sp
x = sp.Symbol('x', real=True)
print(sp.simplify(sp.log(sp.exp(x))))
输出:x
.
对于复杂的 x
,此公式的结果并不总是等于 x
。例如 here.
如果您想强制简化,expand
可以提供帮助,因为它提供了 force
关键字,基本上可以为您做出这样的某些假设,而无需将变量声明为真实变量。但要小心结果——当这些假设不合理时,您将不想使用它。
>>> log(exp(x)).expand(force=True)
x
您还可以在简化函数中将参数“inverse”设置为“True”:
>>> simplify(log(exp(x)), inverse=True)
x
当我输入时
import sympy as sp
x = sp.Symbol('x')
sp.simplify(sp.log(sp.exp(x)))
我得到
log(e^x)
而不是 x
。我知道 "there are no guarantees" 这个函数。
Question. Is there some specific simplification (through series expansion or whatsoever) to convert logarithm of exponent into identity function?
您必须将 x
设置为真实类型,您的代码才能正常工作:
import sympy as sp
x = sp.Symbol('x', real=True)
print(sp.simplify(sp.log(sp.exp(x))))
输出:x
.
对于复杂的 x
,此公式的结果并不总是等于 x
。例如 here.
如果您想强制简化,expand
可以提供帮助,因为它提供了 force
关键字,基本上可以为您做出这样的某些假设,而无需将变量声明为真实变量。但要小心结果——当这些假设不合理时,您将不想使用它。
>>> log(exp(x)).expand(force=True)
x
您还可以在简化函数中将参数“inverse”设置为“True”:
>>> simplify(log(exp(x)), inverse=True)
x