Returns an orthogonal matrix that diagonalizes both given matrices.
cirq.diagonalize_real_symmetric_and_sorted_diagonal_matrices(
symmetric_matrix: np.ndarray,
diagonal_matrix: np.ndarray,
*,
rtol: float = 1e-05,
atol: float = 1e-08,
check_preconditions: bool = True
) -> np.ndarray
The given matrices must commute.
Guarantees that the sorted diagonal matrix is not permuted by the
diagonalization (except for nearly-equal values).
Args |
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).
|