秩2算法可以保证在任意第k步迭代下, 只要一维搜索是精确的,近似矩阵
DFP算法
- 令k=0,选择初始点x(0),任意选择一个堆成正定实矩阵H0。
- 如果g(k)=0, 停止迭代; 否则,令d(k)=−Hkg(k)
- 计算
αk=argminα≥0f(x(k)+αd(k))x(k+1)=x(k)+αkd(k)
4.计算
Δx(k)=αkd(k)Δg(k)=g(k+1)−g(k)Hk+1=Hk+Δx(k)Δx(k)TΔx(k)TΔg(k)+[HkΔg(k)][HkΔg(k)]TΔg(k)THkΔg(k)
5.令 k==k+1, 回到第二步。
定理18.1 利用DFP算法求解二次型问题时,Hessian矩阵为Q=QT,有Hk+1Δg(i)=Δx(i),0≤i≤k成立。
需要说明的是DFP算法是一种共轭方法。
定理18.2 假定g(k)≠0,在DFP算法中,只要矩阵Hk是正定的, Hk+1就一定是正定的。
DFP算法能够使得Hk是正定的,因此它由于秩1算法,但是,处理一些规模较大的非二次型问题时,DFP算法会被“卡住”,迭代无法继续展开,原因是Hk矩阵接近称为奇异矩阵了,后续的BFGS算法可以解决这一问题。