牛顿迭代法求平方根循环停止条件是什么

z_huyu 2017-09-02 12:37:32
看Robert Sedgewick的《算法》时,遇到一个用牛顿迭代法求平方根的算法(P13),代码如下:

public static double sqrt (double c) {
if (c < 0) return Double.NaN;
double err = 1e-15;
double t = c;
while( Math.abs(t - c/t) > err * t)
t = (c/t + t) /2.0;
return t;
}

疑问:while循环的停止条件为什么是Math.abs(t - c/t) > err * t,而不是Math.abs(t*t - c) > err ?前一种停止条件相比于后一种优势在哪里?
thanks in advance!
...全文
558 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧