lbfgsb.bfgsmats.form_invMfactors#

lbfgsb.bfgsmats.form_invMfactors(theta, STS, L, D) Tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]][source]#

Return upper triangle of the cholesky factorization of the inverse of M_k.

This is defined in eq. (3.4) [1].

Although Mk is not positive definite, but its inverse reads

\[\begin{split}\mathbf{M}^{-1} = \begin{bmatrix} -\mathbf{D} & \mathbf{L}^{\mathrm{T}} \\ \mathbf{L} & \theta \mathbf{S}^{\mathrm{T}}\mathbf{S} \end{bmatrix}\end{split}\]

as given in (3.4) of [1].

Hence its inverse can be factorized almost symmetrically by using Cholesky factorizations of the submatrices. Now, the inverse of Mk, the middle matrix in B reads:

[ D^(1/2) O ] [ -D^(1/2) D^(-1/2)*L’ ] [ -L*D^(-1/2) J ] [ 0 J’ ]

With J @ J’ = T = theta*Ss + L*D^(-1)*L’; T being definite positive, J is obtained by Cholesky factorization of T.

REF: see algo 3.2 in Byrd et al. [1994].