MIT 6.001X 2016 (3)simple algothms 简单算法

strings 是不可变的 e.g. s = 'abc' s[0] = 'y' 就会报错。

1. 穷举

2. 二分法 

why float maybe 存储跟我们想要的不一样:因为数据都是以二进制形式存在电脑里

e.g.  当你输入 x = 0.1 + 0.2 时 你得到的不是 0.3  而是0.30000000000000004

打个比方  我们知道 1/3 = 0.333333333....   假设现在电脑就是10进制的  不过他存储数据的位数有限,假设就是4位 那么1/3  就是 0.3333  那么  1/3+1/3+1/3   在电脑看来就是 0.9999   当然跟1 不一样。

这就是为什么 你在电脑里输入 0.1+0.2 不等于 0.3 的原因 因为 0.1 被电脑弄成一个有限长的二进制数,给近似了  0.2也是 

不过为什么 当我们单单输入  x= 0.1 时  电脑返回的还是 0.1 呢  因为python 的设计者 在这里自动给他近似了 请看下图最后一句和 黑色的图  (当然 近似不包括计算  x = 0.1 +0.2   你得到的是0.300000000004)所以当你问  0.1+0.2 == 0.3  你得到的是False 。所以浮点数据比较 推荐用 abs(x-y)< 一个很小的数   而不是 x==y  不能有可能在你用if while 什么的时候 可能会得到 不是你想要的结果。







牛顿拉夫逊算法求多项式的根:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值