您的位置:首页 > 其它

不用sqrt()函数,如何求平方根

2017-03-13 21:44 274 查看
1:最好的是牛顿迭代法

2:其次是二分法

a=s(19)
#不用函数实现开方
def s(n):
#循坏法
if n<0:
return -1
else:
for i in range(1,n,0.001):      #python 的range不能使用小数
while(i*i-n>1e-9)or(i*i-n<-1e-9):
continue
return i
#失败

def s(n):
#二分法,构造函数f(x)=x*x-n,然后构造上下界[1,n],比较mid=(start+end)/2.0,比较mid*mid-n和极小值的大小1e-9,\
#如果大于0,则将上界变小,end=mid,如果小于0,说明mid小于正确值,应该将下界变大,start=mid
#19只需要36次
i=0
if n<0:
return -1
else:
start=1
end=n
mid=(start+end)/2.0
while (mid*mid-n)>1e-9 or ((mid*mid-n)<-(1e-9)):
i=i+1
print i,mid
if (mid*mid-n>1e-9):
end=mid
elif(mid*mid-n<-1e-9):
start=mid
mid=(start+end)/2.0
print i,mid
return mid
#失败

def s(n):
#最好的用牛顿迭代法,19只需要6次
i=0
if n<0:
return -1
else:
start=1
while(start*start-n)>1e-9 or ((start*start-n)<-(1e-9)):
start=(start+n/start)/2.0
i=i+1
print i,start
return start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: