博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
看牛顿法的改进与验证局部收敛
阅读量:7223 次
发布时间:2019-06-29

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

看牛顿法的改进

今天继续看Numerical Optimization这本书,在看第六章,实用牛顿法。

 

6.1 提到“不准确”的牛顿法。意思是每次确定迭代方向都要解方程,很慢,实际上也不一定要解出非常精确的迭代方向。于是尝试用一些迭代解法(例如,共轭梯度法)去解 H*x + G = 0这个方程。

 

6.2 提到通过共轭梯度法解 Ax = b 找搜索方向p = x的具体做法。

一旦发现一个点x有 x^T * A * x <= 0此时A非正定,若当前为第一次迭代,以此迭代方向更新牛顿法,否则,以上一次迭代方向更新。前一种情况实际等价于最速下降法。

初始位置x0可以设置为0,也可以设置为上一帧的搜索方向。两种方法差不多。

此法不需要显式的H(共轭梯度法每次更新迭代方向需要的都只是H*某个向量),只需要H * p。因此节省了计算H的时间。

 

具体的修改方法有:修改Cholesky分解,Gershgorin修改,对称不定矩阵修改。具体的算法以后研究。

 

验证局部收敛

当前想解决的问题是,完全证实之前迭代失败是由于收敛到局部极值。

想到的具体做法是,对于之前的例子,把有方向和无方向参数的迭代结果分别记录下来,以后在有方向参数的情形下,看看在无方向的解附近,牛顿迭代是否能够收敛。

 

经过试验,确定牛顿法确实收敛到局部极值。具体做法是,在有方向参数的迭代过程中,加载无方向参数最终的迭代结果,看迭代是否收敛到无方向的结果。

有方向的收敛函数值为231.68。

加载无方向结果后,收敛函数值为111.98,与无方向参数的模拟方法收敛值一样。

说明在有方向参数的情况下,231.68并不是全局最小值。

 

出现收敛到局部极值的原因为变量太多。下一步尝试不再求解内部点的位置(用外部点的权重表示),或把内部点的位置按静态平衡条件解算,不考虑加速度。

 

转载于:https://www.cnblogs.com/dydx/p/4228286.html

你可能感兴趣的文章
**后台怎么处理JSON数据中含有双引号?
查看>>
【C#】as 关键字的用法
查看>>
文本文件命令(wc,cut,sort,uniq)及常用参数
查看>>
vSphere网络原理及vSwitch
查看>>
了解Oracle数据库的版本号
查看>>
Emeditor检测到列的数量不一致。
查看>>
myeclipse自定义代码风格
查看>>
使用阿里云ECS自建RDS MySQL从库
查看>>
nethogs监控进程网络流量
查看>>
LinkedHashSet 元素唯一,存储取出有序
查看>>
!!!四种常见的 POST 提交数据方式(含application/json)
查看>>
vim的用法简介
查看>>
Docker快速入门
查看>>
Linux运维常见面试题之精华收录
查看>>
Open Source的一些网站,自己收集来的
查看>>
导入ubuntu虚机配置,基于XEN4.0
查看>>
Script:收集UNDO诊断信息
查看>>
jmeter连接数据库-华山
查看>>
opencv 源码编译
查看>>
将旧硬盘的内容克隆到新硬盘
查看>>