我试图用牛顿法求解一些非线性系统,解的精度对我的问题很重要。
- as accurate as symbolic Jacobian
- an algorithm suitable for general nonlinear system cases
- only dependent on C++ or similar programming languages;
发布于 2013-12-13 11:10:35
看看对偶数字的概念,在C++中有几个示例实现。使用适当初始化的对偶数对函数进行评估,结果是求出一个方向导数。对所有坐标方向重复这一步骤。
关于一个很好的介绍,请参阅Piponi: AD,C++和摄影测量(http://el.mdu.edu.tw/datacos/09820722022O/paper.pdf)。
如果L是求函数的努力,一个方向导数的代价约为3*L,则完全jacobian 3n*L.如果将所有方向组合在一个求值中,这将降为(1+2n)*L.但到那时,我们已经进入了自动或算法微分的领域。
查找FADBAD/TADIFF以便于实现,对于真正快速的代码,可以使用Tapenade项目提供的代码转换。ADOL介于两者之间,比Tapenade更自动化,比FADBAD更快.
发布于 2013-12-03 02:23:16
用Jacobian有限差分逼近法解决了这一问题;
用符号Jacobian法或有限差分Jacobian法求解非线性系统,无论在效率上还是在精度上似乎都没有本质上的区别。
唯一的区别是:符号Jacobian需要更少的步骤才能达到期望的收敛;如果可以提供Jacobian,那么它就会更快。
https://stackoverflow.com/questions/19924669
复制相似问题