Site Tools


bell-state-qiskit

Table of Contents

Bell state (Qiskit)

Bell states implementation using Qiskit. All four Bell states are prepared from $\lvert 00\rangle$ using a Hadamard gate and a CNOT gate, with optional single-qubit corrections.

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
 
def bell(z_flip=False, x_flip=False):
    qc = QuantumCircuit(2)
    qc.h(0)
    qc.cx(0, 1)
    if z_flip:
        qc.z(0)  # relative phase flip
    if x_flip:
        qc.x(1)  # bit flip on second qubit
    return qc
 
phi_plus  = bell()              # (|00> + |11>) / sqrt(2)
phi_minus = bell(z_flip=True)   # (|00> - |11>) / sqrt(2)
psi_plus  = bell(x_flip=True)   # (|01> + |10>) / sqrt(2)
psi_minus = bell(z_flip=True, x_flip=True)  # (|01> - |10>) / sqrt(2)
 
for name, qc in [('Phi+', phi_plus), ('Phi-', phi_minus),
                 ('Psi+', psi_plus), ('Psi-', psi_minus)]:
    print(f"|{name}>: {Statevector(qc)}")
# |Phi+>: Statevector([0.70710678+0.j, 0.+0.j, 0.+0.j, 0.70710678+0.j], ...)
# |Phi->: Statevector([0.70710678+0.j, 0.+0.j, 0.+0.j, -0.70710678+0.j], ...)
# |Psi+>: Statevector([0.+0.j, 0.70710678+0.j, 0.70710678+0.j, 0.+0.j], ...)
# |Psi->: Statevector([0.+0.j, 0.70710678+0.j, -0.70710678+0.j, 0.+0.j], ...)
bell-state-qiskit.txt ยท Last modified: by 127.0.0.1