python - 如何在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 中定义这样的运算符有关?
解决方案
一般来说,根据赖斯定理,这是不可能的。因为您希望检查两段代码的重要属性,即该属性是可交换的,这里的一段代码表示函数。因此,它证明了决定“任何给定f
的g
函数是可交换的”是不可判定的。因此,您不能编写这样的函数来检查两个函数的可交换性。
推荐阅读
- python - dorps坐标的多维xarray?
- javascript - 在页面上找不到变量时,未定义不是对象错误
- time - 基于时间的唯一 ID,尽可能少的数字
- reactjs - Reactjs 没有正确订购额外的静态组件
- sql - 汇总某个日期范围内超过求和列的值
- ios - 使用 JSON 进行快速分页
- python - Tensoflow Model.fit 在使用自定义模型进行训练时增加了额外的维度
- tabs - 我在本机基础的滚动选项卡中遇到问题
- azure-active-directory - 自动化-Azure Active Directory 组导出到 Azure Data Lake
- javascript - 如何在猫鼬中推送到深度嵌套的数组?