上次说到了完全牛顿法与修正牛顿法,又基于修正牛顿法引入了线搜索相关的知识,
现在介绍另一类迭代方法,割线类迭代方法,也称之为拟牛顿法 (Quasi-Newton)。
对于割线类迭代方法,也就是这里说的拟牛顿法,核心思想也比比较简单,可以这么思考:
首先我们在第j个迭代已经计算了切线刚度矩阵的基础上计算:
注意这里的 我们并没有更新到 , 那么基于我们计算出来的 , 我们可以执行如下计算,这里就与完全牛顿法不同,我们做一个假定:
而其中
可以看到这个和完全牛顿法中
在等式右侧向量是完全不同的,我们将完全牛顿法中的 替换成了 。这样我们其实是构建出了 与 步之间的一个割线方程,其得出的刚度矩阵为类似于下图的割线方向:
下面我们进行一些公式转换,可以得到多种“近似”的刚度矩阵更新办法,其中一阶形式为:
但是观察上面的式子我们可以看到,其虽然可以无需进行重复的单元计算去更新刚度矩阵,而还是要进行麻烦的矩阵分解 (往往最为耗时),就其实在一定程度上失去了意义。所以科学家们就提出了,直接更新刚度矩阵逆矩阵的方法,其中最出名的就是BFGS (Broyden–Fletcher Goldfarb–Shanno)更新
虽然上述公式看起来十分复杂,但是在真正的实现过程中,就避免了矩阵的重新计算与分解,很多vector与matrix的结果都可以储存起来用于更新,其实现过程也有很多细节,这部分则留到下次说。
现在可以得到的结论是,由于其刚度矩阵是一直更新的,但又仅仅是近似的切线刚度矩阵,拿割线代替切线,那么其收敛性往往是弱于完全牛顿法的,但一般又好于修正牛顿法,一般来说相比完全牛顿法的二次收敛,我们往往称之为superlinear收敛性,意思就是收敛ratio > 1.0。总的来说这个方法的好处,就是以相对小的代价提供了接近切线刚度矩阵的刚度更新,所以往往计算效率都能提高。
然而由于有限元分析的复杂性,有的时候割线刚度矩阵并不能很好的模拟切线,所以与其说其在有限元中用的多,近些年来BFGS这类方法反而是在优化领域用的更多。