码迷,mamicode.com
首页 > 其他好文 > 详细

牛顿法继续不稳定

时间:2015-01-13 23:09:23      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

今天发现之前迭代过程的终止条件写错了,应该是梯度值小于某值时终止,而不是梯度值+Hessian*增量小于某值终止。因为增量本身就是求解 梯度值 + Hessian * x = 0 得来的啊。。。

 

改掉了之后迭代次数明显增多,模拟速度变慢。

应该允许用户设定迭代终止阈值,控制模拟精确度。

 

但是,最重要的问题是多个参数时,模拟的结果是错误的。

当前圆柱弯曲的例子中,角度值增大到20度左右时,弯曲值被锁定为0,不知道什么原因。

 

若把其中一个参数禁用掉(方法是乘以0),则模拟正常,但是如果动画速度太快,会有不稳定情形。

 

下一步要找出模拟出错的原因。现在推测有以下几种:

1. Hessian 算错,之前测过独立参数的Hessian,但是没有测过相关参数的Hessian。

2. 梯度不连续? 

3. 求解增量的方程病态。当前变量不再随意增长,而是该动的没有动。

 

还要找找处理这种情况有没有现成的方法。

牛顿法继续不稳定

标签:

原文地址:http://www.cnblogs.com/dydx/p/4222590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!