python牛顿法寻找极值_牛顿法求极值及其Python实现
最初对于牛顿法,我本人是一脸懵的。其基本原理来源于高中知识。在如下图所示的曲线,我们需要求的是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牛顿法寻找极值_牛顿法求极值及其Python实现相关推荐
- matlab求曲线极值程序,matlab函数求极值matlab函数求极值.ppt
matlab函数求极值matlab函数求极值 * * 函数的极值 1.一元函数的极值 函数命令:fminbnd 调用格式:[x,feval,exitflag,output]=fminbnd(fun,x ...
- python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析
Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...
- python数据科学入门_干货!小白入门Python数据科学全教程
前言本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工 ...
- python打造excel神器_超简单:用Python让Excel飞起来
前言 如何获取学习资源 章Python快速上手 1.1为什么要学习用Python控制Excel 1.2Python编程环境的搭建 1.2.1安装Python官方的编程环境IDLE 1.2.2安装与配置 ...
- python函数模块化教程_【软件测试教程】Python模块化以及内置模块的使用
一:什么是模块 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. 二:模块类型 1:自定义模块 由编程人员自己写的模块.自定义模块时要 ...
- python 功能化模块_【软件测试教程】Python模块化以及内置模块的使用
一:什么是模块 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. 二:模块类型 1:自定义模块 由编程人员自己写的模块.自定义模块时要 ...
- 阿里云python自测答案_阿里云技能测试python初级中级高级
简介 偶尔发现,阿里云-开发者社区,里竟然有技能测试平台 覆盖知识面也较多 初级(65) 涉及知识点:Python语言的基本特性.编程环境.语法基础.数据结构,了解Python的网络编程与Web开发, ...
- anaconda下使用python怎样实现图像增强_如何用anaconda进行python开发
展开全部 序 Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,32313133353236313431303231363533e58685e5aeb9313333 ...
- python代码编写工具_编写更好的Python代码的终极指南
python代码编写工具 Despite its 尽管它 downsides, Python remains the king of today's programming world. Its ve ...
- python是一门面向_如何系统地自学一门Python 语言
零基础情况下,学一门语言充实下自己,Python,简洁.优美.容易使用,是一个很好的选择.那么如何系统地自学Python呢? 有的人非常想学好Python,一方面被琐事纠缠,一直没能动手,另一方面,担 ...
最新文章
- React是如何在后台运行的
- 分布式系统的面试题11
- Java经典面试题详解:Java字符串转成list
- cannot和can not的区别 666666
- PHP生成静态HTML的源代码及用法
- [Yii Framework] 数据库查询
- TCP/IP 协议簇的逐层封装
- python作品阐述_Python网络编程基础的作品鉴赏-
- 《TensorFlow技术解析与实战》——第3章 可视化TensorFlow
- 【数据分析学习】Pandas学习记录
- Python之np.where的使用
- html利用cookie登陆,前端登陆注册实现——利用cookie模仿后台数据库存取数据
- C语言科学计数法常量,科学计数法c语言
- 编译时Collected errors
- IDEA中MyBatis插件的安装及使用
- Google Play上架总结(三)Google Play 上架流程
- Could not import the lzma module
- echarts结合amap (echarts-extension-amap)
- win7安装android驱动失败怎么办,Win7蓝牙驱动安装失败的原因分析与解决方法
- 解除封闭、寒假延长!多校发通知!