【问题标题】:Exponentiation of a Java BigInteger with a value lower than 1 [duplicate]值小于 1 的 Java BigInteger 的幂运算 [重复]
【发布时间】:2011-05-13 08:13:13
【问题描述】:

可能重复:
How to do a fractional power on BigDecimal in Java?

我有一个 BigInteger A,我需要用 1/b 取幂(b 是一个 int)。

我的问题是 A 只支持 A.pow(int) 这不适合我的情况。

有什么解决方法吗?

【问题讨论】:

  • 这肯定需要浮点运算。

标签: java biginteger exponentiation


【解决方案1】:

Newton's method 是你的果酱。

【讨论】:

  • 牛顿的标量取幂方法?过度杀伤我的想法。
  • 什么是标量取幂?如果你取 1/b 的幂,且 b > 1,那将变成分数。对于这种情况,我还没有弄清楚牛顿的方法是否会变得更简单,但我怀疑它确实如此。 “经典”牛顿示例适用于 b=2(又名平方根)。你如何建议这样做?我没有看到你提供更好的答案。
  • @David Heffernan - 查看了您的网站。 OrcaFlex 看起来是一款非常不错的产品。我曾经是一名机械工程师,使用 FEA 解决固体力学和传热问题。您的代码正在解决的问题 - 非线性动态流固耦合 - 非常具有挑战性。我很想知道更多。确实是一些非常好的工作。
  • 感谢您的客气话。实际上,OrcaFlex 在总体方案中是相对基础的,但它做得如此出色的是让工程师的工作变得简单、高效和愉快。令人惊讶的是,很少有代码尝试这样做,这就是我们的产品如此成功的主要原因。我们也使用牛顿的方法,非常糟糕!
【解决方案2】:

因为 BigInteger 用于有理数,而分数幂是实数。 http://en.wikipedia.org/wiki/Real_number

解决方法是使用临时浮点数,然后逼近最接近的 BigDecimal。

【讨论】:

    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2010-09-26
    • 2015-08-04
    相关资源
    最近更新 更多