Implementazione con Qiskit
Nella lezione precedente abbiamo dato una prima occhiata alle classi Statevector e Operator di Qiskit, e le abbiamo usate per simulare operazioni e misurazioni su singoli qubit.
In questa sezione useremo queste classi per esplorare il comportamento di più qubit.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit
from qiskit import __version__
print(__version__)
2.1.1
Inizieremo importando le classi Statevector e Operator, oltre alla funzione radice quadrata di NumPy.
D'ora in avanti, in linea generale, ci occuperemo di tutti gli import necessari all'inizio di ogni lezione.
from qiskit.quantum_info import Statevector, Operator
from numpy import sqrt
Prodotti tensoriali​
La classe Statevector dispone di un metodo tensor, che restituisce il prodotto tensoriale di quello Statevector con un altro, fornito come argomento.
L'argomento viene interpretato come il fattore tensoriale a destra.
Ad esempio, qui sotto creiamo due vettori di stato che rappresentano e e usiamo il metodo tensor per creare un nuovo vettore,
Nota che qui stiamo usando il metodo from_label per definire gli stati e anziché definirli manualmente.
zero = Statevector.from_label("0")
one = Statevector.from_label("1")
psi = zero.tensor(one)
display(psi.draw("latex"))
Le altre etichette ammesse includono "+" e "-" per gli stati più e meno, nonché "r" e "l" (abbreviazioni di "right" e "left") per gli stati
Qui "+" , "-" oppure "right" e "left" derivano dal contesto dello spin in meccanica quantistica, in cui una componente dello spin può puntare a sinistra o a destra in un esperimento; non si riferiscono al qubit più a destra o più a sinistra in sistemi a più qubit. Ecco un esempio del prodotto tensoriale di e
plus = Statevector.from_label("+")
minus_i = Statevector.from_label("l")
phi = plus.tensor(minus_i)
display(phi.draw("latex"))