You need to enable JavaScript to run this app. 不使用内置函数计算平方根时x=(x + n/x)/2迭代公式的原理是什么
优惠活动
大模型
产品
解决方案
定价
更多

不使用内置函数计算平方根时x=(x + n/x)/2迭代公式的原理是什么

你给出的代码是牛顿迭代法求解平方根的经典实现,核心迭代逻辑解释如下:

相关代码回顾

double n = 50, x = 1, last_x = 1;
do {
    last_x = x;
    System.out.println(last_x);
    x = (x + n / x) / 2;
} while (last_x != x);
System.out.println("Result: " + x);

迭代公式的赋值逻辑

这个公式来自牛顿-拉夫逊迭代法,目标是求解方程 x² = n 的正实根(也就是n的平方根):

  1. 我们要找的平方根s满足 s = n/s,如果当前的迭代值x比s大,那么n/x就会比s小,反之如果x比s小,n/x就会比s大
  2. 迭代步骤相当于取x和n/x的算术平均值,每次迭代都会把两个分别大于、小于真实平方根的数做平均,得到的结果会比原来的x更接近真实的s
  3. 从数学推导的角度看:我们把求平方根转化为求函数 f(x) = x² - n 的零点,对f(x)求导得导数为 2x,代入牛顿迭代的通用公式 x_{k+1} = x_k - f(x_k)/f'(x_k),整理后就刚好得到 x = (x + n/x)/2

选择该公式的原因

  • 收敛速度极快:对双精度浮点数来说,通常只要6-7次迭代就能达到精度上限,哪怕初始值选的比较差,收敛速度也远高于二分法等其他求根方案
  • 实现成本极低:只用到四则运算,不需要依赖任何数学内置函数,完全符合你不使用Math.sqrt()的需求
  • 精度判断简单:当两次迭代的x值完全相等时,说明已经达到了双精度浮点数能表示的最精确结果,直接停止迭代即可

内容的提问来源于stack exchange,提问作者Linh Đàm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 10:54:03