博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分法求平方根(Python实现)
阅读量:6474 次
发布时间:2019-06-23

本文共 1180 字,大约阅读时间需要 3 分钟。

使用二分法(Bisection Method)求平方根。

 

1 def sqrtBI(x, epsilon): 2     assert x>0, 'X must be non-nagtive, not ' + str(x) 3     assert epsilon > 0, 'epsilon must be postive, not ' + str(epsilon) 4  5     low = 0 6     high = x 7     guess = (low + high)/2.0 8     counter = 1 9     while (abs(guess ** 2 - x) > epsilon) and (counter <= 100):10         if guess ** 2 < x:11             low = guess12         else :13             high = guess14         guess = (low + high)/2.015         counter += 116     return guess

 

验证一下。

    


 

上面的方法,如果 X<1 ,就会有问题。因为 X (X<1)的平方根不在 [0, x] 的范围内。例如,0.25,它的平方根——0.5 不在 [0, 0.25] 的区间内。

    

那如何求0.25的平方根呢?

只要略微改动上面的代码即可。注意6行和7行的代码。

    

1 def sqrtBI(x, epsilon): 2     assert x>0, 'X must be non-nagtive, not ' + str(x) 3     assert epsilon > 0, 'epsilon must be postive, not ' + str(epsilon) 4  5     low = 0 6     high = max(x, 1.0) 7     ## high = x 8     guess = (low + high)/2.0 9     counter = 110     while (abs(guess ** 2 - x) > epsilon) and (counter <= 100):11         if guess ** 2 < x:12             low = guess13         else :14             high = guess15         guess = (low + high)/2.016         counter += 117     return guess

 

再检验一下:

    


 

如果不知道怎样去调用自定义的方法(模块),可参考

 

 

 

 

转载地址:http://rslko.baihongyu.com/

你可能感兴趣的文章
buffer overflow
查看>>
opencv 矩阵操作
查看>>
菜鸟 ssm 框架的学习之路
查看>>
在Linux CentOS上编译并安装Clang 3.5.0
查看>>
《互联网时代》第一集·时代
查看>>
Centos 编译安装高版本Python方法
查看>>
andriod第四课----一些组件和文件介绍
查看>>
[转]Windows Server2008、IIS7启用CA认证及证书制作完整过程
查看>>
caffe笔记之例程学习(三)
查看>>
STL中stack和queue的用法
查看>>
右下角随机显示的CSS+JS图片广告
查看>>
The mook jong
查看>>
The Accomodation of Students
查看>>
poj 3417 Network
查看>>
CSS的进一步深入(更新中···)
查看>>
TIOBE[ti'ɔbi]编程语言排行榜
查看>>
ant 执行java文件,java文件中含中文,显示乱码
查看>>
对 UDP 的一些思考
查看>>
更方便的向Android模拟器中导入文件
查看>>
boost库share_from_this类的作用和实现原理
查看>>