MIT公开课: Python 笔记6 二分法,牛顿-拉夫森方法,列表

Lecture5: Bisection methods , Newton/Raphson, introduction to lists二分法,牛顿,拉复生方法,列表

Bisection methods 二分法

注意:

# bug: when x < 1, sqrt(x) > x = high eg.x=0.25 sqrt(x) = 0.5

# fix bug: high = max(x, 1.0)

def squareRootBi(x, epsilon):
    """Assumes x >= 0 and epsilon > 0
    Return y s.t. y*y is within epsilon of x"""

    assert x >= 0, ‘x must be non-negative, not‘ + str(x)
    assert epsilon > 0, ‘epsilon must be positive, not‘ + str(epsilon)
    low = 0
    # bug: when x < 1, sqrt(x) > x = high eg.x=0.25 sqrt(x) = 0.5
    # fix bug: high = max(x, 1.0)
    high = x
    guess = (low + high) / 2.0
    ctr = 1
    while abs(guess ** 2 - x) > epsilon and ctr <= 100:
        # print ‘low:‘, low, ‘high:‘, high, ‘guess:‘, guess
        if guess**2 < x:
            low = guess
        else:
            high = guess
        guess = (low + high) / 2.0
        ctr += 1
    assert ctr <= 100, ‘Iteration count exceeded‘
    print ‘Bi method. Num. iterations:‘, ctr, ‘Estimate:‘, guess
    return guess

Newton Raphson 牛顿-拉夫森方法

Bisection methods 二分法:

Δ(guess)=guess2?x

Δ(guess)=0

Newton 求导

guess点的导数 = guess 点的斜率

Δ′(guess)=2guessi=k

k=Δ(guessi)guessi+1?guessi

Δ(guessi)=guess2i?x

由上面3个式子得到:

guessi+1=guessi?Δ(guessi)2guessi

例子:

Δ(3)=32?16=?7

guessi+1=3?Δ(3)2×3=4.1666

def squareRootNR(x, epsilon):
    """Assumes x >= 0 and epsilon > 0
    Return y s.t. y*y is within epsilon of x"""

    assert x >= 0, ‘x must be non-negative, not‘ + str(x)
    assert epsilon > 0, ‘epsilon must be positive, not‘ + str(epsilon)
    x = float(x)
    guess = x / 2.0
    guess = 0.001
    diff = guess ** 2 - x
    ctr = 1
    while abs(diff) > epsilon and ctr <= 100:
        # print ‘Error:‘, diff, ‘guess:‘, guess
        guess = guess - diff/(2.0*guess)
        diff = guess ** 2 - x
        ctr += 1
    assert ctr <= 100, ‘Iteration count exceeded‘
    print ‘NR method. Num. iterations:‘, ctr, ‘Estimate:‘, guess
    return guess

Lists 列表

3wschool Python 列表

non-scalar types 非基本类型

  • Tuple 元组 (immutable 不可改变的)
  • String 字符串(immutable 不可改变的)
  • List 列表 (mutable 可改变的)
>>> Techs = [‘MIT‘, ‘Cal Tech‘]
>>> print Techs
[‘MIT‘, ‘Cal Tech‘]
>>> Ivys = [‘Harvard‘, ‘Yale‘, ‘Brown‘]
>>> print Ivys
[‘Harvard‘, ‘Yale‘, ‘Brown‘]
>>> Univs = []
>>> Univs.append(Techs)
>>> print Univs
[[‘MIT‘, ‘Cal Tech‘]]
>>> Univs.append(Ivys)
>>> print Univs
[[‘MIT‘, ‘Cal Tech‘], [‘Harvard‘, ‘Yale‘, ‘Brown‘]]
for e in Univs:
    print e
    for c in e: print c

[‘MIT‘, ‘Cal Tech‘]
MIT
Cal Tech
[‘Harvard‘, ‘Yale‘, ‘Brown‘]
Harvard
Yale
Brown
>>> Univs = Techs + Ivys
>>> print Univs
[‘MIT‘, ‘Cal Tech‘, ‘Harvard‘, ‘Yale‘, ‘Brown‘]
>>> Ivys.remove(‘Harvard‘)
>>> print Ivys
[‘Yale‘, ‘Brown‘]
>>> Ivys[1] = -1
>>> print Ivys
[‘Yale‘, -1]
时间: 2024-10-31 19:13:36

MIT公开课: Python 笔记6 二分法,牛顿-拉夫森方法,列表的相关文章

斯坦福机器学习公开课学习笔记(1)—机器学习的动机与应用

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 斯坦福机器学习公开课差不多是网上能找到的最好的机器学习入门课程了.现在一共有20节课放到网络上,博主是在网易公开课学的,那里的视频有中文字幕然后课件也很全. (地址:http://v.163.com/special/opencourse/machinelearning.html) 主讲师Andrew Ng(已经被百度诏安了)是华裔科学家,看他的课特别有亲切感.感觉他们的课跟国内老师的课区别还是挺大的

美团网 KVM虚拟化公开课学习笔记

KVM优化技术,美团开放平台--邱剑 基于KVM现有选项做一些优化,视频地址:http://www.osforce.cn/course/77/learn#lesson/80 CPU调优: 1.Context switch(用户态到内核态的优化):ring0->nernel mode,ring 3->user mode; 设置:宿主机BIOS中开启intel VT-X 2.缓存优化  Cache-Node Binding 将qemu进程绑定到特定的CPU node或者core上---避免L2/L

斯坦福iOS7公开课10笔记及演示Demo

这一节主要介绍了多线程中的串行队列以及滚动视图UIScrollView. 一 .多线程 这一节只是简单介绍了多线程的串行队列,即把任务加入线程队列后按顺序逐步执行. (1)目前iOS多线程提供的方法主要是GCD和NSOperation,前者是C语言级别的,后者是经过封装,更具有面向对象特性的API. (2)UI交互操作都是在主线程进行,所以为了保证交互过程的流程舒适,类似于下载等耗时操作就需要主线程外执行,否则将出现用户无法对手机进行操作的场景. 这时通过多线程,就可以使下载图片等耗时操作单独进

斯坦福iOS7公开课4-6笔记及演示Demo

1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不包含所写的调用方法时,编译通过,但在程序运行时才会报错. 2.简单介绍了框架自带的集合.字体等. 3.通过使用NSAttributedString可以让屏幕显示的字体样式更丰富,设置各种样式等,详细参见附件的演示Demo:http://files.cnblogs.com/colinhou/Attri

斯坦福iOS7公开课7-9笔记及演示Demo

这一部分主要介绍了iOS的绘图.手势.协议.block.力学特效动画(包括重力.碰撞.吸附等)以及自动布局的内容.    一.绘图.手势 (1)调用一个自定义的UIView时,可以使用awakeFromNib方法做一些初始化工作. (2)iOS中绘图需要了解的常用测量单位: CGFloat:浮点值,与float一样: CGPoint.CGSize.CGRect是三个结构体分别代表游XY坐标描述的店.宽度高度描述的大小值以及由原点坐标.宽度高度描述的矩形,度量单位都是CGFloat. (3)自定义

使用牛顿-拉弗森法定义平方根函数(Newton-Raphson method Square Root Python)

牛顿法(Newton's method)又称为牛顿-拉弗森法(Newton-Raphson method),是一种近似求解实数方程式的方法.(注:Joseph Raphson在1690年出版的<一般方程分析>中提出了后来被称为"牛顿-拉弗森法"的数学方法,牛顿于1671年写成的著作<流数法>中亦包括了这个方法,但该书在1736年才出版.) 之前的一篇博客中提到的二分法可以求解方根,而使用牛顿迭代法可以更快地解出方根.现在,人们使用的计算器里面大多数都是运用的牛顿

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述

首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户的顶层,分为四个层次: 1.Core OS层在最下层,很多人可能不知道IOS是一个基于UNIX的操作系统,它大量借鉴了Mac os X 的内核部分,Mac OS X我们肯定不会陌生,命令行的使用很好的证明了它是一个基于UNIX的系统.IOS针对移动设备对电池等硬件进行了系统的优化,但它仍可被看成是一

MIT公开课:计算机科学及编程导论 Python 笔记5 浮点数,逐次逼近法和二分法

Lecture5: Floating point number , successive refinement, finding roots 浮点数和二分法 3wschool 数字 >>> a = 2 ** 1000 >>> a 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251

MIT公开课: Python 笔记7 列表及可变性,字典,效率

Lecture 7: Lists and mutability,dictionaries,pseudocode,introduction to efficiency 列表及可变性,字典,伪代码,效率 Lists and mutability 列表及可变性 >>> L1 = [1, 2, 3] >>> L2 = L1 >>> print L2 [1, 2, 3] >>> L1[0] = 4 >>> print L2 [