2012-01-26 53 views
3

在項目歐拉,a problem要求我寫一個程序,從諧波序列發現的20項收斂值:項目歐拉#368(數學公式)

1/111, 1/222, 1/333, 1/444, 1/555, 1/666, 1/777, 1/888, 1/999, 1/1000, 1/1110, 1/1111, 1/1112, 1/1113, 1/1114, 1/1115, 1/1116, 1/1117, 1/1118, and 1/1119 

我想自己寫程序解決問題,但是,沒有處理Calc II,我必須閱讀Divergence/Convergence。所有的解釋都涉及可以用公式表示的系列。據我所知,這個系列不能。

所以,問題是:

是否有一個公式來表示這個系列還是有找到這個級數的收斂沒有公式的方法?

+1

屬於http://programmers.stackexchange.com 專業程序員對關於軟件開發的概念性問題感興趣的問答 – Mchl

+0

請注意,實際任務與您陳述的不同。你需要找到這些20個元素被去除的諧波系列的收斂。 – Mchl

+2

傑出的是,我誤解了「找到系列收斂到的值」這一短語,與刪除的20個術語相關,而不是沒有20個術語的剩餘系列。基於此,我找到了一篇名爲「SUMMER CURIOUS,SLOWLY CONVERGENT,HARMONIC SUBSERIES」的THOMAS SCHMELZER和ROBERT BAILLIE,這篇文章解決了我的問題。謝謝Mchl – Neobane

回答

1

如果您仔細閱讀問題,您會發現其實有一個公式。你正在處理的序列是一個諧波序列,從中刪除了具有3個或更多相同連續數字的項。這裏的蠻力方法是將所有諧波系列的項全部相加,直到達到要求的精度爲止。 Ruby的Rational類看起來非常好。

0

對於這個問題,天真和暴力的方法是編寫一個循環遍歷系列的分母並將分母的逆與總體和相加,因爲它不會被問題描述中所述的限制排除。

大綱將類似於此:

for i in (1..1200) 
    if is_valid(i) then 
    sum += 1.0/i 
    end 
end 

def is_valid(_i) 
    # implement the check here. hint: use modulo operator ;-) 
end 
8

萬一有人認爲暴力破解它:

蠻力方法將在這裏,因爲在大多數高編號項目歐拉的問題,沒有在合理的時間內完成。

假設您的計算機每秒可以處理10 數字(實際上它可以處理的數量要少得多)。總結有效條款多達10 n對於n > 9約需要10 n-9秒。

你需要走多遠才能確定小數點後十位的總數?

足夠遠以至於所有較大有效條款的總和小於10 -10。 10 遠遠不夠嗎?從號

1001001001001 

考慮下面的一千號碼無效號碼當中不乏

1001001001110 
1001001001111 
1001001001112 
... 
1001001001119 
1001001001222 
1001001001333 
1001001001444 
... 
1001001001999 
1001001002000 

這些都是19,所以有981個有效號碼和相應的總和大於1001001002000分之981大,這超過9 * 10 -10。根據這些方面的一些進一步推理表明,你將不得不蠻力強於10 - 事實上,在餘下的有效條款之和變得小於10之前,你必須超越10 -10

在宇宙開始時開始的蠻力不會遠遠靠近可靠的答案。

+0

+1 - 非常聰明。 – duffymo

+2

這就是歐拉工程所關心的+1 +1 – Mchl