前言
三种方法求根号10的结果,精确到小数点后面10位,二分法和牛顿迭代法是自己手动实现,numpy中的sqrt()是调用函数实现
下面是三种方法求出来的结果以及花费的时间
一、二分法
import time
accuracy=1.0e-10#定义精确度1乘以10的10次方,就是小数点精度的要求范围
print("精度:",format(accuracy,'.12f'))
erfenTime=0;#三种方法花费的时间
newTonTime=0;
numpyTime=0;
精度: 0.000000000100
def sq10():
"""二分法"""
start = time.time()
left=3
right=4
mid=(right+left)/2
while right-left>accuracy:
if mid*mid>10:
right=mid
else:
left=mid
mid=(right+left)/2
end = time.time()
erfenTime=end - start
print("二分法计算根号10的结果:{}".format(mid))
print("二分法程序所花费的时间:{}".format(erfenTime))
return mid
sq10()
二分法计算根号10的结果:3.162277660187101
二分法程序所花费的时间:8.821487426757812e-06
二、牛顿迭代法
代码如下(示例):
def myiter():
"""牛顿迭代法"""
start = time.time()
x=3.2
eta=2;
while abs(x * x - 10)>accuracy:
y = x * x - 10
dy = 2 * x
x=x-y/(eta*dy)
# // print("当前的x是:{},当前的y是:{}".format(x,y))
end = time.time()
newTonTime=end - start
print("牛顿迭代法计算根号10的结果是:{}".format(x))
print("牛顿迭代程序所花费的时间:{}".format(newTonTime))
return x
myiter()
牛顿迭代法计算根号10的结果是:3.162277660177267
牛顿迭代程序所花费的时间:1.239776611328125e-05
三、numpy的库函数sqrt()
import numpy as np
t1=time.time()
print("numpy中sqrt()函数计算的结果:{}".format(np.sqrt(10)))
t2=time.time()
numpyTime=t2-t1
print("numpy中sqrt()函数所花的时间:{}".format(numpyTime))
numpy中sqrt()函数计算的结果:3.1622776601683795
numpy中sqrt()函数所花的时间:0.000225067138671875