摘要: 之前发现,牛顿法在迭代的过程中容易收敛到局部。现在想通过减少变量的个数(不求解内部点的位置)来避免此种情况。主要参考Efficient Simulation of Secondary Motion in Rig-Space这篇论文的方法。方法的基本思路是,在解算的过程中,不考虑内部点的加速度,认为内... 阅读全文
posted @ 2015-01-19 11:58 dydx 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 看牛顿法的改进今天继续看Numerical Optimization这本书,在看第六章,实用牛顿法。6.1 提到“不准确”的牛顿法。意思是每次确定迭代方向都要解方程,很慢,实际上也不一定要解出非常精确的迭代方向。于是尝试用一些迭代解法(例如,共轭梯度法)去解 H*x + G = 0这个方程。6.2 ... 阅读全文
posted @ 2015-01-16 12:04 dydx 阅读(1027) 评论(0) 推荐(0) 编辑
摘要: 今天把测试Hessian的代码加进去了,但是发现Hessian并无大的问题。测试例子:一根圆柱向指定方向弯曲。下面对比,在有弯曲方向参数,与无方向参数(该参数被被乘以0)的情况下,各帧迭代的函数值。无方向参数:帧号12345第1次迭代073777.396480615269.3317631566548... 阅读全文
posted @ 2015-01-14 12:28 dydx 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 今天发现之前迭代过程的终止条件写错了,应该是梯度值小于某值时终止,而不是梯度值+Hessian*增量小于某值终止。因为增量本身就是求解 梯度值 + Hessian * x = 0 得来的啊。。。改掉了之后迭代次数明显增多,模拟速度变慢。应该允许用户设定迭代终止阈值,控制模拟精确度。但是,最重要的问题... 阅读全文
posted @ 2015-01-13 21:43 dydx 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 昨天突然想到一点,就是当发现某个参数不影响形状时,可以把其从牛顿迭代中排除出去,而直接根据这个参数前一帧的变化速度推算下一帧的值。下一步要尝试这一点。并观察其是否能解决Hessian半正定时候的问题。 阅读全文
posted @ 2015-01-07 10:11 dydx 阅读(138) 评论(0) 推荐(0) 编辑