import math
def sqrtmy(n,a): #二分查找法 a是精确度
if n<=0:
return n
low=0*1.0
up=n*1.0
mid=(low+up)/2.0
while up>=low:
if abs(mid**2-n)<a:
return mid
elif mid*mid>n:
up=mid
else:
low=mid
mid=(up+low)/2.0
return -1
def sqrt_newton(n): #牛顿迭代法
if (n==0):
return n
t=n/2+1
while t>(n/t):
t=(t+n/t)/2
return t
print(sqrtmy(2,1e-10))
print(sqrt_newton(2))
print(math.sqrt(2))
给出三种方法,第一个是二分法,第二个是牛顿迭代法,第三个是python库函数