首页 > 解决方案 > 如何在python中交换两个运算符?

问题描述

例如,假设我有操作员 A 和操作员 B,它们作用于 f(x) = 2x。如何在 python 中创建一个说明 A(B(f(x))) == B(A(f(x))) 的函数?

这是我的尝试:

#Commutation: Creating a function that checks whether operators A and B commutate on some dummy function f(x) = 2*x
#[A,B](2x) =?= 0

def commutate(A,B):
    f = lambda x: 2*x
    if lambda x: A(B(f)) - B(A(f)) == 0:
        print('A and B commute!')
    else:
        print('A and B do not commute!')
         
A = lambda x: f(x)**2

B = lambda x: np.log(f(x))


commutate(A,B)

问题是我总是得到操作员 A 和 B 通勤,即使给不通勤的操作员也是如此。我怀疑这可能与我无法在 python 中定义这样的运算符有关?

标签: pythonnumpymathscipy

解决方案


一般来说,根据赖斯定理,这是不可能的。因为您希望检查两段代码的重要属性,即该属性是可交换的,这里的一段代码表示函数。因此,它证明了决定“任何给定fg函数是可交换的”是不可判定的。因此,您不能编写这样的函数来检查两个函数的可交换性。


推荐阅读