Source code for toqito.matrix_props.is_symmetric

"""Is matrix a symmetric matrix."""
import numpy as np

from toqito.matrix_props import is_square


[docs] def is_symmetric(mat: np.ndarray, rtol: float = 1e-05, atol: float = 1e-08) -> bool: r""" Determine if a matrix is symmetric [WikSym]_. The following 3x3 matrix is an example of a symmetric matrix: .. math:: \begin{pmatrix} 1 & 7 & 3 \\ 7 & 4 & -5 \\ 3 &-5 & 6 \end{pmatrix} Examples ========== Consider the following matrix .. math:: A = \begin{pmatrix} 1 & 7 & 3 \\ 7 & 4 & -5 \\ 3 & -5 & 6 \end{pmatrix} our function indicates that this is indeed a symmetric matrix. >>> from toqito.matrix_props import is_symmetric >>> import numpy as np >>> A = np.array([[1, 7, 3], [7, 4, -5], [3, -5, 6]]) >>> is_symmetric(A) True Alternatively, the following example matrix :math:`B` defined as .. math:: B = \begin{pmatrix} 1 & 2 \\ 4 & 5 \end{pmatrix} is not symmetric. >>> from toqito.matrix_props import is_symmetric >>> import numpy as np >>> B = np.array([[1, 2], [3, 4]]) >>> is_symmetric(B) False References ========== .. [WikSym] Wikipedia: Symmetric matrix https://en.wikipedia.org/wiki/Symmetric_matrix :param mat: The matrix to check. :param rtol: The relative tolerance parameter (default 1e-05). :param atol: The absolute tolerance parameter (default 1e-08). :return: Returns :code:`True` if the matrix is symmetric and :code:`False` otherwise. """ if not is_square(mat): return False return np.allclose(mat, mat.T, rtol=rtol, atol=atol)