【问题标题】:Calculate fractional exponent in for loop without power function在没有幂函数的for循环中计算小数指数
【发布时间】:2010-08-31 15:43:14
【问题描述】:

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

【问题讨论】:

标签: algorithm math


【解决方案1】:

您可以仅使用带有泰勒(或麦克劳林)级数展开的基本算术来计算对数和指数。因此,您应该能够利用某些身份:

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 + ...

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

【讨论】:

  • 如果他没有数学库,那么他可能也没有日志函数
  • @Seth 这就是他需要 for 循环的原因。换句话说,他现在做到了。
【解决方案2】:

鉴于:

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

转换您的exponent to a fraction,然后计算nth root,然后将结果提高到m次方。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-25
        • 2021-11-01
        • 2019-11-04
        • 2018-09-08
        • 1970-01-01
        • 2020-07-16
        • 2017-05-21
        相关资源
        最近更新 更多