【问题标题】:Determine square root of a double with series用系列确定双精度的平方根
【发布时间】:2020-05-25 00:22:58
【问题描述】:

问题:

使用下面的近似公式,编写一个返回实数平方根的函数或方法!使用序列 x[k + 1] = 1/2 * (x[k] + a / x[k]),如果 x1 = 1,它会收敛到 'a' 实参数的平方根。

我的解决方案类似,但没有使用这个公式:

public static double squareRoot(double a) {

    double k; 
    double root = a / 2;
    do {
        k = root;
        root = 0.5*(k+ (a / k));
    } while ((k - root) != 0);

    return root;`
}

【问题讨论】:

  • 在什么意义上不使用那个公式?
  • 我的方法有效,但我不确定它是否正确。
  • 为什么你认为你没有使用问题文本中的公式?
  • 因为行:双根= a / 2;和while循环。也许这不是最合适的解决方案。
  • 如果您不确定,请将其更改为 1。您认为还有什么不正确的吗?

标签: java math series square-root


【解决方案1】:

此算法称为Babylonian method。它收敛于任何正的初始值,所以你的代码是正确的。

但是,您应该在连续值之间的绝对差值小于一个小值(例如 1e-10)时立即返回,以确保代码结束。否则有死循环的风险。

【讨论】:

  • 感谢您的帮助,并对迟到的评论表示歉意。我在大学项目中需要这个。
猜你喜欢
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多