首页 > 代码库 > 牛顿法继续不稳定
牛顿法继续不稳定
今天发现之前迭代过程的终止条件写错了,应该是梯度值小于某值时终止,而不是梯度值+Hessian*增量小于某值终止。因为增量本身就是求解 梯度值 + Hessian * x = 0 得来的啊。。。
改掉了之后迭代次数明显增多,模拟速度变慢。
应该允许用户设定迭代终止阈值,控制模拟精确度。
但是,最重要的问题是多个参数时,模拟的结果是错误的。
当前圆柱弯曲的例子中,角度值增大到20度左右时,弯曲值被锁定为0,不知道什么原因。
若把其中一个参数禁用掉(方法是乘以0),则模拟正常,但是如果动画速度太快,会有不稳定情形。
下一步要找出模拟出错的原因。现在推测有以下几种:
1. Hessian 算错,之前测过独立参数的Hessian,但是没有测过相关参数的Hessian。
2. 梯度不连续?
3. 求解增量的方程病态。当前变量不再随意增长,而是该动的没有动。
还要找找处理这种情况有没有现成的方法。
牛顿法继续不稳定
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。