.. _responses-quasi_hessians-bfgs:

""""
bfgs
""""


Use BFGS method to compute quasi-hessians


.. toctree::
   :hidden:
   :maxdepth: 1

   responses-quasi_hessians-bfgs-damped


**Specification**

- *Alias:* None

- *Arguments:* None


**Child Keywords:**

+-------------------------+--------------------+--------------------+-----------------------------------------------+
| Required/Optional       | Description of     | Dakota Keyword     | Dakota Keyword Description                    |
|                         | Group              |                    |                                               |
+=========================+====================+====================+===============================================+
| Optional                                     | `damped`__         | Numerical safeguarding for BFGS updates       |
+----------------------------------------------+--------------------+-----------------------------------------------+

.. __: responses-quasi_hessians-bfgs-damped.html



**Description**


Broyden-Fletcher-Goldfarb-Shanno (BFGS) update will be used to compute
quasi-Hessians.


.. math:: 

   B_{k+1} = B_{k} - \frac{B_k s_k s_k^T B_k}{s_k^T B_k s_k} +
   \frac{y_k y_k^T}{y_k^T s_k}

where :math:`B_k`  is the :math:`k^{th}`  approximation to the Hessian,
:math:`s_k = x_{k+1} - x_k`  is the step and
:math:`y_k = \nabla f_{k+1} - \nabla f_k`  is the corresponding yield
in the gradients.

*Notes*


- Initial scaling of :math:`\frac{y_k^T y_k}{y_k^T s_k} I`  is used for :math:`B_0`  prior to the first update.
- Numerical safeguarding is used to protect against numerically small denominators within the updates.
- This safeguarding skips the update if :math:`|y_k^T s_k| < 10^{-6} s_k^T B_k s_k` 
- Additional safeguarding can be added using the ``damped`` option, which utilizes an alternative damped BFGS update when the curvature condition :math:`y_k^T s_k > 0`  is nearly violated.