第七课 数组以及可变性,字典,伪码,对于代码运行效率的简介
2016-10-12
二分法
解空间是线性有序的 totally ordered
验证解,然后舍弃一半的解空间,然后继续
别相信程序员,一定要验证参数
回归测试 regression test
当因为一个问题修改了程序模块后,要重新测试一遍所有功能
找0.25的平方根,出错,因为一开始定的解空间不包含解。0.5比0.25大
解决方法,下界是0,上界是1和x里大的那个
二分法迭代次数并不固定
处理复杂问题我们关注收敛速率问题 speed of convergence
二分法由古希腊人发明,一直到17世纪都是最先进的。
sqrt(x) 其实是解方程
f(guess) = guess^2 -x
f(guess) = 0 求这个根
Isaac Newton Joseph Raphson
Newton-Raphson
猜一个数,然后找这个数处的切线,下一个猜想就是这个切线和x轴的交点
大部分情况下,切线和x轴的交点是个更好的接近解的结果
有时候切线与X轴没有交点,要注意
高中时用了该方法求平方根
导数,一阶导数是斜率
dy/dx
f'(guessi)=2*guess
guessi+1 =guessi - f (guessi)/(2guessi)
f(3) = 9 - 16 = -7
guessi+1 = 3 -(-7/6) = 4.16666
然后继续
NR方法比二分法要快一些
复杂情况下效果更好
Ansers can be wrong 答案可能是错的
浮点数溢出
数学很难,python简单
Non-scalar type 非基本类型
Tuples 元组
Strings 字符串
Immutable 不可变的
Mutable -- List
Techs=['MIT','Cal Tech']
Ivys=['Harvard','Yale','Brown']
Univs=[],univs.append(techs) 会把数组加到数组里去
以上的内存结构图
数组也是对象
Flatten
L=[1,'MIT',3.3,['*']]
数组里可以放各种对象
remove方法,改变了数组,数组的可变性
Last updated