Statevector
class qiskit.quantum_info.Statevector(data, dims=None)
Basi: QuantumState, TolerancesMixin
Classe Statevector
Inizializza un oggetto statevector.
Parametri
- data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – Dati a partire dai quali è possibile costruire il vettore di stato. Può trattarsi di un vettore complesso, di un altro vettore di stato, di un
Operatorcon una sola colonna oppure di unQuantumCircuito di unInstruction. Se i dati rappresentano un circuito o un'istruzione, il vettore di stato viene costruito partendo dal presupposto che tutti i qubit siano inizializzati allo stato zero. - dims (int |tuple |list | None) – La dimensione del sottosistema dello stato (vedere informazioni aggiuntive).
Aumenti
QiskitError – se i dati inseriti non sono validi.
Ulteriori informazioni:
Il kwarg dims può essere Nessuno, un intero o un iterabile di interi.
Iterable- le dimensioni del sottosistema sono i valori dell'elenco e il numero totale di sottosistemi è dato dalla lunghezza dell'elenco.IntoppureNone– la lunghezza del vettore di input determina la dimensione totale dello stato. Se si tratta di una potenza di due, lo stato verrà inizializzato come uno stato a N qubit. Se non si tratta di una potenza di due, lo stato avrà un unico sottosistema d-dimensionale.
Attributi
atol
Valore predefinito: 1e-08
data
Dati di ritorno.
dim
Restituisce la dimensione totale dello stato.
num_qubits
Restituisce il numero di qubit se si tratta di uno stato a N qubit o altrimenti None.
rtol
Valore predefinito: 1e-05
settings
Impostazioni di ritorno.
Metodi
conjugate
copy
dims
dims(qargs=None)
Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.
draw
draw(output=None, **drawer_args)
Restituisce una visualizzazione del vettore di stato.
ripr: ASCII TextMatrix dello Stato __repr__.
testo : ASCII TextMatrix che può essere stampato nella console.
latex : Un oggetto IPython Latex da visualizzare in Jupyter Notebook.
latex_source : Sorgente ASCII grezzo e non compilato per generare l'array usando LaTeX.
qsphere : Matplotlib figura, rendering del vettore di stato usando plot_state_qsphere().
hinton : Matplotlib figura, rendering del vettore di stato usando plot_state_hinton().
bloch : Matplotlib figura, rendering del vettore di stato usando plot_bloch_multivector().
città : Matplotlib figura, rendering del vettore di stato usando plot\state_city().
paulivec : Matplotlib figura, rendering del vettore di stato usando plot_state_paulivec().
Parametri
- output (str) – Selezionare il metodo di output da utilizzare per disegnare lo stato. Le scelte valide sono repr, text, latex, latex_source, qsphere, hinton, bloch, city o paulivec. L'impostazione predefinita è repr. Il valore predefinito può essere modificato aggiungendo la riga
state_drawer = <default>a~/.qiskit/settings.confsotto[default]. - drawer_args - Argomenti da passare direttamente alla funzione o al costruttore di disegno pertinente ( TextMatrix( ), array_to_latex(), plot\state_qsphere(), plot\state_hinton() o plot_bloch\multivector()). Per la documentazione della funzione in questione, consultare la relativa funzione all'indirizzo qiskit.visualization.
Risultati
matplotlib.Figure o str o TextMatrix o IPython.display.Latex: Disegno del vettore di stato.
Aumenti
ValueError - quando viene selezionato un metodo di uscita non valido.
Esempi
Traccia uno degli stati di Bell
from numpy import sqrt
from qiskit.quantum_info import Statevector
sv=Statevector([1/sqrt(2), 0, 0, -1/sqrt(2)])
sv.draw(output='hinton')
equiv
equiv(other, rtol=None, atol=None)
Restituisce True se l'altro è equivalente come vettore di stato fino alla fase globale.
Se altro non è uno Statevector, ma può essere usato per inizializzare un oggetto Statevector, controllerà che Statevector(altro) sia equivalente allo Statevector corrente fino alla fase globale.
Parametri
- other (Statevector) – un oggetto da cui si può costruire un
Statevector. - rtol (float) – valore di tolleranza relativa per il confronto.
- atol (float) – valore di tolleranza assoluta per il confronto.
Risultati
Vero se i vettori di stato sono equivalenti fino alla fase globale.
Tipo di restituzione
evolve
evolve(other, qargs=None)
Evolvere uno stato quantico tramite l'operatore.
Parametri
- other (Operator |QuantumCircuit |circuit.Instruction) – L'operatore da cui partire per evolversi.
- qargs (list) – un elenco di posizioni del sottosistema Statevector su cui applicare l'operatore.
Risultati
lo stato quantico di uscita.
Tipo di restituzione
Aumenti
QiskitError – se la dimensione dell'operatore non corrisponde alle dimensioni specificate del sottosistema Statevector.
expand
expand(other)
Restituisce il prodotto tensoriale dello stato altro ⊗ self.
Parametri
other (Statevector) – un oggetto di stato quantistico.
Risultati
il prodotto tensoriale di altri stati ⊗ self.
Tipo di restituzione
Aumenti
QiskitError – se “altro” non è uno stato quantistico.
expectation_value
expectation_value(oper, qargs=None)
Calcolo del valore di aspettativa di un operatore.
Parametri
- oper (Operator) – un operatore di cui valutare l'expval.
- qargs (None or list) – sottosistemi su cui applicare l'operatore.
Risultati
il valore di aspettativa.
Tipo di restituzione
from_circuit
classmethod from_circuit(circuit, ignore_set_layout=False)
Crea uno Statevector da un circuito quantistico.
Parametri
- circuit (QuantumCircuit) – Un circuito quantistico
- ignore_set_layout (bool) – Quando è impostato su
True, se l'inputcircuitha un layout impostato, questo verrà ignorato. Il valore predefinito èFalse.
Risultati
Il vettore di stato ottenuto applicando il circuito allo stato di ingresso tutto zero.
Tipo di restituzione
Esempio
Creare un vettore di stato da un circuito transpilato:
from qiskit import QuantumCircuit, transpile
from qiskit.quantum_info import Statevector
from qiskit.providers.basic_provider import BasicSimulator
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.swap(1, 2)
backend = BasicSimulator()
transpiled1 = transpile(qc, backend, optimization_level=0)
transpiled2 = transpile(qc, backend, optimization_level=2)
# Get statevectors accounting for layout changes
sv1 = Statevector.from_circuit(transpiled1)
sv2 = Statevector.from_circuit(transpiled2)
# These will be equivalent up to global phase
print(sv1.equiv(sv2)) # Truefrom_instruction
classmethod from_instruction(instruction)
Restituisce il vettore di stato di uscita di un'istruzione.
Lo statevector viene inizializzato nello stato dello stesso numero di qubit dell'istruzione o del circuito di ingresso, evoluto dall'istruzione di ingresso, e lo statevector di uscita viene restituito.
Parametri
instruction (qiskit.circuit.Instruction orQuantumCircuit) – istruzione o circuito
Risultati
Il vettore di stato finale.
Tipo di restituzione
Aumenti
QiskitError – se l'istruzione contiene comandi non validi per la simulazione con vettore di stato.
from_int
static from_int(i, dims)
Restituisce un vettore di stato a base computazionale.
Parametri
- i (int) – l'elemento di stato base.
- dims (int ortuple orlist) – Le dimensioni del sottosistema del vettore di stato (vedere informazioni aggiuntive).
Risultati
Lo stato di base computazionale .
Tipo di restituzione
Ulteriori informazioni:
Il kwarg di dims può essere un intero o un iterabile di interi.
Iterable- le dimensioni del sottosistema sono i valori dell'elenco e il numero totale di sottosistemi è dato dalla lunghezza dell'elenco.Int- il numero intero specifica la dimensione totale dello stato. Se è una potenza di due, lo stato sarà inizializzato come uno stato a N-qubit. Se non è una potenza di due, lo stato avrà un singolo sottosistema d-dimensionale.
from_label
classmethod from_label(label)
Restituisce un prodotto tensoriale di autostati di Pauli X,Y,Z.
Etichetta | Statevector |
|---|---|
"0" | |
"1" | |
"+" | |
"-" | |
"r" | |
"l" |
Parametri
label (string) – un'etichetta ket per una stringa di stati propri (vedere la tabella per i valori consentiti).
Risultati
Il vettore di stato della base a N qubit.
Tipo di restituzione
Aumenti
QiskitError – se l'etichetta contiene caratteri non validi oppure se la lunghezza dell'etichetta è superiore a un numero di qubit specificato esplicitamente (num_qubits).
inner
inner(other)
Restituisce il prodotto interno di sé e dell'altro come .
Parametri
other (Statevector) – un oggetto di stato quantistico.
Risultati
il prodotto interno di sé e dell'altro, .
Tipo di restituzione
np.complex128
Aumenti
QiskitError – se “altro” non è uno stato quantistico o ha una dimensione diversa.
is_valid
is_valid(atol=None, rtol=None)
Restituisce True se un vettore di stati ha norma 1.
Parametri
Tipo di restituzione
measure
measure(qargs=None)
Misurare i sottosistemi e restituire i risultati e lo stato post-misura.
Si noti che questa funzione utilizza il generatore di numeri casuali interno a QuantumStates per il campionamento del risultato della misurazione. Il seme RNG può essere impostato con il metodo seed() metodo.
Parametri
qargs (list or None) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).
Risultati
la coppia (outcome, state) dove outcome è la coppia
e state è lo stato post-misurazione collassato per l'esito corrispondente.
Tipo di restituzione
probabilities
probabilities(qargs=None, decimals=None)
Restituisce il vettore della probabilità di misurazione del sottosistema.
Le probabilità di misurazione sono rispetto alla misurazione nella base di calcolo (diagonale).
Parametri
- qargs (None or list) – sottosistemi per i quali restituire le probabilità, se Nessuno restituisce tutte le probabilità per tutti i sottosistemi (predefinito: Nessuno).
- decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).
Risultati
L'array di vettori Numpy delle probabilità.
Tipo di restituzione
np.array
Esempi
Si consideri uno stato prodotto a 2 qubit .
from qiskit.quantum_info import Statevector
psi = Statevector.from_label('+0')
# Probabilities for measuring both qubits
probs = psi.probabilities()
print('probs: {}'.format(probs))
# Probabilities for measuring only qubit-0
probs_qubit_0 = psi.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))
# Probabilities for measuring only qubit-1
probs_qubit_1 = psi.probabilities([1])
print('Qubit-1 probs: {}'.format(probs_qubit_1))probs: [0.5 0. 0.5 0. ]
Qubit-0 probs: [1. 0.]
Qubit-1 probs: [0.5 0.5]Possiamo anche cambiare l'ordine dei qubit nell'elenco qargs per modificare la posizione del qubit nell'output delle probabilità
from qiskit.quantum_info import Statevector
psi = Statevector.from_label('+0')
# Probabilities for measuring both qubits
probs = psi.probabilities([0, 1])
print('probs: {}'.format(probs))
# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = psi.probabilities([1, 0])
print('Swapped probs: {}'.format(probs_swapped))probs: [0.5 0. 0.5 0. ]
Swapped probs: [0.5 0.5 0. 0. ]probabilities_dict
probabilities_dict(qargs=None, decimals=None)
Restituisce il dizionario delle probabilità di misurazione del sottosistema.
Le probabilità di misurazione sono rispetto alla misurazione nella base di calcolo (diagonale).
Questa rappresentazione del dizionario utilizza una notazione simile a Ket, in cui le chiavi del dizionario sono stringhe di qudit per i vettori base del sottosistema. Se un sottosistema ha una dimensione superiore a 10, si inseriscono dei delimitatori di virgola tra i numeri interi per distinguere i sottosistemi.
Parametri
- qargs (None or list) – sottosistemi per i quali restituire le probabilità, se Nessuno restituisce tutte le probabilità per tutti i sottosistemi (predefinito: Nessuno).
- decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).
Risultati
Le probabilità di misura nella forma dict (ket).
Tipo di restituzione
purity
reset
reset(qargs=None)
Ripristino dello stato o dei sottosistemi allo stato 0.
Parametri
qargs (list or None) – se Nessuno, tutti i sottosistemi saranno ripristinati allo stato 0 (predefinito: Nessuno).
Risultati
lo stato di reset.
Tipo di restituzione
Ulteriori informazioni:
Se tutti i sottosistemi vengono resettati, questa operazione ripristinerà lo stato di base su tutti i sottosistemi. Se vengono inizializzati solo alcuni sottosistemi, questa funzione effettuerà una misurazione su tali sottosistemi e li farà evolvere in modo che gli stati collassati post-misurazione vengano ruotati verso lo stato zero. Il seme del generatore di numeri casuali (RNG) per questo campionamento può essere impostato utilizzando il seed() metodo.
reverse_qargs
reverse_qargs()
Restituisce un vettore di stati con l'ordinamento dei sottosistemi invertito.
Per uno stato prodotto tensoriale questo equivale a invertire l'ordine dei sottosistemi prodotto tensoriale. Per un vettore di stati il vettore di stati restituito sarà .
Risultati
il vettore di Stato con l'ordine dei sottosistemi invertito.
Tipo di restituzione
sample_counts
sample_counts(shots, qargs=None)
Campionare un insieme di risultati di misura dei qubit nella base computazionale.
Parametri
- shots (int) – numero di campioni da generare.
- qargs (None or list) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).
Risultati
dizionario dei conteggi campionati.
Tipo di restituzione
Ulteriori informazioni:
Questa funzione campiona i risultati della misurazione utilizzando la misura
probabilities()per lo stato corrente e i qarg. Non implementa effettivamente la misura, quindi lo stato corrente non viene modificato.Il seme del generatore di numeri casuali utilizzato per il campionamento può essere impostato su un valore fisso utilizzando il metodo state
seed().
sample_memory
sample_memory(shots, qargs=None)
Campione di un elenco di risultati di misura dei qubit nella base computazionale.
Parametri
- shots (int) – numero di campioni da generare.
- qargs (None or list) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).
Risultati
elenco dei conteggi campionati nell'ordine in cui sono stati campionati.
Tipo di restituzione
np.array
Ulteriori informazioni:
Questa funzione campiona i risultati della misurazione utilizzando la misura
probabilities()per lo stato corrente e i qarg. Non implementa effettivamente la misura, quindi lo stato corrente non viene modificato.Il seme del generatore di numeri casuali utilizzato per il campionamento può essere impostato su un valore fisso utilizzando il metodo state
seed().
seed
tensor
tensor(other)
Restituisce il prodotto tensoriale dello stato self ⊗ other.
Parametri
other (Statevector) – un oggetto di stato quantistico.
Risultati
l'operatore prodotto tensoriale self ⊗ other.
Tipo di restituzione
Aumenti
QiskitError – se “altro” non è uno stato quantistico.
to_dict
to_dict(decimals=None)
Converte il vettore di stato in forma di dizionario.
Questa rappresentazione del dizionario utilizza una notazione simile a Ket, in cui le chiavi del dizionario sono stringhe di qudit per i vettori base del sottosistema. Se un sottosistema ha una dimensione superiore a 10, si inseriscono dei delimitatori di virgola tra i numeri interi per distinguere i sottosistemi.
Parametri
decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).
Risultati
la forma del dizionario del vettore Stato.
Tipo di restituzione
Esempio
La forma ket di un vettore di stato a 2 equbit
from qiskit.quantum_info import Statevector
psi = Statevector.from_label('-0')
print(psi.to_dict()){'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}Per i sottosistemi non-qubit l'intervallo di numeri interi può andare da 0 a 9. Ad esempio, in un sistema qutrit
import numpy as np
from qiskit.quantum_info import Statevector
vec = np.zeros(9)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(3, 3))
print(psi.to_dict()){'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}Per le grandi dimensioni del sottosistema sono necessari dei delimitatori. L'esempio seguente riguarda un sistema a 20 dimensioni composto da un qubit e da un qudit a 10 dimensioni.
import numpy as np
from qiskit.quantum_info import Statevector
vec = np.zeros(2 * 10)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(2, 10))
print(psi.to_dict()){'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}to_operator
trace
trace()
Restituisce la traccia dello stato quantico come matrice di densità.
Tipo di restituzione
float64