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. vue插槽的使用

    一.插槽的基本使用 二.具名插槽的使用 三.编译作用域的例子 四.作用域插槽 一.插槽的基本使用     1.插槽的基本使用<slot></slot>     2.插槽的默认值 ...

  2. Java中的Collections类

    转载:https://blog.csdn.net/yangxingpa/article/details/80515963 从[Java]Java中的Collections类——Java中升级版的数据结 ...

  3. 在UTF-8页面中引入编码为GBK的JavaScript文件乱码问题了

    原文地址:http://js8.in/2009/12/11/%E5%AF%B9%E5%BC%95%E7%94%A8%E5%A4%96%E9%83%A8javascript%E9%A1%B5%E9%9D ...

  4. 第三十七篇 入门机器学习——Numpy基础

    No.1. 查看numpy版本 No.2. 为了方便使用numpy,在导入时顺便起个别名 No.3. numpy.array的基本操作:创建.查询.修改 No.4. 用dtype查看当前元素的数据类型 ...

  5. 不可将布尔值直接与true或者1进行比较

    不可将布尔值直接与TRUR.FALSE或者"0"."1"进行比较. 根据布尔值的定义,零值为"假"(记为FALSE),任何非零值都是&quo ...

  6. sourcetree(mac)设置代理

    Mercurial: edit ~/.hgrcas shown here: http://www.selenic.com/mercurial/hgrc.5.html#http-proxy Git: e ...

  7. TCL create list from file

    proc create_list {filename {prompt verbose} {opts "" }} { set list_return {} if {[file exi ...

  8. Diskpart手动创建EFI、MSR引导分区

    当给电脑加新硬盘时候,并且需要把新硬盘当作系统盘,有几种方法来为新硬盘创建引导分区: 可以选择用U盘刻录微软原版系统镜像,直接从U盘启动,然后直接创建分区,直接装,会自动为硬盘创建好几个引导分区. 进 ...

  9. AcWing 872. 最大公约数

    #include <iostream> #include <algorithm> using namespace std; //辗转相除法 //a和b的最大公约数 = b和(a ...

  10. Spring AOP编程(一)-AOP介绍

    1. AOP介绍 l         在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 ...