BFGS
The Broyden-Fletcher-Goldfarb-Shanno algorithm, commonly known as BFGS, is an iterative method for unconstrained optimization. It belongs to the family of quasi-Newton methods, which build successive approximations to the inverse Hessian of the objective function to generate search directions. Starting from an initial positive definite inverse Hessian H0 (often the identity), each iteration computes the gradient at the current point and uses it to determine a direction in which to move.
At iteration k, the gradient is g_k and a search direction is p_k = -H_k g_k. A step
After the step, the gradient change y_k = g_{k+1} - g_k and the step change s_k = x_{k+1} - x_k
H_{k+1} = H_k + (y_k y_k^T)/(y_k^T s_k) - (H_k s_k s_k^T H_k)/(s_k^T H_k s_k).
Equivalently, the Hessian B_k is updated as:
B_{k+1} = B_k - (B_k s_k s_k^T B_k)/(s_k^T B_k s_k) + (y_k y_k^T)/(y_k^T s_k).
If the curvature condition y_k^T s_k > 0 is preserved (often via line search), BFGS maintains a symmetric
Compared with full Newton methods, BFGS avoids explicit Hessian computations and is robust and efficient in