def check_posdef(A, atol = 1.0e-9, rtol = 1.0e-9): """ Checks positive definiteness of a matrix via Cholesky. Args: :A: | ndarray :atol: | float, optional | The absolute tolerance parameter (see Notes of numpy.allclose()) :rtol: | float, optional | The relative tolerance parameter (see Notes of numpy.allclose()) Returns: :returns: | Bool | True: the array is positive-definite within the given tolerance """ try: R = np.linalg.cholesky(A) if np.allclose(A, np.dot(R,R.T), atol = atol,rtol = rtol): return True else: return False except np.linalg.LinAlgError: return False
def check_symmetric(A, atol = 1.0e-9, rtol = 1.0e-9): """ Check if A is symmetric. Args: :A: | ndarray :atol: | float, optional | The absolute tolerance parameter (see Notes of numpy.allclose()) :rtol: | float, optional | The relative tolerance parameter (see Notes of numpy.allclose()) Returns: :returns: | Bool | True: the array is symmetric within the given tolerance """ return np.allclose(A, A.T, atol = atol, rtol = rtol)