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


前言

三种方法求根号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=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

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值