cirq.diagonalize_real_symmetric_and_sorted_diagonal_matrices

cirq.diagonalize_real_symmetric_and_sorted_diagonal_matrices(symmetric_matrix: numpy.ndarray, diagonal_matrix: numpy.ndarray, *, rtol: float = 1e-05, atol: float = 1e-08, check_preconditions: bool = True) → numpy.ndarray[source]

Returns an orthogonal matrix that diagonalizes both given matrices.

The given matrices must commute.
Guarantees that the sorted diagonal matrix is not permuted by the
diagonalization (except for nearly-equal values).
Parameters:
  • symmetric_matrix – A real symmetric matrix.
  • diagonal_matrix – A real diagonal matrix with entries along the diagonal sorted into descending order.
  • rtol – Relative numeric error threshold.
  • atol – Absolute numeric error threshold.
  • check_preconditions – If set, verifies that the input matrices commute and are respectively symmetric and diagonal descending.
Returns:

An orthogonal matrix P such that P.T @ symmetric_matrix @ P is diagonal and P.T @ diagonal_matrix @ P = diagonal_matrix (up to tolerance).

Raises:

ValueError – Matrices don’t meet preconditions (e.g. not symmetric).