2010-04-12 31 views
2

知道我們可以使用分而治之算法來計算大指數,例如2 exp 100 = 2 exp(50) * 2 exp(50),這是更有效率,這種方法是有效的使用根?例如2 exp (1/100) = (2 exp(1/50)) exp(1/50)分而治之的方法來計算根

換句話說,我想知道(n exp(1/x))(n exp(1/y))更有效x < y和其中x和y是整數。

+0

大概不會。你正在處理浮動,而不是整數在這裏... – 2010-04-12 18:47:09

+0

這是我想知道的是:(n exp(1/x))對於x fimbeault 2010-04-12 18:51:23

+0

@ hellsoul153您可以在http://mathoverflow.net上提問 – stacker 2010-04-12 19:20:57

回答

0

由於x,y是浮點數exp(1/x)對於所有的x<y可能不會比exp(1/y)效率更高。

不過分點而治之算法是

如果我們有像exp(1/x)我們不會再計算它,即我們把2^N成更小的尺寸2^(N/2) * 2^(N/2)兩個同樣的問題,我們計算2^(N/2)只有一次

同樣對於exp(2/x)可以分爲exp(1/x)*exp(1/x),我們將只需要計算exp(1/x)一次。這應該會提高性能。

還有較小的數字在分母的幫助。

所以我認爲這應該很好。

+1

我不確定。得到答案的最佳方法是使用適當的庫。我只是認爲很多問題都沒有被人注意,並在這裏的地毯下掃蕩。應用數學是一門令人興奮的學科,但也可能很難。我認爲我們在這裏過分簡化了答案。另外,我會使用一個庫來計算一個指數,而不是自己決定。 – 2010-04-12 21:03:03

+0

好吧,接着我的問題,然後對我的例子中的數學錯誤感到抱歉:P – fimbeault 2010-04-14 01:24:51

1

我不認爲當你有非整數指數時使用分而治之的方法。我會假設用一個泰勒多項式來計算x^y如e ^(y ln(x))。你可以用分而治之計算y的整數部分,然後再乘以實部。但把它分成兩半是沒有意義的。也:

2 EXP(1/100)=(2 EXP(1/50))EXP(1/50)

這是不正確的。 (1/100)

(2exp(1/50))exp(1/50)= 2exp(1/50 + 1/50)= 2 * exp(1/25)!= 2exp(1/100)

你會做:

2 EXP(1/100)= 2 * EXP(1/200)* EXP(1/200)

+0

他似乎意味着別的(非標準)與「exp」。 – Svante 2010-04-13 11:18:56

+1

好的,即使他指的是指數運算符,他寫2 ^(1/100)= 2 ^(1/50)2 ^(1/50)時仍然是錯誤的。它仍然必須是2 ^(1/100)= 2 ^(1/200)2 ^(1/200)。我實際上想不出一種會影響他的行爲。 – JSchlather 2010-04-13 13:39:08