2014-01-22 26 views
1

這看起來有些奇怪,但我試圖將一些算術概念擴展到幾何空間,並且我不缺少停止塊。這次的具體問題是幾何空間的等效最小平方度量。幾何對稱操作

例如平方具有算術上的這個特徵,因爲算術逆僅僅是否定的。在代碼:

def arithmetically_symmetric(a): 
    return a**2 

arithmetically_symmetric(a) == arithmetically_symmetric(-a) 
>>> True 
arithmetically_symmetric(a) == arithmetically_symmetric(b) 
>>> False 

然而,在一個幾何空間,逆是反轉,併爲我的生活,我不能想出一個辦法做到這一點,而不只是有某種case語句。基本上我尋找一個工作像這樣的功能:添加

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 

因爲我的主要抱怨這裏是理論上的,而不是實際的。

+5

這個問題似乎是題外話題,因爲主要問題是數學問題;如果你知道答案,那麼在Python中實現它將是微不足道的。所以它可能屬於其他地方,如[數學](http://math.stackexchange.com)。 – abarnert

+0

你有沒有考慮過寫幾何圖形或拓撲結構的書?這聽起來像是可能被相當充分研究的東西。 – Marcin

+0

@abarnert我嘗試過,但他們認爲它太像編程,所以我把它移到這裏... –

回答

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)。爲此,您只需乘以共軛而不是平方。

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 
+0

但是這隻適用於正數,正數很容易 - 你可以做'a ** 2 +(1/a ** 2)'。 – abarnert

+0

@abarnert:OP在這種情況下並沒有真正定義他想要發生的事情,所以我不會爲解決這個問題而走出困境。有幾個「幾何對稱」的解決方案,我只是介紹了這一點,以提醒OP日誌將乘法轉換爲加法,這在這類問題中考慮非常有用。 – tom10

+1

是的,這對理解這個問題絕對有幫助。但我認爲在這種情況下他想要發生的事情非常明顯:'gs(-2)== gs( - 。5)'。他還能指什麼? – abarnert