二分法与牛顿迭代法实现根号10的精确结果(保留到小数点后10位)
文章目录
- 前言
- 一、二分法
- 二、牛顿迭代法
- 三、numpy的库函数sqrt()
前言
三种方法求根号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=3right=4mid=(right+left)/2while right-left>accuracy:if mid*mid>10:right=midelse:left=midmid=(right+left)/2end = 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.2eta=2;while abs(x * x - 10)>accuracy:y = x * x - 10dy = 2 * xx=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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
