Python 学习日记day 3

用穷举法,二分法,牛顿-拉弗森法求lg2的值:

穷举法:

epsilnon = 0.01        #误差
step = epsilnon ** 2    #循环的步数
x = 0.00                #初始赋值
num = 0                 #循环参数
while abs(10 ** x - 2) > epsilnon:#判断是否处于相对误差内(若要更精确可以改变误差)
    x += step
    num += 1
print(x)

输出: 

穷举法:就是从初始值开始依照设定的步数 一步一步的进行赋值循环,从而接近答案,弊端也很明显,不仅运行速度慢,而且如果精度(及误差很小)那么步数成指数型减小,则循环次数成指数型上升,还有报错的风险。

二分法: 

# 求lgn的值
n = input('please enter a number:')    #输入一个值
m = 0.001                              #误差
low = 0.0
high = float(n)
x = (high - low) / 2
while abs(10 ** x - float(n)) > m:
    if (10.0 ** x) > float(n):
        high = x
    else:
        low = x
    x = (high + low) / 2            #二分法
print('lg%s的值为%s' % (int(n), x))

输出: 

二分法的本质其实就是区域的逼近,先给一个大致范围,可以很大,然后以二的指数级减小,所以循环次数就明显减小。

 牛顿-拉弗森法:

n = input('please enter a number:')
m = 0.001
num = 0.0
low = 0.0
high = float(n)
x = (high - low) / 2    #可要可不要
while abs(10 ** x - float(n)) > m:
    x = x - ((10 ** x - float(n)) / ((10 ** x) * 2.30258))    #牛顿-拉弗森法公式
print('lg%s的值为%s' % (int(n), x))

输出: 

牛顿-拉弗森法:再求近似值的时候,如果存在一个值guess是多项式p的根的近似值,那么guess  p(guess)/p'(guess)就是一个更好的近似值②,其中p'是p的一次导数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值