Python 几何对称运算

Python 几何对称运算,python,math,inverse,Python,Math,Inverse,这可能看起来有点奇怪,但我正在尝试将一些算术概念扩展到几何空间,我不缺少停止块。这次的具体问题是为几何空间提出一个等价的最小二乘度量 例如,平方运算在算术上具有这一特性,因为算术逆运算就是否定运算。代码: def arithmetically_symmetric(a): return a**2 arithmetically_symmetric(a) == arithmetically_symmetric(-a) >>> True arithmetically_symm

这可能看起来有点奇怪,但我正在尝试将一些算术概念扩展到几何空间,我不缺少停止块。这次的具体问题是为几何空间提出一个等价的最小二乘度量

例如,平方运算在算术上具有这一特性,因为算术逆运算就是否定运算。代码:

def arithmetically_symmetric(a):
    return a**2

arithmetically_symmetric(a) == arithmetically_symmetric(-a)
>>> True
arithmetically_symmetric(a) == arithmetically_symmetric(b)
>>> False
然而,在几何空间中,倒数就是倒数,就我的一生而言,如果没有某种案例陈述,我想不出一种方法来做到这一点。基本上,我正在寻找一个这样工作的函数:

geometrically_symmetric(a) == geometrically_symmetric(1/a)
>>> True
geometrically_symmetric(a) == geometrically_symmetric(b)
>>> False
添加最后一个条件,以使以下的平凡解决方案:

def geometrically_symmetric(a):
    return a * 1/a
这不是一个选择

具体而言,我正在寻找的解决方案不是:

def geometrically_symmetric(a):
    if a < 1:
        return 1/a
    return a
def几何对称(a):
如果a<1:
返回1/a
归还

因为我这里的主要抱怨是理论上的,而不是实践上的。

对数的平方如何?差不多

import math

def geometrically_symmetric(a):
    x = math.log(a)
    return x*x

geometrically_symmetric(2.) == geometrically_symmetric(.5)   # True

geometrically_symmetric(2.) == geometrically_symmetric(.6)   # False

如果您只需要它来处理正数,这很简单:

def gs(a):
    return a**2 + (1/a**2)
该结果由任何具有其自身乘法逆的正数共享,并且没有其他正数。例如,
gs(2)==gs(0.5)==4.25


不幸的是,它也与它的算术倒数相同:
gs(2)=gs(0.5)=gs(-2)==gs(-0.5)==4.25

但我们可以通过复制符号来解决这个问题:

def gs(a):
    return (a**2 + (1/a**2)) * abs(a)/a
现在,
gs(2)==gs(0.5)==4.25!=gs(-2)==gs(0.5)=-4.25

如果你不喜欢
abs
,因为里面有一个隐藏的
If
,那么,没有。坚持使用浮动,显然可以执行
a**2**.5


这就得到了所有的非零浮动。零显然在域之外,因为
gs(0)
应该等于
gs(1/0)
,这不是一个数字


但是,它仍然不适用于复数-
gs(i)==2i==gs(-1/i)
,但是
gs(1/i)=-2i==gs(-i)
。为此,你只需要乘以共轭,而不是平方。

这个问题似乎离题了,因为主要问题是数学;如果您知道答案,那么在Python中实现它将是微不足道的。所以它可能属于其他地方,比如。你有没有考虑过买一本关于几何学或拓扑学的书?这听起来像是已经被很好地研究过的东西。@abarnert我试过了,但他们认为这太像编程了,所以我把它移到了这里……同时,答案是否必须在域的相同范围内(float或rational或你正在使用的任何东西),还是可以是二维数(复数、对偶或双曲线)?由于
log()
1/x
映射到
-y
,因此
log(x)
的任何对称函数都应允许您执行所需操作。正如@tom10所提到的,
log(x)**2
可以很好地工作,但是更自然的函数可能是
exp(log(x)**2)==x**log(x)
,或者
exp(-log(x)**2)==x**(-log(x))
,但这只适用于正数,正数很容易,你只需要
a**2+(1/a**2)
@abarnert:OP并没有真正定义他希望在这种情况下发生什么,所以我不会特意去解决它。有多个解是“几何对称的”,我刚才介绍这个是为了提醒OP,log将乘法转换为加法,这对思考这类问题很有用。是的,这对理解这个问题绝对有帮助。但我认为很明显他想在这种情况下发生什么:
gs(-2)==gs(-5)
。他还能说什么?真的,我不想浪费时间去猜他的意思。如果你觉得你知道,那就给你更多的权力。你认为几何对称(a)=几何对称(1/a)不够清楚吗?对我来说,这对
a===-2
意味着什么似乎很明显。