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