二分法与牛顿迭代法实现根号10的精确结果(保留到小数点后10位)

文章目录

  • 前言
  • 一、二分法
  • 二、牛顿迭代法
  • 三、numpy的库函数sqrt()


前言

三种方法求根号10的结果,精确到小数点后面10位,二分法和牛顿迭代法是自己手动实现,numpy中的sqrt()是调用函数实现


下面是三种方法求出来的结果以及花费的时间

一、二分法

import time
accuracy=1.0e-10#定义精确度1乘以1010次方,就是小数点精度的要求范围
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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部