计算没有幂函数的for循环中的小数指数

时间:2010-08-31 07:06:25

标签: algorithm math

我在这方面的数学有点不稳定。有没有人知道如何使用除* / - +和for循环之外的数学函数来计算10 ^ 2.2等功率?我无法访问数学库(并且无法导入/包含它),但需要计算这些东西。嗯..也许我应该看看数学库是如何做到的。

4 个答案:

答案 0 :(得分:5)

您可以计算日志&指数仅使用具有泰勒(或Maclaurin)系列展开的基本算术。所以,你应该能够利用某些身份:

exp(ln(a)) = a
ln(a^b) = b*ln(a)
ln(1+x) = x - (x^2)/2 + (x^3)/3 - ... + ...
exp(x) = 1 + x + (x^2)/2 + ...

看看你能做些什么......

答案 1 :(得分:1)

您可以使用此方法 - http://mathworld.wolfram.com/ContinuedFraction.html来获得非常接近的近似值。

答案 2 :(得分:1)

鉴于:

a ^ (m / n) == nth_root(a) ^ m

转换exponent to a fraction,然后计算nth root,然后将结果提升到第m次幂。

(您必须编写自己的pow函数。)

答案 3 :(得分:1)

将指数表示为分数并将两个部分分开(如果数字太大,则可以使用连续的分数展开来获得良好的近似值):

2.2 = 22/10 = 11/5

10 ^ 2.2 = 10 ^(11/5)=(10 ^ 11)^(1/5)

整数部分应该不是问题(参见http://en.wikipedia.org/wiki/Exponentiation_by_squaring)。然后,您可以通过此处描述的算法之一计算根:http://en.wikipedia.org/wiki/Nth_root_algorithm