zoukankan      html  css  js  c++  java
  • python练习:使用二分法查找求近似平方根,使用二分法查找求近似立方根。

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

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

     1 print("————————————————————————————")
     2 #使用二分法查找求近似平方根
     3 x=0.9#需要查找的数
     4 epsilon=0.01#近似值精度
     5 numGuesses=0#二分次数
     6 low=0.0
     7 high=max(1.0,x)#如果查找的数最大值大于一,那么最大数为本身,如果小于一,那么最大数就为1 
     8 ans=(high+low)/2.0#二分之一值
     9 if x>0:
    10     while abs(ans**2-x)>=epsilon:#原理:一个数的平方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历
    11         print('low',low,'high=',high,'ans=',ans)
    12         numGuesses+=1
    13         if ans**2<x:
    14             low=ans
    15         else:
    16             high=ans
    17         ans=(high+low)/2.0
    18     print('二分次数:',numGuesses)
    19     print(x,'的平方根是',ans)
    20 else:
    21     print('所判断的数不是正数')
    22 print("————————————————————————————")
    23 #使用二分法查找求近似立方根
    24 x=-3375#需要查找的数
    25 epsilon=0.01#近似值精度
    26 numGuesses=0#二分次数
    27 if x>0:
    28     low=0.0
    29     high=max(1.0,x)#如果查找的数最大值大于一,那么最大数为本身,如果小于一,那么最大数就为1 
    30     ans=(high+low)/2.0#二分之一值
    31     while abs(ans**3-x)>=epsilon:#原理:一个数的立方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历
    32         print('low',low,'high=',high,'ans=',ans)
    33         numGuesses+=1
    34         if ans**3<x:
    35             low=ans
    36         else:
    37             high=ans
    38         ans=(high+low)/2.0
    39     print('二分次数:',numGuesses)
    40     print(x,'的立方根是',ans)
    41 else:
    42     low=0.0
    43     high=min(-1.0,x)#如果查找的数最大值大于一,那么最大数为本身,如果小于一,那么最大数就为1 
    44     ans=(high+low)/2.0#二分之一值
    45     while abs(ans**3-x)>=epsilon:#原理:一个数的立方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历
    46         print('low',low,'high=',high,'ans=',ans)
    47         numGuesses+=1
    48         if ans**3>x:
    49             low=ans
    50         else:
    51             high=ans
    52         ans=(high+low)/2.0
    53     print('二分次数:',numGuesses)
    54     print(x,'的立方根是',ans)
  • 相关阅读:
    URAL 2014 Zhenya moves from parents 线段树
    git 安装及命令
    在eclipse中执行sql
    在eclipse中配置server和database
    java的regex问题笔记
    在开发中写一些tool来提升自己的效率
    在Eclipse中给JRE-Library添加本地Javadoc
    利用eclipse中的各种功能帮助你理解代码
    Eclipse中直接操作本地文件系统
    form action中如何填写相对目录
  • 原文地址:https://www.cnblogs.com/ming-4/p/10250718.html
Copyright © 2011-2022 走看看