文档章节

用R语言实现牛顿迭代求最优点

非线性方程
 非线性方程
发布于 2017/03/10 12:26
字数 345
阅读 474
收藏 0

牛顿迭代的基本原理见百科http://baike.sogou.com/v1846821.htm?fromTitle=%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95
基本公式:

泰勒展开公式:f(x) = f(x0)+f'(x0)*(x-x0)+1/2*f''(x0)*(x-x0)^2

                   →f'(x) = f'(x0)+f''(x0)*(x-x0)  #一阶导为零是极值

                   →x = x0 - f'(x0)/f''(x0)         #公式

下面是R语言的代码实现 函数为y = x^2+2

x = 5  #初始值,自己定
diedai   = 40 #迭代次数
g        = function(x){x^2+2} #目标函数
g.prime  = function(x){2*x}    #一阶导
g.2prime = function(x){2}      #二阶导

#公式
for(i in 1:diedai){x = x - g.prime(x)/g.2prime(x)} 
x
 

下面是结果

> x
[1] 5
>  
> 
> x = 5  #初始值,自己定
> diedai   = 40 #迭代次数
> g        = function(x){x^2+2} #目标函数
> g.prime  = function(x){2*x}    #一阶导
> g.2prime = function(x){2}      #二阶导
> 
> #公式
> for(i in 1:diedai){x = x - g.prime(x)/g.2prime(x)} 
> x
[1] 0

---------------------------------------------------------------------------------------------------------

下面是复杂函数的牛顿迭代求最优点

x = 5  #初始值,自己定
diedai   = 40 #迭代次数
g        = function(x){sin(x)^3+log(cos(x))+x^(-1)} #目标函数
x=5
g.prime  = function(x){
fun = expression(sin(x)^3+log(cos(x))+x^(-1))
D(fun,'x')
f = deriv(D(fun,'x'),'x',func=T)
f(x)}    #一阶导
g.2prime = function(x){
D(D(fun,'x'),'x')
f = deriv(D(D(fun,'x'),'x'),'x',func=T)
f(x)}      #二阶导

#公式
for(i in 1:diedai){x = x - g.prime(x)/g.2prime(x)} 
x

--------------------------------------------------------------------------------------------------------

 

© 著作权归作者所有

非线性方程
粉丝 1
博文 22
码字总数 9927
作品 0
天津
程序员
私信 提问
R语言怎么做牛顿多项式插值

请问R语言怎么做牛顿多项式插值

白少Lu
2018/04/27
873
0
R语言深度学习包有哪些????

R语言深度学习的包有哪些???求大神告知R语言深度学习的包有哪些?R语言深度学习的包有哪些???求大神告知R语言深度学习的包有哪些?R语言深度学习的包有哪些???求大神告知R语言深度学...

pb加油
2016/08/31
268
0
数据团队建设思考

一. 背景介绍 不管相信与否,数据驱动业务发展,已经成为公司粗犷型向精细化运营的关键!而实现这一转化的关键就是如何建设、管理与公司不同发展阶段相适应的数据团队,这值得每位公司高层深...

R语言中文社区
2018/02/13
0
0
Rserve与Java的跨平台通信

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。 R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言...

zh119893
2014/04/20
1K
2
R语言入门 – 什么是R语言,为什么选择R语言用于机器学习或数据挖掘

  R语言最近在TIOBE排名上取得了不小的进步,上升到了第13名。因为机器学习的火爆的程度和R语言特殊的语法,使得它的关注度越来越高。好多人对于R语言的特性和语法不太了解,而因我在上学的...

全栈开发
2018/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部