# qml.SparseHamiltonian¶

class SparseHamiltonian(H)[source]

A Hamiltonian represented directly as a sparse matrix in coordinate list (COO) format.

Warning

SparseHamiltonian observables can only be used to return expectation values. Variances and samples are not supported.

Note

Note that the SparseHamiltonian observable should not be used with a subset of wires.

Details:

• Number of wires: All

• Number of parameters: 1

Parameters

H (coo_matrix) – a sparse matrix in SciPy coordinate list (COO) format with dimension $$(2^n, 2^n)$$, where $$n$$ is the number of wires

 eigvals Eigenvalues of an instantiated observable. grad_method hash returns an integer hash uniquely representing the operator id String for the ID of the operator. matrix Matrix representation of an instantiated operator in the computational basis. name String for the name of the operator. num_params num_wires par_domain parameters Current parameter values. return_type wires Wires of this operator.
eigvals

Eigenvalues of an instantiated observable.

The order of the eigenvalues needs to match the order of the computational basis vectors when the observable is diagonalized using diagonalizing_gates. This is a requirement for using qubit observables in quantum functions.

Example:

>>> U = qml.PauliZ(wires=1)
>>> U.eigvals
>>> array([1, -1])

Returns

eigvals representation

Return type

array

grad_method = None
hash

returns an integer hash uniquely representing the operator

Type

int

id

String for the ID of the operator.

matrix

Matrix representation of an instantiated operator in the computational basis.

Example:

>>> U = qml.RY(0.5, wires=1)
>>> U.matrix
>>> array([[ 0.96891242+0.j, -0.24740396+0.j],
[ 0.24740396+0.j,  0.96891242+0.j]])

Returns

matrix representation

Return type

array

name

String for the name of the operator.

num_params = 1
num_wires = 0
par_domain = None
parameters

Current parameter values.

return_type = None
wires

Wires of this operator.

Returns

wires

Return type

Wires

 compare(other) Compares with another Hamiltonian, Tensor, or Observable, to determine if they are equivalent. Returns the list of operations such that they diagonalize the observable in the computational basis. queue([context]) Append the operator to the Operator queue.
compare(other)

Compares with another Hamiltonian, Tensor, or Observable, to determine if they are equivalent.

Observables/Hamiltonians are equivalent if they represent the same operator (their matrix representations are equal), and they are defined on the same wires.

Warning

The compare method does not check if the matrix representation of a Hermitian observable is equal to an equivalent observable expressed in terms of Pauli matrices. To do so would require the matrix form of Hamiltonians and Tensors be calculated, which would drastically increase runtime.

Returns

True if equivalent.

Return type

(bool)

Examples

>>> ob1 = qml.PauliX(0) @ qml.Identity(1)
>>> ob2 = qml.Hamiltonian(, [qml.PauliX(0)])
>>> ob1.compare(ob2)
True
>>> ob1 = qml.PauliX(0)
>>> ob2 = qml.Hermitian(np.array([[0, 1], [1, 0]]), 0)
>>> ob1.compare(ob2)
False

diagonalizing_gates()[source]

Returns the list of operations such that they diagonalize the observable in the computational basis.

Returns

A list of gates that diagonalize the observable in the computational basis.

Return type

list(qml.Operation)

queue(context=<class 'pennylane.queuing.QueuingContext'>)

Append the operator to the Operator queue.