Function to test if a matrix
is symmetric positive (semi)definite or
not.
isSymmetricPD(M)
isSymmetricPSD(M, tol = 1e-04)
A square symmetric matrix.
A numeric giving the tolerance for determining positive semi-definiteness.
Returns a logical
value. Returns TRUE
if the M
is symmetric positive (semi)definite and FALSE
if not. If M
is not even symmetric, the function throws an error.
Tests positive definiteness by Cholesky decomposition. Tests positive semi-definiteness by checking if all eigenvalues are larger than \(-\epsilon|\lambda_1|\) where \(\epsilon\) is the tolerance and \(\lambda_1\) is the largest eigenvalue.
While isSymmetricPSD
returns TRUE
if the matrix is
symmetric positive definite and FASLE
if not. In practice, it tests
if all eigenvalues are larger than -tol*|l| where l is the largest
eigenvalue. More
here.