这个公式已经被归于Broyden算法[6.16]。为了实现方程(6.124),在算法的开始,已经选择了一个初始对称正定矩阵给[ Bi ],并且通过方程(6.107)来计算接下来的点X2,然后通过方程(6.124)来计算[ B2 ],X3 还是通过方程(6.107)来求得。这种迭代过程继续,直到实现收敛。如果[ Bi ]是对称式,那么方程(6.124)要确保[ Bi+1]也是对称的。然而不能保证当[ Bi ]正定,[ Bi+1]也是正定的。这个可能导致程序崩溃,尤其是用于非二次函数的优化。它可以很容易的验证方程(6.124)中矩阵[ ΔBi ]的列项是彼此的倍数,因此,校正矩阵只有一个独立列,所以矩阵的秩为1,这是为什么方程(6.124)被认为是一个秩为1的校正公式。虽然在Broyden算法中方程(6.124)是不健全的,它具有二次收敛[6.17]的属性。接下来的秩2校正保证了矩阵[ Bi+1]的对称和正定,也是在最大限度地减少一般非线性函数,因此在实际应用中它很强大,是人们的首选。
6.15.2 秩2校正
在秩2校正中,我们选择校正矩阵[ ΔBi ] 当作是连个秩1校正的和,如下所示:
[ ΔBi ]=c1Z1Z1T +c2Z2Z2T (6.125)
常数c1,c2和向量Z1,Z2都是确定的。方程(6.116)和 (6.125)合解得:
[ Bi+1]=[ Bi ]+c1Z1Z1T +c2Z2Z2T (6.126)
为了使方程(6.126)满足拟牛顿法的条件,方程(6.119)为:
di= [Bi ]gi +c1Z1(Z1T gi )+c2Z2(Z2T gi ) (6.127)
其中(Z1T gi )和(Z2T gi )都是一个标量,虽然方程(6.127)中的Z1和Z2 不是独一无二的,但是,下面对它们选值都能满足方程(6.127):
Z1=di ; (6.128)
Z2=[Bi ]gi ; (6.129)
c1=1/Z1T gi ; (6.130)
c2=-1/Z2T gi ; (6.131)
因此,秩2校正公式可以表达为:
[ Bi+1]=[ Bi ]+[ ΔBi ]
= (6.132)
这个公式被称作是Davidon-Fletcher-Powell (DFP)计算公式[6.20,6.21],如:
Xi+1=Xi+λi*Si (6.133)
其中Si是搜索方向,di=Xi+1-Xi 可以写成:
di=λi*Si (6.134)