最初对于牛顿法,我本人是一脸懵的。其基本原理来源于高中知识。在如下图所示的曲线,我们需要求的是f(x)的极值:

对于懵的原因,是忘记了高中所学的点斜式(Point Slope Form),直接贴一张高中数学讲义:

因为我们一路沿着x轴去寻找解,所以迭代求f(x)=0的解得通用式为:

与梯度下降相比,牛顿法也同样是沿着曲线的斜率去寻找极值,但是不存在需要自定义learning rate的问题,因为alpha是由斜率来决定的。

牛顿法的python实现:

def newtons(f,df,x0,e):
xn = float(x0)
e_tmp = e+1
loop = 1
while e_tmp>e:
print '########loop'+str(loop)
k = df(xn)
xm = f(xn)
print 'xn='+str(xn)+',k='+str(k)+',y='+str(xm)
q = xm/k
xn = xn-q
e_tmp = abs(0-f(xn))
print 'new xn='+str(xn)+',e='+str(e_tmp)+',q='+str(q)
loop=loop+1
return xn

我们调用一下:

from Test1.newtonMethod import newtons
def f(x):
return x**2+2*x def df(x):
return 2*x+2 x = newtons(f,df,3,0.01)
print 'the point you find is '+str(x)

运行结果如下:

########loop1
xn=3.0,k=8.0,y=15.0
new xn=1.125,e=3.515625,q=1.875
########loop2
xn=1.125,k=4.25,y=3.515625
new xn=0.297794117647,e=0.684269571799,q=0.827205882353
########loop3
xn=0.297794117647,k=2.59558823529,y=0.684269571799
new xn=0.0341661806366,e=0.0694996891724,q=0.26362793701
########loop4
xn=0.0341661806366,k=2.06833236127,y=0.0694996891724
new xn=0.000564381199631,e=0.0011290809254,q=0.0336017994369
the point you find is 0.000564381199631

牛顿法求极值及其Python实现的更多相关文章

  1. python牛顿法求一元多次函数极值

    现在用牛顿法来实现一元函数求极值问题 首先给出这样一个问题,如果有这么一个函数$f(x) = x^6+x$,那么如何求这个函数的极值点 先在jupyter上简单画个图形 %matplotlib inl ...

  2. python二分法、牛顿法求根

    二分法求根 思路:对于一个连续函数,左值f(a)*右值f(b)如果<0,那么在这个区间内[a,b]必存在一个c使得f(c)=0 那么思路便是取中间点,分成两段区间,然后对这两段区间分别再比较,跳 ...

  3. Machine Learning 学习笔记 (2) —— 使用牛顿法寻找极值

    本系列文章允许转载,转载请保留全文! [请先阅读][说明&总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 用牛顿法解方程 牛顿法是一种 ...

  4. hihocoder-1142-三分求极值

    Hihocoder-1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax ...

  5. HLJU 1221: 高考签到题 (三分求极值)

    1221: 高考签到题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 9  Solved: 4 [Submit][id=1221">St ...

  6. hihocoder 1142 三分求极值【三分算法 模板应用】

    #1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...

  7. Hihocoder #1142 : 三分·三分求极值

    1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一个 ...

  8. AtCoder Beginner Contest 130 F Minimum Bounding Box 三分法求极值(WA)

    题意:给n个点的起始坐标以及他们的行走方向,每一单位时间每个点往它的方向移动一单位.问最小能包围所有点的矩形. 解法:看到题目求极值,想了想好像可以用三分法求极值,虽然我也不能证明面积是个单峰函数. ...

  9. hihocoder 1142 三分·三分求极值(三分)

    题目1 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点 ...

随机推荐

  1. SpringMVC Controller单例和多例(转)

    首先上测试代码 import org.springframework.context.annotation.Scope; import org.springframework.stereotype.C ...

  2. Oracle之共享服务器模式

    在共享服务器体系结构中,一个dispatcher分派器将传入网络的多个会话请求定向到一个共享服务器进程池,消除了为每个连接分配一个专用服务器进程的需要.作为一般的指导原则,仅当系统需要并发连接到数据库 ...

  3. Linux查看当前目录下所有文件中包含map的行记录

    find yaochi_e.prm |xargs grep -ri "map" grep -n "map" *.prm|grep -v "\-\-ma ...

  4. ISC2016训练赛 phrackCTF--findkey

    测试文件:https://static2.ichunqiu.com/icq/resources/fileupload/phrackCTF/REVERSE/findkey 1.准备 获得信息 Pytho ...

  5. adb 链接网络 connect 安装apk install 断开IP链接 kill-server 连接数devices

    https://blog.csdn.net/zhonglunshun/article/details/78362439 ./adb connetc 192.168.1.11 ./adb install ...

  6. jquery 点击加载更多

    html部分 <ul class="bill moreadd"> <div class="total"><span>-< ...

  7. R语言——ggplot2补充知识点

    案例 ggplot(head(age_data,10),aes(x=reorder(Country,age_median),y=age_median))+ geom_bar(aes(fill=Coun ...

  8. jvm监控和诊断工具

    大牛写的Java的OOM Killer:https://www.jianshu.com/p/4645254be259 强烈推荐 总的参考链接:https://cloud.tencent.com/dev ...

  9. linux设定 runlevel 3

    runlevel 查看当前系统运行级别 vi /etc/inittab //运行级别配置文件

  10. 树莓派 msmtp和mutt 的安装和配置

    1,安装mutt sudo apt-get install mutt 2,安装msmtp sudo apt-get install msmtp 3,设置mutt /etc/Muttrc # 系统全局设 ...