A mixin that provide methods for objects that have a state vector.
cirq.sim.StateVectorMixin(
qubit_map: Optional[Dict[ops.Qid, int]] = None,
*args,
**kwargs
)
Methods
bloch_vector_of
View source
bloch_vector_of(
qubit: "cirq.Qid"
) -> np.ndarray
Returns the bloch vector of a qubit in the state.
Calculates the bloch vector of the given qubit
in the state given by self.state_vector(), given that
self.state_vector() follows the standard Kronecker convention of
numpy.kron.
Args |
qubit
|
qubit who's bloch vector we want to find.
|
Returns |
A length 3 numpy array representing the qubit's bloch vector.
|
Raises |
ValueError
|
if the size of the state represents more than 25 qubits.
|
IndexError
|
if index is out of range for the number of qubits
corresponding to the state.
|
density_matrix_of
View source
density_matrix_of(
qubits: List[cirq.ops.Qid
] = None
) -> np.ndarray
Returns the density matrix of the state.
Calculate the density matrix for the system on the list, qubits.
Any qubits not in the list that are present in self.state_vector() will
be traced out. If qubits is None the full density matrix for
self.state_vector() is returned, given self.state_vector() follows
standard Kronecker convention of numpy.kron.
For example:
self.state_vector() = np.array([1/np.sqrt(2), 1/np.sqrt(2)],
dtype=np.complex64)
qubits = None
gives us
$$
\rho = \begin{bmatrix}
0.5 & 0.5 \\
0.5 & 0.5
\end{bmatrix}
$$
Args |
qubits
|
list containing qubit IDs that you would like
to include in the density matrix (i.e.) qubits that WON'T
be traced out.
|
Returns |
A numpy array representing the density matrix.
|
Raises |
ValueError
|
if the size of the state represents more than 25 qubits.
|
IndexError
|
if the indices are out of range for the number of qubits
corresponding to the state.
|
dirac_notation
View source
dirac_notation(
decimals: int = 2
) -> str
Returns the state vector as a string in Dirac notation.
Args |
decimals
|
How many decimals to include in the pretty print.
|
Returns |
A pretty string consisting of a sum of computational basis kets
and non-zero floats of the specified accuracy.
|
state_vector
View source
@abc.abstractmethod
state_vector() -> np.ndarray
Return the state vector (wave function).
The vector is returned in the computational basis with these basis
states defined by the qubit_map
. In particular the value in the
qubit_map
is the index of the qubit, and these are translated into
binary vectors where the last qubit is the 1s bit of the index, the
second-to-last is the 2s bit of the index, and so forth (i.e. big
endian ordering).
Example: