DensityMatrix
class qiskit.quantum_info.DensityMatrix(data, dims=None)
Basi: QuantumState, TolerancesMixin
DensityMatrix classe
Inizializza un oggetto matrice di densità.
Parametri
- data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – Un vettore di stato, un’istruzione quantistica o un oggetto dotato di un
to_operatormetodo oto_matrixda cui sia possibile ricavare la matrice di densità. Se si considera un vettore, la matrice di densità è definita come il proiettore di tale vettore. Nel caso di un'istruzione quantistica, la matrice di densità viene costruita ipotizzando che tutti i qubit siano inizializzati nello 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.IntoNone- la dimensione principale della matrice di input specifica la dimensione totale della matrice di densità. 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.
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 rappresentazione grafica della matrice di densità.
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 della matrice di densità usando plot_state_qsphere().
hinton : Matplotlib figura, rendering della matrice di densità usando plot_state_hinton().
bloch : Matplotlib figura, rendering della matrice di densità usando plot_bloch_multivector().
Parametri
- output (str) – Selezionare il metodo di uscita da utilizzare per disegnare lo stato. Le scelte valide sono repr, text, latex, latex_source, qsphere, hinton o bloch. 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 oppure str oppure TextMatrix oppure IPython.display.Latex: Rappresentazione grafica della matrice di densità.
Aumenti
ValueError - quando viene selezionato un metodo di uscita non valido.
evolve
evolve(other, qargs=None)
Evolvere uno stato quantistico mediante un operatore.
Parametri
- other (Operator | QuantumChannel |circuit.instruction.Instruction |QuantumCircuit) – L'operatore da cui partire per evolversi.
- qargs (list[int] | None) – un elenco di posizioni del sottosistema QuantumState su cui applicare l'operatore.
Risultati
La matrice di densità di uscita.
Aumenti
QiskitError – se la dimensione dell'operatore non corrisponde alle dimensioni specificate del sottosistema QuantumState.
Tipo di restituzione
expand
expand(other)
Restituisce il prodotto tensoriale dello stato altro ⊗ self.
Parametri
other (DensityMatrix) – 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 per valutare expval.
- qargs (None or list) – sottosistemi su cui applicare l'operatore.
Risultati
il valore di aspettativa.
Tipo di restituzione
from_instruction
classmethod from_instruction(instruction)
Restituisce la matrice di densità 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 (circuit.instruction.Instruction |QuantumCircuit) – istruzione o circuito
Risultati
La matrice di densità finale.
Aumenti
QiskitError – se l'istruzione contiene comandi non validi per la simulazione della matrice di densità.
Tipo di restituzione
from_int
static from_int(i, dims)
Restituisce una matrice di densità degli stati della 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
La matrice di densità degli stati base di 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).
is_valid
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
partial_transpose
partial_transpose(qargs)
Restituisce la matrice di densità parzialmente trasposta.
Parametri
qargs (list) – I sottosistemi da trasporre.
Risultati
La matrice di densità parzialmente trasposta.
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 con , .
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities()
print('probs: {}'.format(probs))
# Probabilities for measuring only qubit-0
probs_qubit_0 = rho.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))
# Probabilities for measuring only qubit-1
probs_qubit_1 = rho.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 DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities([0, 1])
print('probs: {}'.format(probs))
# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = rho.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)
Ripristina lo stato o i 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 ripristinati solo alcuni sottosistemi, questa funzione eseguirà l'evoluzione a partire dal ripristino SuperOp dei sottosistemi in questione.
reverse_qargs
reverse_qargs()
Restituisce un DensityMatrix con l'ordine dei sottosistemi invertito.
Per uno stato prodotto tensoriale questo equivale a invertire l'ordine dei sottosistemi del prodotto tensoriale. Per una matrice di densità lo stato restituito sarà .
Risultati
lo stato con 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)
Campionare 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 (DensityMatrix) – 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)
Convertire la matrice di densità 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 di DensityMatrix.
Tipo di restituzione
Esempi
La forma ket di una matrice di densità a 2 equbit
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('-0')
print(rho.to_dict()){
'00|00': (0.4999999999999999+0j),
'10|00': (-0.4999999999999999-0j),
'00|10': (-0.4999999999999999+0j),
'10|10': (0.4999999999999999+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 DensityMatrix
mat = np.zeros((9, 9))
mat[0, 0] = 0.25
mat[3, 3] = 0.25
mat[6, 6] = 0.25
mat[-1, -1] = 0.25
rho = DensityMatrix(mat, dims=(3, 3))
print(rho.to_dict()){'00|00': (0.25+0j), '10|10': (0.25+0j), '20|20': (0.25+0j), '22|22': (0.25+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 DensityMatrix
mat = np.zeros((2 * 10, 2 * 10))
mat[0, 0] = 0.5
mat[-1, -1] = 0.5
rho = DensityMatrix(mat, dims=(2, 10))
print(rho.to_dict()){'00|00': (0.5+0j), '91|91': (0.5+0j)}to_operator
to_statevector
to_statevector(atol=None, rtol=None)
Restituisce un vettore di stati da una matrice di densità pura.
Parametri
- atol (float) – Tolleranza assoluta per il controllo della validità dell'operazione.
- rtol (float) – Tolleranza relativa per il controllo della validità dell'operazione.
Risultati
Il vettore di stato corrispondente alla matrice di densità pura.
Corrisponde all'autovettore dell'unico autovalore non nullo.
Tipo di restituzione
Aumenti
QiskitError – se lo stato non è puro.