cirq.diagonalize_real_symmetric_and_sorted_diagonal_matrices¶
-
cirq.diagonalize_real_symmetric_and_sorted_diagonal_matrices(symmetric_matrix: numpy.ndarray, diagonal_matrix: numpy.ndarray, tolerance: cirq.linalg.tolerance.Tolerance = Tolerance(rtol=1e-05, atol=1e-08, equal_nan=False)) → 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 thediagonalization (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.
- tolerance – Numeric error thresholds.
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).ArithmeticError– Failed to meet specified tolerance.