# How to find the nearest/a near positive definite from a given matrix?

I'm given a matrix. How do I find the nearest (or a near) positive definite from it?

The matrix can have complex eigenvalues, not be symmetric, etc. However, all its entries are real valued. The resulting matrix from the algorithm must be positive definite, with all its entries real valued only. Symmetry is a plus, but not necessary. I have no preference toward the metric used. I prefer a pragmatic(relatively easy to programme) approach. It doesn't have to be optimal.

• The most common definition of "positive definite" includes symmetric. Are you specifically looking for a symmetric matrix, or would a non-symmetric matrix with eigenvalues that are real and positive be acceptable? What about a matrix that has complex eigenvalues with positive real parts? Dec 3, 2018 at 3:39
• What definition of "nearest" are you interested in? With respect to the spectral norm? Frobenius norm? Some other measure? Dec 3, 2018 at 3:59
• @BrianBorchers I've edited the question. I have no preference for the norm, as long as the requirements explained above are satisfied. Dec 3, 2018 at 9:45
• Is this the sort of thing you're looking for? stat.ethz.ch/R-manual/R-devel/library/Matrix/html/nearPD.html (Incidentally, nearPD replaces $X$ with $\frac12(X+X^\top)$ for non-symmetric $X$.) Dec 3, 2018 at 13:30
• @Anoldmaninthesea. I think it's based on this algorithm: maths.manchester.ac.uk/~higham/narep/narep369.pdf, and it looks pretty simple. Dec 3, 2018 at 14:31

Quick sketch of an answer for the Frobenius norm:

1. Replace $$X$$ with the closest symmetric matrix, $$Y=\frac12 (X+X^\top)$$.
2. Take an eigendecomposition $$Y=QDQ^\top$$, and form the diagonal matrix $$D_+=\max(D,0)$$ (elementwise maximum).
3. The closest symmetric positive semidefinite matrix to $$X$$ is $$Z=QD_+Q^\top$$.
4. The closest positive definite matrix to $$X$$ does not exist; any matrix of the form $$Z+\varepsilon I$$ is positive definite for $$\varepsilon>0$$. There is no minimum, just an infimum. Positive definite matrices are not a closed set.

To prove (1) and (3), you can use the fact that the decomposition of a matrix into a symmetric and antisymmetric part is orthogonal. In particular, this implies that we can minimize in two succesive steps like we did.

To prove (2), use the Wielandt-Hoffmann theorem.

• For (3), in what sense is $Z$ closest to $X$? Is it $\min \|X-Z\|_2$? @federico-poloni
– KRL
May 9, 2020 at 22:14
• @KRL This answer was for the Frobenius norm, $\|X-Z\|_F = \left(\sum_{i,j} |X-Z|_{ij}^2\right)^{1/2}$, as stated in the first row. The proofs were stated very briefly here, but one key idea is that this norm is induced by the scalar product $\left\langle A,B\right\rangle = \operatorname{Tr}(A^TB)$, so this is a scalar product space and one can speak of "orthogonal decomposition". May 10, 2020 at 6:44

If you're ok with positive semi-definite matrices, then you can refer to this paper, which I think is what Frederico's answer also explains:

Higham NJ. Computing a nearest symmetric positive semidefinite matrix. Linear Algebra and its Applications. 1988 May;103(C):103-118.

A python implementation can be found in this answer, which also provides a link to a maltab implementation.

• Welcome to Computational Science! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference. Feb 9, 2021 at 17:35