为了解决上述问题,需要求HESSE矩阵近似矩阵\(B\)
将函数在\(x_{k+1}\)处二阶展开:
\[f(x)=f(x_{k+1})+g_{k+1}^T(x-x_{k+1})+\frac{1}{2}(x-x_{k+1})^TG_{k+1}(x-x_{k+1})
\]
上式求导等于0,得:
\[g_k=g_{k+1}+G_{k+1}(x-x_{k+1})
\]
令\(s_k=x_{k+1}-x_k\),\(y_k=g_{k+1}-g_k\),则:
\[G_{k+1}s_k\approx y_k
\]
近似矩阵需要满足上述条件;
为了使得迭代计算简单,可以设计,使用秩1矩阵更新\(B\)
\[B_{k+1}=B_k+E_k
\]
取\(E_k=\alpha \mu_k\mu_k^T\)
经过计算可以得出HESSE矩阵逆矩阵近似矩阵迭代公式:
\[H_{k+1}=H_k+\frac{(s_k-H_ky_k)(s_k-H_ky_k)^T}{(s_k-H_ky_k)^Ty_k}
\]
输入:梯度计算公式\(gfun\),容许误差:\(\epsilon\),初始值\(x_0\),初始化HESSE阵逆矩阵
\(step0:求梯度g_k,if\, abs(g_k)<\epsilon,break; \quad else \, to\, step 1;\)
\(step1:d_k=-H_kg_k;\quad x_{k+1}=x_k+\alpha d_k; \quad to\, step2;\)
\(step2:求g_{k+1} \quad 求H_{k+1} \quad to\, step3;\)
\(step3:k=k+1 \quad to\, step0;\)
主要思路:设计使用秩1矩阵更新HESSE矩阵,节省了计算二阶导数的计算量;同时保证了其正定性;