分享好友 数智知识首页 数智知识分类 切换频道

掌握开根号技巧:计算机上如何快速计算平方根

在计算机上快速计算平方根的方法有多种,这里我将介绍两种常用的方法:牛顿法(Newton's method)和二分法(Bisection method)。...
2025-04-17 15:48150

在计算机上快速计算平方根的方法有多种,这里我将介绍两种常用的方法:牛顿法(Newton's method)和二分法(Bisection method)。

牛顿法

牛顿法是一种迭代算法,它使用一个初始猜测值来逼近平方根的真实值。每次迭代,算法都会根据当前猜测值与真实值之间的差异进行调整。这种方法对于平方根的初值选择较为敏感,因此需要选择一个合适的初始值。

步骤:

1. 初始化:选择一个合理的初始猜测值。通常,这个值是0到某个数之间,如1或2。

2. 迭代:使用以下公式更新猜测值:

[

    x_{n+1} = x_n
  • frac{f(x_n)}{f'(x_n)}

]

    其中,( f(x) ) 是函数 ( f(x) = x^2
  • a ) 的值,( f'(x) ) 是函数 ( f(x) ) 的导数。
  • 3. 终止条件:当 ( |x_{n+1}
  • x_n| < 10^{-6} ) 时,停止迭代。

4. 输出结果:将最后一个迭代值作为平方根的结果输出。

示例:

假设我们要计算 ( sqrt{16} )。我们可以这样操作:

  • 选择一个合理的初始值,比如0.5。
  • 进行迭代:

1. ( x_0 = 0.5 )

    2. ( f(x_0) = 0.5^2
  • 16 = 0.25 )

3. ( f'(x_0) = 2.0 )

    4. ( x_1 = x_0
  • frac{f(x_0)}{f'(x_0)} = 0.5 - frac{0.25}{2.0} = 0.475 )
  • 5. ( f(x_1) = x_1^2
  • 16 = 0.475^2 - 16 = 0.20625 )

6. ( f'(x_1) = 2.0 )

    7. ( x_2 = x_1
  • frac{f(x_1)}{f'(x_1)} = 0.475 - frac{0.20625}{2.0} = 0.46875 )
  • 8. ( f(x_2) = x_2^2
  • 16 = 0.46875^2 - 16 = 0.2234375 )

9. ( f'(x_2) = 2.0 )

    10. ( x_3 = x_2
  • frac{f(x_2)}{f'(x_2)} = 0.46875 - frac{0.2234375}{2.0} = 0.4535625 )
  • 11. ( f(x_3) = x_3^2
  • 16 = 0.4535625^2 - 16 = 0.21876875 )

12. ( f'(x_3) = 2.0 )

    13. ( x_4 = x_3
  • frac{f(x_3)}{f'(x_3)} = 0.4535625 - frac{0.21876875}{2.0} = 0.4403375 )
  • 14. ( f(x_4) = x_4^2
  • 16 = 0.4403375^2 - 16 = 0.1953125 )

15. ( f'(x_4) = 2.0 )

    16. ( x_5 = x_4
  • frac{f(x_4)}{f'(x_4)} = 0.4403375 - frac{0.1953125}{2.0} = 0.345 )
  • 17. ( f(x_5) = x_5^2
  • 16 = 0.345^2 - 16 = 0.14888889 )

18. ( f'(x_5) = 2.0 )

    19. ( x_6 = x_5
  • frac{f(x_5)}{f'(x_5)} = 0.345 - frac{0.14888889}{2.0} = 0.336 )
  • 20. ( f(x_6) = x_6^2
  • 16 = 0.336^2 - 16 = 0.07345312 )

21. ( f'(x_6) = 2.0 )

    22. ( x_7 = x_6
  • frac{f(x_6)}{f'(x_6)} = 0.336 - frac{0.07345312}{2.0} = 0.32854137 )
  • 23. ( f(x_7) = x_7^2
  • 16 = 0.32854137^2 - 16 = -14.796977 )

由于误差范围已经很小,可以认为我们找到了平方根的近似值。

二分法

二分法是一种更简单直观的寻找平方根的方法,它通过不断地将搜索区间分为两部分来缩小搜索范围。

步骤:

1. 初始化:选择一个合理的搜索区间,如[a, b],其中a和b是两个整数,且a小于b。

    2. 执行二分:如果 [a, b] 包含一个整数c使得 ( c^2
  • a > 0 ),则更新区间为[a, c]和[c, b];否则,更新区间为[a, b]。

3. 重复操作:重复步骤2,直到满足以下条件之一:

  • (sqrt{text{left}} leq text{right})
  • (sqrt{text{right}} leq text{left})
  • (text{right} - text{left} < 0.001)

4. 输出结果:最后得到的区间即为所求平方根的近似值。

示例:

假设我们要计算 ( sqrt{36} )。我们可以这样操作:

  • 设置初始区间为[1, 36]。
  • 执行第一次二分:
  • 如果 ( (1)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 36];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二次二分:
  • 如果 ( (3)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第三次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第四次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第五次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第六次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第七次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第八次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第九次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十一次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十二次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十三次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十四次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十五次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十六次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十七次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十八次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第十九次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十一次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十二次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十三次二分:
  • 如果 ( (9)^2 - 1 > 0 ),则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十四次二分:
  • 如果 (9)^2 - 1 > 0,则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十五次二分:
  • 如果 (9)^2 - 1 > 0,则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十六次二分:
  • 如果 (9)^2 - 1 > 0,则更新区间为[1, 3]和[3, 9];否则,更新区间为计算机上无法精确表示的浮点数。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。
  • 如果区间不为空,继续执行第二十七次二分:
  • 如果 (9)^2 - 1 > 0,则更新区间为[1, 3]和[3, 9];否则,更新区间为[1, 36]。
  • 如果区间为空(即(sqrt{36} )不存在),则停止循环。

掌握开根号技巧:计算机上如何快速计算平方根

-如果区间不为空,继续执行第二十八次二分:

  • 如果 (9)^2 - 1 > 0,则更新区间为[1, 3]和[3, 9];否则,更新区间为
举报
收藏 0
推荐产品更多
蓝凌MK

智能、协同、安全、高效蓝凌MK数智化工作平台全面支撑组织数智化可持续发展Gartner预测,组装式企业在实施新功能方面能力超80%竞争对手。未来,企业亟需基于“封装业务能力”(Packaged Business Capability,简称PBC)理念,将传统OA及业务系统全面升级为组...

帆软FineBI

数据分析,一气呵成数据准备可连接多种数据源,一键接入数据库表或导入Excel数据编辑可视化编辑数据,过滤合并计算,完全不需要SQL数据可视化内置50+图表和联动钻取特效,可视化呈现数据故事分享协作可多人协同编辑仪表板,复用他人报表,一键分享发布比传统...

悟空CRM

为什么客户选择悟空CRM?悟空CRM为您提供全方位服务客户管理的主要功能客户管理,把控全局悟空CRM助力销售全流程,通过对客户初始信息、跟进过程、 关联商机、合同等的全流程管理,与客户建立紧密的联系, 帮助销售统筹规划每一步,赢得强有力的竞争力优势。...

简道云

丰富模板,安装即用200+应用模板,既提供标准化管理方案,也支持零代码个性化修改低成本、快速地搭建企业级管理应用通过功能组合,灵活实现数据在不同场景下的:采集-流转-处理-分析应用表单个性化通过对字段拖拉拽或导入Excel表,快速生成一张表单,灵活进行...

推荐知识更多