博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习之牛顿法
阅读量:6218 次
发布时间:2019-06-21

本文共 840 字,大约阅读时间需要 2 分钟。

泰勒公式

首先看泰勒公式,对于函数,如果函数平滑且某点存在各阶导数,则可以用一个多项式来描述该点邻域的近似值。公式如下:

牛顿法

牛顿法一般用来求解方程的根和求解极值。

数值优化算法除了梯度下降法外还有比较常用的一种方法是牛顿法。对于非线性方程,可以用牛顿迭代法进行求解,它收敛速度快。

基本思想是:对于非线性函数f(x),根据泰勒公式得到x附近某个点$x_{k}$展开的多项式可用来近似函数f(x)的值,该多项式对应的函数为F(x),求得F(x)的极小值作为新的迭代点,然后继续在新的迭代点泰勒公式展开,直到求得的极小值满足一定的精度。

原理

假设函数f(x)二次可微,则二次泰勒展开,

g(x)多项式则为f(x)的近似,求函数f(x)极值则可以转化为求导函数为0,对g(x)求导并令其为0,

得到,

即得到迭代公式,

新的点$x_{k+1}$不断逼近极值,直到一次导数小于某误差。

迭代步骤

实现代码

def h(x):    return x*x*x + 2*x*x +3*x + 4def h1(x):    return 3*x*x + 4*x + 3def h2(x):    return 6*x + 4xk = 0k = 1y = 0e = 0.0001times = 10000while k < times:    y = h(xk)    a = h1(xk)    if abs(a) <= e:        break    b = h2(xk)    xk -= a/b    k += +1print("k = ", k)print("x = ", xk)print("y = ", y)复制代码

以下是广告

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 进行预定。感谢各位朋友。

=========================

欢迎关注:

这里写图片描述
这里写图片描述

转载地址:http://oulja.baihongyu.com/

你可能感兴趣的文章
[Unity][Heap sort]用Unity动态演示堆排序的过程(How Heap Sort Works)
查看>>
调试项目出错------360云盘同步搞的鬼
查看>>
sqlite建表语句(特别是外键问题)
查看>>
Android 刷新下拉控制 SwipeRefreshLayout
查看>>
Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)
查看>>
持久化框架Hibernate 开发实例(一)
查看>>
CentOS下php安装mcrypt扩展
查看>>
2015.10.14-TransactionScope测试
查看>>
Android中MediaMuxer跟MediaCodec用例
查看>>
缓冲区的运用
查看>>
细谈WEB标准
查看>>
经典SQL
查看>>
Gitweb 安装与配置
查看>>
Microsoft.Net中数字签名技术
查看>>
iOS-iOS8模拟器设置中文键盘
查看>>
关于cocos2dx手游lua文件加密的解决方式
查看>>
分布式事务处理模型
查看>>
CSS实现限制显示的字数,超出显示"..."
查看>>
探索ASP.NET MVC5系列之~~~2.视图篇(上)---包含XSS防御和异步分部视图的处理
查看>>
MD5加密算法(转)
查看>>