2010-01-14 23 views
0

令人驚訝的對齊發生在2048/5/28,內部5行星 具有日心經度(度): 248.229,66.631,246.967,249.605,67.684。線性適合行星位置

行星距離線(通過溶膠) 最多0.875度,坡度67.823度。在這種情況下,該方法尋求(PA)將給出: PA(248.229,66.631,246.967,249.605,67.684)=

我試圖兩個簡單的算法,該算法都失敗的情況下(67.823,0.875): 2003/9/9:340.256,180.320,346.156,342.316,150.285

一種方法給出斜率= 127.867,偏差= 51.019和另一種271.867,85.251。 我認爲一個正確的方法會給s = 163.466,d = 7.515。

主要問題是Sol兩側的行星可能(幾乎)在同一條線上。

Python或javascript讚賞。 耶我想出瞭如何編輯!或不。

def score3(wList): 
    wSize = len(wList) 
    #print wList 

    first = wList[0] 
    d1 = first - 90.0 
    if d1 < 0.0: d1 += 360.0 
    d2 = first + 90.0 
    if d2 > 360.0: d1 -= 360.0 
    if d1 > d2: d1,d2 = d2,d1 

    sum = 0.0 
    for wx in range(0,wSize): 
    curr = wList[wx] 
    if (curr > d1) and (curr < d2): 
     new = curr 
    else: 
     new = (curr + 180.0) % 360.0 
     wList[wx] = new 
    sum += new 
    #print '%7.3f --> %7.3f' % (curr, new) 
    avg = sum/wSize 
    #print avg, wList 

    score = 0.0 
    for wx in range(0,wSize): 
    curr = wList[wx] 
    diff = curr - avg 
    if diff < 0: diff = - diff 
    score += diff 
    score /= wSize 

    return avg, score 
+1

難道這是家庭作業嗎? – Bobby 2010-01-14 16:14:17

+0

數學問題應該去mathoverflow.net。 – kennytm 2010-01-14 16:18:11

+0

發佈您嘗試過的內容,然後您可以對方法進行批評 – KevinDTimm 2010-01-14 16:20:19

回答

0

阿呆如糞土方法,應該是很明顯的原因沒有工作:您的數據可能是病理性的半平面映射到任何選擇。我要推薦一個least squares approach,但你需要處理徑向模糊。

這意味着,你正在尋找最小化功能是:

\sum (forceAngleIntoQuandrantI(a_i - A))^2 

或等價的東西。也就是說,這個星球絕對不會超過建議線路90度以上。

現在,如果您使用最初顯示的強制程序(您仍然可以在編輯歷史記錄中找到該答案),則問題不再是分析性的,您必須使用迭代方法(請參閱Bisection Method爲一個簡單的方法)。或者,可以注意到,罪^ 2(THETA)的單調在象限I,IV對稱增加和關於+ - 90度線,並儘量減少

\sum sin^4(a_i - A) 

而不使用在MathWorld鏈路所描述的分析方法削波(或如果您願意,可以使用look at wikipdia)。