Python 包含被函数的逆函数取消的函数的辛表达式

Python 包含被函数的逆函数取消的函数的辛表达式,python,regex,sympy,Python,Regex,Sympy,很明显,SymPy不能简化这样的表达式。有没有任何方法可以不必通过字符串操作来处理它?也就是说,类似这样的事情: from sympy import exp,log import sympy as sym x = sym.Symbol('x') expr = log(exp(x)) print(expr) print(sym.simplify(expr)) diff_expr = x - log(exp(x)) if diff_expr == 0: print('Expressi

很明显,SymPy不能简化这样的表达式。有没有任何方法可以不必通过字符串操作来处理它?也就是说,类似这样的事情:

from sympy import exp,log
import sympy as sym

x = sym.Symbol('x')

expr = log(exp(x))

print(expr)
print(sym.simplify(expr))

diff_expr = x - log(exp(x))
if diff_expr == 0:
    print('Expression was simplified!')

默认情况下,SymPy符号可以是复数。对于复数,关系
log(exp(x))==x
通常不正确:例如,
log(exp(2*pi*I))=0

通过声明符号为实来避免这种情况

func_comb = ['exp(log(','cos(acos(','log(exp(','acos(cos(','sin(asin(']
# replace string expression with '' and remove surplus ')'
expr = str(expr)
for func in func_comb:
    if func in expr:
        expr = expr.replace(func,'')
对于
asin(sin(x))==x
,仅为实是不够的:例如,
asin(sin(2*pi))=0
。这种关系只有在一定的时间间隔内才成立。从SymPy 1.2开始,函数
simplify
允许您使用
inverse=True
强制进行此类简化;此标志使Symphy假设所提供输入的预期“反向”关系确实成立

>>> x = sym.Symbol('x', real=True)
>>> log(exp(x))
x

默认情况下,SymPy符号可以是复数。对于复数,关系
log(exp(x))==x
通常不正确:例如,
log(exp(2*pi*I))=0

通过声明符号为实来避免这种情况

func_comb = ['exp(log(','cos(acos(','log(exp(','acos(cos(','sin(asin(']
# replace string expression with '' and remove surplus ')'
expr = str(expr)
for func in func_comb:
    if func in expr:
        expr = expr.replace(func,'')
对于
asin(sin(x))==x
,仅为实是不够的:例如,
asin(sin(2*pi))=0
。这种关系只有在一定的时间间隔内才成立。从SymPy 1.2开始,函数
simplify
允许您使用
inverse=True
强制进行此类简化;此标志使Symphy假设所提供输入的预期“反向”关系确实成立

>>> x = sym.Symbol('x', real=True)
>>> log(exp(x))
x

注意
x=asin(sin(x))
由于窦性函数是周期性的,所以大多数时候都是这样。好的,我通过添加另一个函数来修复它。*修复了它并添加了另一个函数注意
x=asin(sin(x))
由于窦函数是周期性的,所以大部分时间都是这样。很好,我通过添加另一个函数来修复它。*修复了它并添加了另一个函数