Convex optimization¶
LogBarrier¶
Uses a careful calculation of the log of the determinant in order to return the log barrier of a Hermitian positive-definite matrix A, \(-\log(\mbox{det}(A))\).
- typename Base<F>::type LogBarrier(UpperOrLower uplo, const Matrix<F>& A)¶
- typename Base<F>::type LogBarrier(UpperOrLower uplo, const DistMatrix<F>& A)¶
- typename Base<F>::type LogBarrier(UpperOrLower uplo, Matrix<F>& A, bool canOverwrite=false )¶
- typename Base<F>::type LogBarrier(UpperOrLower uplo, DistMatrix<F>& A, bool canOverwrite=false )¶
LogDetDivergence¶
The log-det divergence of a pair of \(n \times n\) Hermitian positive-definite matrices \(A\) and \(B\) is
which can be greatly simplified using the Cholesky factors of \(A\) and \(B\). In particular, if we set \(Z = L_B^{-1} L_A\), where \(A=L_A L_A^H\) and \(B=L_B L_B^H\) are Cholesky factorizations, then
- typename Base<F>::type LogDetDivergence(UpperOrLower uplo, const Matrix<F>& A, const Matrix<F>& B)¶
- typename Base<F>::type LogDetDivergence(UpperOrLower uplo, const DistMatrix<F>& A, const DistMatrix<F>& B)¶
Singular-value soft-thresholding¶
Overwrites \(A\) with \(U S_{\tau}(\Sigma) V^H\), where \(U \Sigma V^H\) is the singular-value decomposition of \(A\) upon input and \(S_{\tau}\) performs soft-thresholding with parameter \(\tau\). The return value is the rank of the soft-thresholded matrix.
- int SingularValueSoftThreshold(Matrix<F>& A, typename Base<F>::type tau)¶
- int SingularValueSoftThreshold(DistMatrix<F>& A, typename Base<F>::type tau)¶
Uses a thresholded cross-product SVD.
- int SingularValueSoftThreshold(Matrix<F>& A, typename Base<F>::type tau, int numSteps)¶
- int SingularValueSoftThreshold(DistMatrix<F>& A, typename Base<F>::type tau, int numSteps)¶
Same as above, but run the thresholded cross-product SVD on the \(R\) from the partial \(QR\) decomposition produced from numSteps iterations of (Businger/Golub) column-pivoted QR.
Soft-thresholding¶
Overwrites each entry of \(A\) with its soft-thresholded value.
- void SoftThreshold(Matrix<F>& A, typename Base<F>::type tau)¶
- void SoftThreshold(DistMatrix<F>& A, typename Base<F>::type tau)¶