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].