DFP(Davidon-Fletcher-Powell)算法是一种拟牛顿法,用于求解无约束优化问题。下面我将提供一个基于Python的DFP算法代码示例,并解释其关键部分。 DFP算法Python代码示例 python import numpy as np def fun(x): return 100 * (x[0]**2 - x[1])**2 + (x[0] - 1)**2 def
B_{k+1}=B_k+\beta uu^T+\gamma vv^T\\后面和DFP一模一样,我们可以得到B_k的迭代公式: B_{k+1}=B_k+\frac{y_ky_k^T}{y_k^Ts_k}-\frac{B_ks_ks_k^TB_k}{s_k^TB_ks_k}\quad①\\你会发现,我们其实就是把DFP中的s_k与y_k互换位置,把H_k换成B_k罢了。
DFP算法:DFP(Davidon-Fletcher-Powell)算法是第一个公认的拟牛顿法,其迭代更新式为\(B_k = (I - \alpha_ky_kx_k^T)B_{k-1}(I - \alpha_kx_ky_k^T) + \alpha_kx_kx_k^T\),其中\(y_k = g_k - B_{k-1}x_k\)。BFGS算法:BFGS算法在迭代更新式上与DFP类似,但通过逆...