python练习:使用二分法查找求近似平方根,使用二分法查找求近似立方根。

重难点:原理为一个数的平方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历。精确度的使用。通过最高值和最低值确定二分的范围。考虑判断数字的正负情况。while abs(ans**2-x)>=epsilon:这一个判断最关键。求立方根的时候,判断数为负数的时候,情况会有很大不同。

 print("————————————————————————————")
#使用二分法查找求近似平方根
x=0.9#需要查找的数
epsilon=0.01#近似值精度
numGuesses=0#二分次数
low=0.0
high=max(1.0,x)#如果查找的数最大值大于一,那么最大数为本身,如果小于一,那么最大数就为1
ans=(high+low)/2.0#二分之一值
if x>0:
while abs(ans**2-x)>=epsilon:#原理:一个数的平方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历
print('low',low,'high=',high,'ans=',ans)
numGuesses+=1
if ans**2<x:
low=ans
else:
high=ans
ans=(high+low)/2.0
print('二分次数:',numGuesses)
print(x,'的平方根是',ans)
else:
print('所判断的数不是正数')
print("————————————————————————————")
#使用二分法查找求近似立方根
x=-3375#需要查找的数
epsilon=0.01#近似值精度
numGuesses=0#二分次数
if x>0:
low=0.0
high=max(1.0,x)#如果查找的数最大值大于一,那么最大数为本身,如果小于一,那么最大数就为1
ans=(high+low)/2.0#二分之一值
while abs(ans**3-x)>=epsilon:#原理:一个数的立方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历
print('low',low,'high=',high,'ans=',ans)
numGuesses+=1
if ans**3<x:
low=ans
else:
high=ans
ans=(high+low)/2.0
print('二分次数:',numGuesses)
print(x,'的立方根是',ans)
else:
low=0.0
high=min(-1.0,x)#如果查找的数最大值大于一,那么最大数为本身,如果小于一,那么最大数就为1
ans=(high+low)/2.0#二分之一值
while abs(ans**3-x)>=epsilon:#原理:一个数的立方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历
print('low',low,'high=',high,'ans=',ans)
numGuesses+=1
if ans**3>x:
low=ans
else:
high=ans
ans=(high+low)/2.0
print('二分次数:',numGuesses)
print(x,'的立方根是',ans)

python练习:使用二分法查找求近似平方根,使用二分法查找求近似立方根。的更多相关文章

  1. Python求算数平方根和约数

    一.求算术平方根 a=0 x=int(raw_input('Enter a number:')) if x >= 0: while a*a < x: a = a + 1 if a*a != ...

  2. Python与数据结构[3] -> 树/Tree[1] -> 表达式树和查找树的 Python 实现

    表达式树和查找树的 Python 实现 目录 二叉表达式树 二叉查找树 1 二叉表达式树 表达式树是二叉树的一种应用,其树叶是常数或变量,而节点为操作符,构建表达式树的过程与后缀表达式的计算类似,只不 ...

  3. 查找算法(I) 顺序查找 二分查找 索引查找

    查找 本文为查找算法的第一部分内容,包括了基本概念,顺序查找.二分查找和索引查找.关于散列表和B树查找的内容,待有空更新吧. 基本概念 查找(search)又称检索,在计算机上对数据表进行查找,就是根 ...

  4. 数论-质数 poj2689,阶乘分解,求阶乘的尾零hdu1124, 求尾零为x的最小阶乘

    /* 要求出[1,R]之间的质数会超时,但是要判断[L,R]之间的数是否是素数却不用筛到R 因为要一个合数n的最大质因子不会超过sqrt(n) 所以只要将[2,sqrt(R)]之间的素数筛出来,再用这 ...

  5. NYOJ 35 表达式求值(逆波兰式求值)

    http://acm.nyist.net/JudgeOnline/problemset.php?typeid=4 NYOJ 35 表达式求值(逆波兰式求值) 逆波兰式式也称后缀表达式. 一般的表达式求 ...

  6. 数据结构实验7:实现二分查找、二叉排序(查找)树和AVL树

    实验7 学号:      姓名:     专业: 7.1实验目的 (1) 掌握顺序表的查找方法,尤其是二分查找方法. (2) 掌握二叉排序树的建立及查找. 查找是软件设计中的最常用的运算,查找所涉及到 ...

  7. 查找算法(6)--Block search--分块查找

    1. 分块查找 (1)说明分块查找又称索引顺序查找,它是顺序查找的一种改进方法. (2)算法思想:将n个数据元素"按块有序"划分为m块(m ≤ n).每一块中的结点不必有序,但块与 ...

  8. 查找算法(3)--Interpolation search--插值查找

    1. 插值查找 (1)说明 在介绍插值查找之前,首先考虑一个新问题,为什么上述算法一定要是折半,而不是折四分之一或者折更多呢? 打个比方,在英文字典里面查“apple”,你下意识翻开字典是翻前面的书页 ...

  9. [转帖]linux下的find文件查找命令与grep文件内容查找命令

    linux下的find文件查找命令与grep文件内容查找命令 https://www.cnblogs.com/shileima/p/8431393.html 在使用linux时,经常需要进行文件查找. ...

随机推荐

  1. C++ windows线程操作(转)

    参考 1._beginthreadex创建线程 DWORD m_dwMSGTID; // 线程ID HANDLE m_hMSG; // 线程句柄 m_hMSG = (HANDLE)_beginthre ...

  2. c数据结构 -- 线性表之 复杂的链式存储结构

    复杂的链式存储结构 循环链表 定义:是一种头尾相接的链表(即表中最后一个结点的指针域指向头结点,整个链表形成一个环) 优点:从表中任一节点出发均可找到表中其他结点 注意:涉及遍历操作时,终止条件是判断 ...

  3. IntelliJ IDEA 2017.3百度-----文件树状结构

  4. 数据库too many connections 解决方法

    问题:网站后台突然报错了,显示“too many connections........”这是咋回事? 解决: 先罗列几个有用的操作: ① mysql -u root -p  回车输入密码进入mysq ...

  5. C++11 auto的用法

    参考博客:https://www.cnblogs.com/KunLunSu/p/7861330.html

  6. 用git无法连接github的解决方法

    如果要從 GitHub 存取 Git 儲存庫,建議還是多採用 SSH 與 HTTPS 通訊協定最為穩定可靠,因此我的替代方案就是設定 Git 的全域設定值 ( –global ),預設將所有 git: ...

  7. 关于微信小程序的分包

    最近开始一份新的工作,接手一个正在开发的小程序,第一步添加客服系统,我们用的网易七鱼,利用微信小程序SDK接入的方式,一顿操作之后,欧欧~~!!~~~,提示没法预览, 究其原因,资源包过大,微信小程序 ...

  8. Java代码如何关联Hadoop源码

    昨天在学习Hadoop的时候,遇到一个问题就是Java关联Hadoop源码的时候死活关联不上,但是我发现在公司的电脑就可以顺利关联到源码.考虑了一下觉得应该是Eclipse版本的问题,于是我下载了ec ...

  9. 利用Ajax实现数据的同步传输,从mysql中提取数据,通过echarts可视化

    如何将mysql数据库中的方式通过echarts可视化呢,以下面这个简单的例子向大家进行演示:   步骤一:mysql的创表和插入数据,当然这些数据也可以是你通过爬虫抓取的.     步骤二:   创 ...

  10. 【转载】Java集合容器全面分析

    转自:http://blog.csdn.net/garfielder007/article/details/52143803 简介: 集合类Collection不是Java的核心类,是Java的扩展类 ...