2010-04-12 78 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