Java 用级数求双精度的平方根

Java 用级数求双精度的平方根,java,math,series,square-root,Java,Math,Series,Square Root,问题是: 使用以下近似公式,编写一个返回实数平方根的函数或方法!使用序列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));

问题是:

使用以下近似公式,编写一个返回实数平方根的函数或方法!使用序列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;`
}

此算法称为。它收敛于任何正初始值,因此您的代码是正确的


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

此算法称为。它收敛于任何正初始值,因此您的代码是正确的


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

在什么意义上不使用该公式?我的方法可行,但我不确定它是否正确。为什么你认为你没有使用问题文本中的公式?因为行:double root=a/2;还有while循环。也许这不是最合适的解决方案。因此,如果您不确定,请将其更改为1。还有什么你认为可能不正确的吗?在什么意义上它没有使用这个公式?我的方法有效,但我不确定它是否正确。为什么你认为你没有使用问题文本中的公式?因为行:double root=a/2;还有while循环。也许这不是最合适的解决方案。因此,如果您不确定,请将其更改为1。您认为还有什么不正确的地方吗?谢谢您的帮助,很抱歉您的评论太晚了。我需要这个是为了一个大学项目。谢谢你的帮助,也很抱歉最近的评论。我需要这个做一个大学项目。