这看起来有点奇怪,但我正在尝试将一些算术概念扩展到几何空间,而且我不缺少停止块。这次的具体问题是几何空间的等效最小二乘度量。
例如,由于算术逆仅是否定,因此平方具有此特征。在代码中:
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
因为我在这里的主要抱怨是理论上的而不是实际的。
答案 0 :(得分:1)
对数的平方怎么样?像
这样的东西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
答案 1 :(得分:1)
如果您只需要它来处理正数,这很容易:
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)
。为此,你只需要乘以共轭而不是平方。