在Python中计算一个数的算术平方根其实很简单,可以使用pow()函数。如计算100的算术平方根:

但是呢,为了学习使用二分法这种思想,我们特意将简单问题稍微复杂化一下~

所谓的二分是指取中间值的意思。以计算100的算术平方根10为例,首先计算机会根据输入信息判断猜测区间,这里可以设置最小值为0,最大值为100。

第一次猜测:guess = (0+100)/2=50。50明显大于目标(10),因此猜大了,此时,计算机会自动修改猜测的最大值为50,最小值仍然为0。

第二次猜测:guess = (0+50)/2=25。还是猜大了,继续修改猜测的最大值为25。

第三次猜测:guess = (0+25)/2=12.5。还是猜大了。

第四次猜测:guess = (0+12.5)/2=6.25。哎?猜小了!因此,修改猜测的最小值为6.25,最大值为12.5。

第五次猜测:guess = (6.25+12.5)/2=9.375。猜小了,继续修改猜测的最小值为9.375,最大值为12.5。

第六次猜测:guess = (9.375+12.5)/2=10.9375,已经相当接近目标(10)了……如此进行下去,直到guess的值为10.

注释:low表示猜测区间最小值,high表示猜测区间最大值,如果要计算x的平方根,一般会将猜测的最大值设为x。因为直接比较guess与根号x的大小不太方便,对应的等价比较为:比较guess的平方与x的大小。由上述描述可以看出,如果猜小了,则会修改猜测区间的最小值(low)为guess,继续采用二分法猜。如果猜大了,则会修改猜测区间的最大值(high)为guess,继续采用二分法猜。

Python代码实现:

注释:while语句中,在比较guess的平方与x的大小关系时需要特别注意,guess是计算出来的,是浮点数,浮点数之间比较大小不能直接用==或!=,具体原因是因为存在不确定尾数,需要引入round()函数。参考我的另一篇文章:

Cara:Python中关于0.1+0.2≠0.3的问题​zhuanlan.zhihu.com

执行效果如下:

起一个数的平方根_使用二分法计算一个数的算术平方根相关推荐

  1. python如何计算成绩平方根_python 使用二分法计算平方根

    python 使用二分法计算平方根 from math import sqrt def mysqrt(num,small): assert num>0 assert small>0 low ...

  2. 用java二分法计算a的n次幂_用二分法计算a的n次幂算法分析

    实验目的: 1.复习java编程: 2.掌握二分法的基本原理: 3.掌握使用java程序进行二分法计算a的n次幂. 实验步骤: 1.由用户输入a及n(均为整数): 2.利用二分法完成计算,并将中间结果 ...

  3. python三个数输出最小值_从键盘输入三个数,输出其中的最大值和最小值。_学小易找答案...

    [单选题]关于 Python 程序格式框架的描述,以下选项中错误的是 ( ) [其它]实现multi()函数,参数个数不限,返回所有参数的乘积. [简答题]我和我的 [单选题]与x > y an ...

  4. python牛顿迭代法求平方根_牛顿迭代法计算平方根(Java,Python实现)

    牛顿法的作用是使用迭代的方法来求解函数方程的根.简单地说,牛顿法就是不断求取切线的过程.更多见:iii.run 数学推导 假设c为原数,t为c的根数. $$ t^2 \quad = \quad c$$ ...

  5. python牛顿迭代法求平方根_牛顿迭代法计算平方根

    public static double sqrt(doublex) {if(x<0)return Double.NaN;//not a number double err=1e-15;doub ...

  6. 用计算机求正有理数算术平方根的步骤,用计算器求算数平方根、用有理数估计算数平方根的大小.ppt...

    用计算器求算数平方根.用有理数估计算数平方根的大小.ppt 上传人:jw****88 文档编号:85573818 上传时间:2020-06-11 格式:PPT 页数:20 大小:2.14MB 下载提示 ...

  7. 利用计算机求出200的算术平方根,6.1用计算机计算算术平方根.ppt

    6.1用计算机计算算术平方根 * ------用计算机计算算术平方根 2.判断下列各数有没有算术平方根?如果有,请求出它们的算术平方根. 36 , 0.09 , , 0 , , 2. 活动一复习回顾 ...

  8. C语言——二分法查找一个数_数组

    C语言--二分法查找一个数_数组 问题描述: 针对一个按顺序排列的一维数组,用户输入一个数,如何辨别它是否存在?是数组中的第几位? 编程思想: 采用二分法,以最中间的数和用户输入的数进行比较,逐步缩小 ...

  9. 用python实现二分法求平方根_二分法求平方根(Python实现)

    使用二分法(Bisection Method)求平方根. def sqrtBI(x, epsilon): assert x>0, 'X must be non-nagtive, not ' + ...

最新文章

  1. 计算机书籍-数据挖掘与预测分析
  2. Java中比较对象的两个接口Comparable接口和Comparator接口
  3. 5W+人的公司怎么把总部和分部网络连接起来?
  4. boost::graph::distributed::hohberg_biconnected_components用法的测试程序
  5. 024 Android 自定义样式对话框(AlertDialog)
  6. 转:【Python3网络爬虫开发实战】6.4-分析Ajax爬取今日头条街拍美图
  7. UVA-11988 悲剧文本-静态链表
  8. 【HDU - 2516 】取石子游戏 (Fibonacci博弈)
  9. ApacheCN 2019Q1 总结
  10. 回归分析beta值的标准_读懂回归分析-SPSS为例(无广告)
  11. DARPA 想用自动化技术制造出最强的黑客
  12. scrapy爬虫+echarts数据分析(安居客)
  13. MATLAB下载+安装教程
  14. EOS多节点环境部署
  15. android 设内网固定ip,如何给手机设置一个固定的内网ip
  16. 局域网助手 LanHelper 简体中文版
  17. 电脑商城-02-注册
  18. 查询跟踪多家快递单号,筛选某一时间发货的单号
  19. 【Python】如何实现列表的升序排列
  20. Java 调用ffmpeg 实现视频编辑

热门文章

  1. [译] 2019 年的 9 大设计趋势
  2. 理解Docker——深入引擎室
  3. Facebook:正变为下一个微信?
  4. 从JSON数据中取出相关数据
  5. sql server 小记——分区表(上)
  6. xmpp这一段蛋疼的 坑,
  7. 【设置Oracle 11Gr2 RAC的归档模式】
  8. 每日算法练习之括号配对
  9. Python获取代码运行时间
  10. Servlet笔记1