如何简化sympy中指数的对数?

Ser*_*gal 7 python symbolic-math sympy

当我打字

import sympy as sp
x = sp.Symbol('x')
sp.simplify(sp.log(sp.exp(x)))
Run Code Online (Sandbox Code Playgroud)

我得到

log(e^x)
Run Code Online (Sandbox Code Playgroud)

而不是x. 我知道此功能“没有任何保证”。

题。是否有一些特定的简化(通过级数扩展或其他方式)将指数的对数转换为恒等函数?

Ser*_*ity 7

您必须设置x为真实类型,您的代码才能工作:

import sympy as sp
x = sp.Symbol('x', real=True)
print(sp.simplify(sp.log(sp.exp(x))))
Run Code Online (Sandbox Code Playgroud)

输出:x

对于x这个公式的复数结果并不总是等于x。例子在这里


smi*_*chr 7

如果您想强制简化,expand可以提供帮助,因为它提供的force关键字基本上可以为您做出这样的某些假设,而您无需将变量声明为真实变量。但是要小心结果——当这些假设不成立时,您不会想要使用它。

>>> log(exp(x)).expand(force=True)
x
Run Code Online (Sandbox Code Playgroud)