知道我们可以使用分而治之算法来计算大指数,例如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是整数。
知道我们可以使用分而治之算法来计算大指数,例如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是整数。
由于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)
一次。这应该会提高性能。
还有较小的数字在分母的帮助。
所以我认为这应该很好。
我不确定。得到答案的最佳方法是使用适当的库。我只是认为很多问题都没有被人注意,并在这里的地毯下扫荡。应用数学是一门令人兴奋的学科,但也可能很难。我认为我们在这里过分简化了答案。另外,我会使用一个库来计算一个指数,而不是自己决定。 – 2010-04-12 21:03:03
好吧,接着我的问题,然后对我的例子中的数学错误感到抱歉:P – fimbeault 2010-04-14 01:24:51
我不认为当你有非整数指数时使用分而治之的方法。我会假设用一个泰勒多项式来计算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)
他似乎意味着别的(非标准)与“exp”。 – Svante 2010-04-13 11:18:56
好的,即使他指的是指数运算符,他写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
大概不会。你正在处理浮动,而不是整数在这里... – 2010-04-12 18:47:09
这是我想知道的是:(n exp(1/x))对于x
fimbeault
2010-04-12 18:51:23
@ hellsoul153您可以在http://mathoverflow.net上提问 – stacker 2010-04-12 19:20:57